buffer: gather statistics
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user