buffer: gather statistics

This commit is contained in:
Martin Preuss
2025-08-25 10:23:47 +02:00
parent 465e750e3c
commit 127525e3ec
2 changed files with 40 additions and 0 deletions

View File

@@ -27,6 +27,11 @@
NET_Buffer_Init:
ldi xl, LOW(netBuffers)
ldi xh, HIGH(netBuffers)
ldi r16, NET_BUFFERS_NUM
sts netBuffersFree, r16
clr r16
sts netBuffersMaxUsed, r16
sts netBuffersUsed, r16
m_fixedbuf_init NET_BUFFERS_SIZE, NET_BUFFERS_NUM
ret
; @end
@@ -45,13 +50,39 @@ NET_Buffer_Alloc:
push r15
in r15, SREG
cli
lds r17, netBuffersFree
tst r17
breq NET_Buffer_Alloc_error
rcall NET_Buffer_Alloc_noIrq
brcc NET_Buffer_Alloc_error
lds r17, netBuffersFree
dec r17
sts netBuffersFree, r17
lds r17, netBuffersUsed
inc r17
sts netBuffersUsed, r17
push r16
lds r16, netBuffersMaxUsed
cp r16, r17
brcc NET_Buffer_Alloc_countersSet
sts netBuffersMaxUsed, r17
NET_Buffer_Alloc_countersSet:
#ifdef MODULES_LED_SIGNAL
ldi r16, T03_FLAGS_ALLOC
rcall LedSignal_ClrFlag ; (R17)
#endif
pop r16
out SREG, r15
pop r15
sec
ret
NET_Buffer_Alloc_error:
#ifdef MODULES_LED_SIGNAL
ldi r16, T03_FLAGS_ALLOC
rcall LedSignal_SetFlag ; (R17)
#endif
out SREG, r15
pop r15
clc
@@ -96,6 +127,12 @@ NET_Buffer_ReleaseByAddr:
rjmp NET_Buffer_ReleaseByAddr_done
NET_Buffer_ReleaseByAddr_release:
m_fixedbuf_release
lds r16, netBuffersFree
inc r16
sts netBuffersFree, r16
lds r16, netBuffersUsed
dec r16
sts netBuffersUsed, r16
NET_Buffer_ReleaseByAddr_done:
out SREG, r15
pop r15

View File

@@ -12,6 +12,9 @@
networkDataBegin:
; buffers for incoming and outgoing messages
netBuffersUsed: .byte 1
netBuffersMaxUsed: .byte 1
netBuffersFree: .byte 1
netBuffers: .byte NET_BUFFERS_NUM*NET_BUFFERS_SIZE
netRingBufferMsgNumIn: .byte RINGBUFFERY_SIZE+NET_MSGNUMINBUF_SIZE