Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


sem.h
01: #ifndef _LINUX_SEM_H
02: #define _LINUX_SEM_H
03: 
04: #include <linux/ipc.h>
05: 
06: /* semop flags */
07: #define SEM_UNDO        0x1000  /* undo the operation on exit */
08: 
09: /* semctl Command Definitions. */
10: #define GETPID  11       /* get sempid */
11: #define GETVAL  12       /* get semval */
12: #define GETALL  13       /* get all semval's */
13: #define GETNCNT 14       /* get semncnt */
14: #define GETZCNT 15       /* get semzcnt */
15: #define SETVAL  16       /* set semval */
16: #define SETALL  17       /* set all semval's */
17: 
18: /* ipcs ctl cmds */
19: #define SEM_STAT 18
20: #define SEM_INFO 19
21: 
22: /* Obsolete, used only for backwards compatibility and libc5 compiles */
23: struct semid_ds {
24:         struct ipc_perm sem_perm;               /* permissions .. see ipc.h */
25:         __kernel_time_t sem_otime;              /* last semop time */
26:         __kernel_time_t sem_ctime;              /* last change time */
27:         struct sem      *sem_base;              /* ptr to first semaphore in array */
28:         struct sem_queue *sem_pending;          /* pending operations to be processed */
29:         struct sem_queue **sem_pending_last;    /* last pending operation */
30:         struct sem_undo *undo;                  /* undo requests on this array */
31:         unsigned short  sem_nsems;              /* no. of semaphores in array */
32: };
33: 
34: /* Include the definition of semid64_ds */
35: #include <asm/sembuf.h>
36: 
37: /* semop system calls takes an array of these. */
38: struct sembuf {
39:         unsigned short  sem_num;        /* semaphore index in array */
40:         short           sem_op;         /* semaphore operation */
41:         short           sem_flg;        /* operation flags */
42: };
43: 
44: /* arg for semctl system calls. */
45: union semun {
46:         int val;                        /* value for SETVAL */
47:         struct semid_ds *buf;   /* buffer for IPC_STAT & IPC_SET */
48:         unsigned short *array;  /* array for GETALL & SETALL */
49:         struct seminfo *__buf;  /* buffer for IPC_INFO */
50:         void *__pad;
51: };
52: 
53: struct  seminfo {
54:         int semmap;
55:         int semmni;
56:         int semmns;
57:         int semmnu;
58:         int semmsl;
59:         int semopm;
60:         int semume;
61:         int semusz;
62:         int semvmx;
63:         int semaem;
64: };
65: 
66: #define SEMMNI  128             /* <= IPCMNI  max # of semaphore identifiers */
67: #define SEMMSL  250             /* <= 8 000 max num of semaphores per id */
68: #define SEMMNS  (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */
69: #define SEMOPM  32              /* <= 1 000 max num of ops per semop call */
70: #define SEMVMX  32767           /* <= 32767 semaphore maximum value */
71: #define SEMAEM  SEMVMX          /* adjust on exit max value */
72: 
73: /* unused */
74: #define SEMUME  SEMOPM          /* max num of undo entries per process */
75: #define SEMMNU  SEMMNS          /* num of undo structures system wide */
76: #define SEMMAP  SEMMNS          /* # of entries in semaphore map */
77: #define SEMUSZ  20              /* sizeof struct sem_undo */
78: 
79: 
80: #endif /* _LINUX_SEM_H */
81: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/