More details.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14245 27425a3e-05d8-49a3-a47f-9c15f0e5edd8
This commit is contained in:
Giovanni Di Sirio 2021-04-20 18:45:49 +00:00
parent 368fa59d4e
commit 3c77181e9c
1 changed files with 37 additions and 29 deletions

View File

@ -190,8 +190,6 @@
* *
* @startuml {rt_arch.png} "RT Synchronization" * @startuml {rt_arch.png} "RT Synchronization"
* package OS { * package OS {
* class ch_system_t
* class ready_list_t
* class thread_t { * class thread_t {
* - queue: ch_queue_t * - queue: ch_queue_t
* - wtmtxp: mutex_t * * - wtmtxp: mutex_t *
@ -201,7 +199,7 @@
* class ch_list_t * class ch_list_t
* class ch_queue_t * class ch_queue_t
* } * }
* package Synchronization { * package "Low Level Synchronization" {
* *
* class thread_reference_t { * class thread_reference_t {
* - ref : thread_t * * - ref : thread_t *
@ -210,13 +208,23 @@
* + chThdResumeI() * + chThdResumeI()
* + chThdResumeS() * + chThdResumeS()
* } * }
* class thread_queue_t { * class threads_queue_t {
* - queue: ch_queue_t * - queue: ch_queue_t
* + chThdQueueObjectInit() * + chThdQueueObjectInit()
* + chThdEnqueueTimeoutS() * + chThdEnqueueTimeoutS()
* + chThdDequeueNextI() * + chThdDequeueNextI()
* + chThdDequeueAllI() * + chThdDequeueAllI()
* } * }
* }
* package Messages {
* class messages <<(S,#FF7700) Singleton>> {
* + {static} chMsgWait()
* + {static} chMsgGet()
* + {static} chMsgRelease()
* + {static} chMsgSend()
* }
* }
* package Semaphores {
* class semaphore_t { * class semaphore_t {
* - queue: ch_queue_t * - queue: ch_queue_t
* - cnt : cnt_t * - cnt : cnt_t
@ -226,6 +234,8 @@
* + chSemSignal() * + chSemSignal()
* + chSemReset() * + chSemReset()
* } * }
* }
* package Monitors {
* class mutex_t { * class mutex_t {
* - queue: ch_queue_t * - queue: ch_queue_t
* - owner : thread_t * * - owner : thread_t *
@ -245,50 +255,48 @@
* + chCondWait() * + chCondWait()
* + chCondWaitTimeout() * + chCondWaitTimeout()
* } * }
* class events { * mutex_t "1" .l. "0..*" condition_variable_t : indirect\ncollaboration
* + chEvtObjectInit() * mutex_t o-- "0..*" thread_t : waiting\nthreads
* + chEvtRegister() * mutex_t o-- "0..1" thread_t : owner\nthread
* + chEvtBroadcastFlags() * mutex_t o-- "0..1" mutex_t : next\nowned mutex
* condition_variable_t o-- "0..*" thread_t : waiting\nthreads
* }
*
* messages -u- thread_t : collaboration
*
* package Events {
* class events <<(S,#FF7700) Singleton>> {
* + {static} chEvtSignal() * + {static} chEvtSignal()
* + {static} chEvtWaitOne() * + {static} chEvtWaitOne()
* + {static} chEvtWaitAny() * + {static} chEvtWaitAny()
* + {static} chEvtWaitAll() * + {static} chEvtWaitAll()
* + {static} chEvtDispatch() * + {static} chEvtDispatch()
* } * }
* } * class event_source_t {
* package Messages { * + chEvtObjectInit()
* class messages <<(S,#FF7700) Singleton>> { * + chEvtRegister()
* + {static} chMsgWait() * + chEvtBroadcastFlags()
* + {static} chMsgGet()
* + {static} chMsgRelease()
* + {static} chMsgSend()
* } * }
* class event_listener_t {
* }
* event_source_t o-- event_listener_t : registered\nlisteners
* event_listener_t o-- "1" thread_t : listening\nthread
* } * }
* *
* Synchronization ..> OS : use * events -u- thread_t : collaboration
* *
* thread_reference_t o-- "0..1" thread_t : referred\nthread * thread_reference_t o-- "0..1" thread_t : referred\nthread
* *
* thread_queue_t o-- "0..*" thread_t : queued\nthreads * threads_queue_t o-- "0..*" thread_t : queued\nthreads
* *
* ch_queue_t "1" --* thread_queue_t * ch_queue_t "1" --* threads_queue_t
* ch_queue_t "1" --* semaphore_t * ch_queue_t "1" --* semaphore_t
* ch_queue_t "1" --* mutex_t * ch_queue_t "1" --* mutex_t
* ch_queue_t "1" --* condition_variable_t * ch_queue_t "1" --* condition_variable_t
* *
* thread_t <.. messages : use * thread_t o-- "0..*" mutex_t: owned\nmutexes
*
* thread_t o-- "0..1" mutex_t: owned\nmutexes
* *
* semaphore_t o-- "0..*" thread_t : waiting\nthreads * semaphore_t o-- "0..*" thread_t : waiting\nthreads
* *
* condition_variable_t o-- "0..*" thread_t : waiting\nthreads
*
* mutex_t "1" -l- "0..*" condition_variable_t : collaboration
* mutex_t o-- "0..*" thread_t : waiting\nthreads
* mutex_t o-- "0..1" thread_t : waiting\nthreads
* mutex_t o-- "0..1" mutex_t : next\nowned mutex
* mutex_t "0..*" --o thread_t : owned\nmutexes
*
* @enduml * @enduml
*/ */