Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
semaphore.c@3:cf23d5c2ef90, 2011-08-06 (annotated)
- Committer:
- umutaradag
- Date:
- Sat Aug 06 04:40:56 2011 +0000
- Revision:
- 3:cf23d5c2ef90
- Parent:
- 0:3b35413050ff
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
umutaradag | 0:3b35413050ff | 1 | #include "mbed.h" |
umutaradag | 0:3b35413050ff | 2 | #include "semaphore.h" |
umutaradag | 0:3b35413050ff | 3 | |
umutaradag | 0:3b35413050ff | 4 | |
umutaradag | 0:3b35413050ff | 5 | void semInit(semaphore* s, int initVal) |
umutaradag | 0:3b35413050ff | 6 | { |
umutaradag | 3:cf23d5c2ef90 | 7 | s->count = initVal; |
umutaradag | 0:3b35413050ff | 8 | } |
umutaradag | 0:3b35413050ff | 9 | void semPost(semaphore* s) |
umutaradag | 0:3b35413050ff | 10 | { |
umutaradag | 0:3b35413050ff | 11 | __disable_irq(); |
umutaradag | 3:cf23d5c2ef90 | 12 | s->count++; |
umutaradag | 0:3b35413050ff | 13 | //printf("sem released %d\n",*s); |
umutaradag | 0:3b35413050ff | 14 | __enable_irq(); |
umutaradag | 0:3b35413050ff | 15 | } |
umutaradag | 3:cf23d5c2ef90 | 16 | int semPend(semaphore* s, int maxNumOfTrials) |
umutaradag | 0:3b35413050ff | 17 | { |
umutaradag | 3:cf23d5c2ef90 | 18 | s->trials = 0; |
umutaradag | 0:3b35413050ff | 19 | do |
umutaradag | 0:3b35413050ff | 20 | { |
umutaradag | 0:3b35413050ff | 21 | __disable_irq(); |
umutaradag | 0:3b35413050ff | 22 | //printf("sem testing %d\n",*s); |
umutaradag | 3:cf23d5c2ef90 | 23 | if(s->count > 0) |
umutaradag | 0:3b35413050ff | 24 | { |
umutaradag | 3:cf23d5c2ef90 | 25 | s->count--; |
umutaradag | 0:3b35413050ff | 26 | __enable_irq(); |
umutaradag | 0:3b35413050ff | 27 | //printf("sem acquired\n"); |
umutaradag | 0:3b35413050ff | 28 | return SEM_OK; |
umutaradag | 0:3b35413050ff | 29 | } |
umutaradag | 0:3b35413050ff | 30 | __enable_irq(); |
umutaradag | 3:cf23d5c2ef90 | 31 | }while(maxNumOfTrials > s->trials++); |
umutaradag | 0:3b35413050ff | 32 | return SEM_ERR; |
umutaradag | 3:cf23d5c2ef90 | 33 | } |
umutaradag | 3:cf23d5c2ef90 | 34 | void semSet(semaphore* s, int val) |
umutaradag | 3:cf23d5c2ef90 | 35 | { |
umutaradag | 3:cf23d5c2ef90 | 36 | s->count = val; |
umutaradag | 0:3b35413050ff | 37 | } |