buffer: gather statistics
This commit is contained in:
@@ -27,6 +27,11 @@
|
|||||||
NET_Buffer_Init:
|
NET_Buffer_Init:
|
||||||
ldi xl, LOW(netBuffers)
|
ldi xl, LOW(netBuffers)
|
||||||
ldi xh, HIGH(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
|
m_fixedbuf_init NET_BUFFERS_SIZE, NET_BUFFERS_NUM
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
@@ -45,13 +50,39 @@ NET_Buffer_Alloc:
|
|||||||
push r15
|
push r15
|
||||||
in r15, SREG
|
in r15, SREG
|
||||||
cli
|
cli
|
||||||
|
|
||||||
|
lds r17, netBuffersFree
|
||||||
|
tst r17
|
||||||
|
breq NET_Buffer_Alloc_error
|
||||||
|
|
||||||
rcall NET_Buffer_Alloc_noIrq
|
rcall NET_Buffer_Alloc_noIrq
|
||||||
brcc NET_Buffer_Alloc_error
|
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
|
out SREG, r15
|
||||||
pop r15
|
pop r15
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
NET_Buffer_Alloc_error:
|
NET_Buffer_Alloc_error:
|
||||||
|
#ifdef MODULES_LED_SIGNAL
|
||||||
|
ldi r16, T03_FLAGS_ALLOC
|
||||||
|
rcall LedSignal_SetFlag ; (R17)
|
||||||
|
#endif
|
||||||
out SREG, r15
|
out SREG, r15
|
||||||
pop r15
|
pop r15
|
||||||
clc
|
clc
|
||||||
@@ -96,6 +127,12 @@ NET_Buffer_ReleaseByAddr:
|
|||||||
rjmp NET_Buffer_ReleaseByAddr_done
|
rjmp NET_Buffer_ReleaseByAddr_done
|
||||||
NET_Buffer_ReleaseByAddr_release:
|
NET_Buffer_ReleaseByAddr_release:
|
||||||
m_fixedbuf_release
|
m_fixedbuf_release
|
||||||
|
lds r16, netBuffersFree
|
||||||
|
inc r16
|
||||||
|
sts netBuffersFree, r16
|
||||||
|
lds r16, netBuffersUsed
|
||||||
|
dec r16
|
||||||
|
sts netBuffersUsed, r16
|
||||||
NET_Buffer_ReleaseByAddr_done:
|
NET_Buffer_ReleaseByAddr_done:
|
||||||
out SREG, r15
|
out SREG, r15
|
||||||
pop r15
|
pop r15
|
||||||
|
|||||||
@@ -12,6 +12,9 @@
|
|||||||
|
|
||||||
networkDataBegin:
|
networkDataBegin:
|
||||||
; buffers for incoming and outgoing messages
|
; buffers for incoming and outgoing messages
|
||||||
|
netBuffersUsed: .byte 1
|
||||||
|
netBuffersMaxUsed: .byte 1
|
||||||
|
netBuffersFree: .byte 1
|
||||||
netBuffers: .byte NET_BUFFERS_NUM*NET_BUFFERS_SIZE
|
netBuffers: .byte NET_BUFFERS_NUM*NET_BUFFERS_SIZE
|
||||||
netRingBufferMsgNumIn: .byte RINGBUFFERY_SIZE+NET_MSGNUMINBUF_SIZE
|
netRingBufferMsgNumIn: .byte RINGBUFFERY_SIZE+NET_MSGNUMINBUF_SIZE
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user