diff --git a/kernel/core/tos_sem.c b/kernel/core/tos_sem.c index 650951ad6726833f536daef2df77dc07854f0fb2..c0ddbde1e5688e49402103423de89bfb014ae223 100644 --- a/kernel/core/tos_sem.c +++ b/kernel/core/tos_sem.c @@ -22,15 +22,14 @@ __API__ k_err_t tos_sem_create_max(k_sem_t *sem, k_sem_cnt_t init_count, k_sem_cnt_t max_count) { TOS_PTR_SANITY_CHECK(sem); - - sem->count = init_count; - sem->count_max = max_count; - if(sem->count > sem->count_max) - { - sem->count_max = sem->count; + if (unlikely(init_count > max_count)) { + init_count = max_count; } + sem->count = init_count; + sem->count_max = max_count; + pend_object_init(&sem->pend_obj); TOS_OBJ_INIT(sem, KNL_OBJ_TYPE_SEMAPHORE);