1/* 2 * Copyright (c) 2000-2001, 2005, 2008 Proofpoint, Inc. and its suppliers. 3 * All rights reserved. 4 * 5 * By using this file, you agree to the terms and conditions set 6 * forth in the LICENSE file which can be found at the top level of 7 * the sendmail distribution. 8 * 9 * $Id: sem.h,v 1.11 2013-11-22 20:51:31 ca Exp $ 10 */ 11 12#ifndef SM_SEM_H 13# define SM_SEM_H 1 14 15#include <sm/gen.h> 16 17/* key for semaphores */ 18# define SM_SEM_KEY (41L) 19# define SM_SEM_NO_ID (-1) 20# define SM_NO_SEM(id) ((id) < 0) 21 22# if SM_CONF_SEM > 0 23# include <sys/types.h> 24# include <sys/ipc.h> 25# include <sys/sem.h> 26 27# if SM_CONF_SEM == 2 28union semun 29{ 30 int val; 31 struct semid_ds *buf; 32 ushort *array; 33}; 34# endif /* SM_CONF_SEM == 2 */ 35 36# ifndef SEM_A 37# define SEM_A 0200 38# endif /* SEM_A */ 39# ifndef SEM_R 40# define SEM_R 0400 41# endif /* SEM_R */ 42 43# define SM_NSEM 1 44 45extern int sm_sem_start __P((key_t, int, int, bool)); 46extern int sm_sem_stop __P((int)); 47extern int sm_sem_acq __P((int, int, int)); 48extern int sm_sem_rel __P((int, int, int)); 49extern int sm_sem_get __P((int, int)); 50extern int sm_semsetowner __P((int, uid_t, gid_t, mode_t)); 51 52# else /* SM_CONF_SEM > 0 */ 53# define sm_sem_start(key, nsem, semflg, owner) 0 54# define sm_sem_stop(semid) 0 55# define sm_sem_acq(semid, semnum, timeout) 0 56# define sm_sem_rel(semid, semnum, timeout) 0 57# define sm_sem_get(semid, semnum) 0 58# endif /* SM_CONF_SEM > 0 */ 59 60#endif /* ! SM_SEM_H */ 61