|
|
1.1 root 1: /* (-lgl
2: * COHERENT Version 4.0
3: * Copyright (c) 1982, 1993 by Mark Williams Company.
4: * All rights reserved. May not be copied without permission.
5: -lgl) */
6: /*
7: * /usr/include/sys/sem.h
8: *
9: * IPC Semaphore Facility
10: *
11: * Revised: Mon Apr 19 13:52:49 1993 CDT
12: */
13: #ifndef __SYS_SEM_H__
14: #define __SYS_SEM_H__
15:
16: #include <sys/ipc.h>
17: #include <sys/_time.h>
18:
19: /*
20: * Permission Definitions.
21: */
22: #define SEM_A 0200 /* alter permission */
23: #define SEM_R 0400 /* read permission */
24:
25: /*
26: * Semaphore Operation Flags.
27: */
28: #define SEM_UNDO 010000 /* set up adjust on exit entry */
29:
30: /*
31: * Semctl Command Definitions.
32: */
33: #define GETNCNT 3 /* get semncnt */
34: #define GETPID 4 /* get sempid */
35: #define GETVAL 5 /* get semval */
36: #define GETALL 6 /* get all semval's */
37: #define GETZCNT 7 /* get semzcnt */
38: #define SETVAL 8 /* set semval */
39: #define SETALL 9 /* set all semval's */
40:
41: /*
42: * Structure Definitions.
43: */
44:
45: /*
46: * There is one semaphore structure for each semaphore in the system.
47: */
48: struct sem {
49: unsigned short semval; /* semaphore value */
50: short sempid; /* pid of last operation */
51: unsigned short semncnt; /* # awaiting semval > cval */
52: unsigned short semzcnt; /* # awaiting semval = 0 */
53: };
54:
55: /*
56: * There is one semaphore id data structure for each set of semaphores
57: * in the system.
58: */
59: struct semid_ds {
60: struct ipc_perm sem_perm; /* semaphore permission struct */
61: struct sem *sem_base; /* pointer to first semaphore in set */
62: unsigned short sem_nsems; /* # of semaphores in set */
63: time_t sem_otime; /* last semop time */
64: time_t sem_ctime; /* last change time */
65: };
66:
67: /*
68: * There is one link list of undo structures per process.
69: */
70: struct sem_undo {
71: struct sem_undo *un_np; /* ptr to next active undo structure */
72: short un_aoe; /* adjust on exit values */
73: short un_num; /* semaphore # */
74: int un_id; /* semid */
75: };
76:
77: /*
78: * User semaphore template for semop system calls.
79: */
80: struct sembuf {
81: unsigned short sem_num; /* semaphore # */
82: short sem_op; /* semaphore operation */
83: short sem_flg; /* operation flags */
84: };
85:
86: /*
87: * Ioctl commands issued to Semaphore device driver (Coherent 286 specific).
88: */
89: #define SEMIOC ('S'<<8)
90: #define SEMCTL (SEMIOC|0)
91: #define SEMGET (SEMIOC|1)
92: #define SEMOP (SEMIOC|2)
93:
94: #endif /* __SYS_SEM_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.