From 7bcee9bcb14f337efb6fcacecc1501d01624c0a3 Mon Sep 17 00:00:00 2001 From: shaojinchun Date: Wed, 24 Apr 2019 09:14:00 +0800 Subject: [PATCH] =?UTF-8?q?semaphore=E7=BB=93=E6=9E=84=E4=B8=ADvalue?= =?UTF-8?q?=E4=BB=8D=E6=94=B9=E4=B8=BAuint16=5Ft,=E5=8A=A0=E5=85=A5?= =?UTF-8?q?=E5=AF=B9=E5=85=B6=E8=AE=BE=E7=BD=AE=E8=8C=83=E5=9B=B4=E7=9A=84?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=EF=BC=8C=E5=8A=A0=E5=85=A5=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/rtdef.h | 3 ++- src/ipc.c | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/include/rtdef.h b/include/rtdef.h index 8c7e6e8c4..743b91d95 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -655,7 +655,8 @@ struct rt_semaphore { struct rt_ipc_object parent; /**< inherit from ipc_object */ - rt_uint32_t value; /**< value of semaphore. */ + rt_uint16_t value; /**< value of semaphore. */ + rt_uint16_t reserved; /**< reserved field */ }; typedef struct rt_semaphore *rt_sem_t; #endif diff --git a/src/ipc.c b/src/ipc.c index 7f603cfc4..74faf6ac7 100644 --- a/src/ipc.c +++ b/src/ipc.c @@ -201,6 +201,7 @@ rt_err_t rt_sem_init(rt_sem_t sem, rt_uint8_t flag) { RT_ASSERT(sem != RT_NULL); + RT_ASSERT(value < 0x10000U); /* init object */ rt_object_init(&(sem->parent.parent), RT_Object_Class_Semaphore, name); @@ -209,7 +210,7 @@ rt_err_t rt_sem_init(rt_sem_t sem, rt_ipc_object_init(&(sem->parent)); /* set init value */ - sem->value = value; + sem->value = (rt_uint16_t)value; /* set parent */ sem->parent.parent.flag = flag; @@ -261,6 +262,7 @@ rt_sem_t rt_sem_create(const char *name, rt_uint32_t value, rt_uint8_t flag) rt_sem_t sem; RT_DEBUG_NOT_IN_INTERRUPT; + RT_ASSERT(value < 0x10000U); /* allocate object */ sem = (rt_sem_t)rt_object_allocate(RT_Object_Class_Semaphore, name); -- GitLab