Function report |
Source Code:ipc\sem.c |
Create Date:2022-07-28 16:43:51 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| home page | Tree |
| Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:perform_atomic_semop
Proto:static int perform_atomic_semop(struct sem_array *sma, struct sem_queue *q)
Type:int
Parameter:
| Type | Parameter | Name |
|---|---|---|
| struct sem_array * | sma | |
| struct sem_queue * | q |
| 707 | nsops = umber of operations |
| 708 | un = undo structure |
| 710 | If Value for the false possibility is greater at compile time(sops on more than one sem_num ) Then Return perform_atomic_semop[_slow] - Attempt to perform semaphore* operations on a given array |
| 723 | sem_op = semaphore operation |
| 724 | result = current value |
| 726 | If Not sem_op && result Then Go to would_block |
| 730 | If result < 0 Then Go to would_block |
| 733 | If result > <= 32767 semaphore maximum value Then Return -ERANGE |
| 736 | If peration flags & undo the operation on exit Then |
| 737 | undo = array of adjustments [semaphore index in array ] - sem_op |
| 740 | If undo < -adjust on exit max value - 1 || undo > adjust on exit max value Then Return -ERANGE |
| 746 | curr = sems[semaphore index in array ] |
| 747 | sem_op = semaphore operation |
| 748 | result = current value |
| 750 | If peration flags & undo the operation on exit Then |
| 751 | undo = array of adjustments [semaphore index in array ] - sem_op |
| 755 | current value += sem_op |
| 759 | Return 0 |
| 761 | would_block : |
| 762 | he operation that blocked = sop |
| 763 | Return If peration flags & urn error on wait Then -EAGAIN Else 1 |
| Name | Describe |
|---|---|
| wake_const_ops | wake_const_ops - wake up non-alter tasks*@sma: semaphore array.*@semnum: semaphore that was modified.*@wake_q: lockless wake-queue head.* wake_const_ops must be called after a semaphore in a semaphore array* was set to 0 |
| update_queue | pdate_queue - look for tasks that can be completed.*@sma: semaphore array.*@semnum: semaphore that was modified.*@wake_q: lockless wake-queue head.* update_queue must be called after a semaphore in a semaphore array* was modified |
| do_semtimedop |
| Source code conversion tool public plug-in interface | X |
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |