xref: /freebsd-src/contrib/sendmail/include/sm/sem.h (revision 2fb4f839f3fc72ce2bab12f9ba4760f97f73e97f)
113d88268SGregory Neil Shapiro /*
25dd76dd0SGregory Neil Shapiro  * Copyright (c) 2000-2001, 2005, 2008 Proofpoint, Inc. and its suppliers.
313d88268SGregory Neil Shapiro  *      All rights reserved.
413d88268SGregory Neil Shapiro  *
513d88268SGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
613d88268SGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
713d88268SGregory Neil Shapiro  * the sendmail distribution.
813d88268SGregory Neil Shapiro  *
94313cc83SGregory Neil Shapiro  *	$Id: sem.h,v 1.11 2013-11-22 20:51:31 ca Exp $
1013d88268SGregory Neil Shapiro  */
1113d88268SGregory Neil Shapiro 
1213d88268SGregory Neil Shapiro #ifndef SM_SEM_H
1313d88268SGregory Neil Shapiro # define SM_SEM_H 1
1413d88268SGregory Neil Shapiro 
1513d88268SGregory Neil Shapiro #include <sm/gen.h>
1613d88268SGregory Neil Shapiro 
1713d88268SGregory Neil Shapiro /* key for semaphores */
1813d88268SGregory Neil Shapiro # define SM_SEM_KEY	(41L)
1913d88268SGregory Neil Shapiro # define SM_SEM_NO_ID	(-1)
2013d88268SGregory Neil Shapiro # define SM_NO_SEM(id)	((id) < 0)
2113d88268SGregory Neil Shapiro 
2213d88268SGregory Neil Shapiro # if SM_CONF_SEM > 0
2313d88268SGregory Neil Shapiro #  include <sys/types.h>
2413d88268SGregory Neil Shapiro #  include <sys/ipc.h>
2513d88268SGregory Neil Shapiro #  include <sys/sem.h>
2613d88268SGregory Neil Shapiro 
2713d88268SGregory Neil Shapiro # if SM_CONF_SEM == 2
2813d88268SGregory Neil Shapiro union semun
2913d88268SGregory Neil Shapiro {
3013d88268SGregory Neil Shapiro 	int		val;
3113d88268SGregory Neil Shapiro 	struct semid_ds	*buf;
3213d88268SGregory Neil Shapiro 	ushort		*array;
3313d88268SGregory Neil Shapiro };
3413d88268SGregory Neil Shapiro # endif /* SM_CONF_SEM == 2 */
3513d88268SGregory Neil Shapiro 
3613d88268SGregory Neil Shapiro # ifndef SEM_A
3713d88268SGregory Neil Shapiro #  define SEM_A	0200
385b0945b5SGregory Neil Shapiro # endif
3913d88268SGregory Neil Shapiro # ifndef SEM_R
4013d88268SGregory Neil Shapiro #  define SEM_R	0400
415b0945b5SGregory Neil Shapiro # endif
4213d88268SGregory Neil Shapiro 
4313d88268SGregory Neil Shapiro # define SM_NSEM	1
4413d88268SGregory Neil Shapiro 
4513d88268SGregory Neil Shapiro extern int sm_sem_start __P((key_t, int, int, bool));
4613d88268SGregory Neil Shapiro extern int sm_sem_stop __P((int));
4713d88268SGregory Neil Shapiro extern int sm_sem_acq __P((int, int, int));
4813d88268SGregory Neil Shapiro extern int sm_sem_rel __P((int, int, int));
4913d88268SGregory Neil Shapiro extern int sm_sem_get __P((int, int));
50*2fb4f839SGregory Neil Shapiro extern int sm_semsetowner __P((int, uid_t, gid_t, MODE_T));
5113d88268SGregory Neil Shapiro 
5213d88268SGregory Neil Shapiro # else /* SM_CONF_SEM > 0 */
5313d88268SGregory Neil Shapiro #  define sm_sem_start(key, nsem, semflg, owner) 0
5413d88268SGregory Neil Shapiro #  define sm_sem_stop(semid)	0
5513d88268SGregory Neil Shapiro #  define sm_sem_acq(semid, semnum, timeout)	0
5613d88268SGregory Neil Shapiro #  define sm_sem_rel(semid, semnum, timeout)	0
5713d88268SGregory Neil Shapiro #  define sm_sem_get(semid, semnum)	0
5813d88268SGregory Neil Shapiro # endif /* SM_CONF_SEM > 0 */
5913d88268SGregory Neil Shapiro 
6013d88268SGregory Neil Shapiro #endif /* ! SM_SEM_H */
61