Is it legal to initialize a linux kernel semaphore to a negative number? -
say want wake task after n separate events have occurred. legal initialize semaphore 1 - n, , down() it, wake after each of events have up()'d it?
i don't think so.
(1) semephore.count declared unsigned int. see semaphore definition:
    struct semaphore {         spinlock_t      lock;         unsigned int        count;         struct list_head    wait_list;     }; (2) down() function check count value before decrease it, make sure count not negative.
unless implement 1 mechanism, can not use semaphore directly accomplish requirement.
Comments
Post a Comment