17c478bd9Sstevel@tonic-gate /* 2*e9af4bc0SJohn Beck * Copyright (c) 2000-2001, 2005, 2008 Sendmail, Inc. and its suppliers. 37c478bd9Sstevel@tonic-gate * All rights reserved. 47c478bd9Sstevel@tonic-gate * 57c478bd9Sstevel@tonic-gate * By using this file, you agree to the terms and conditions set 67c478bd9Sstevel@tonic-gate * forth in the LICENSE file which can be found at the top level of 77c478bd9Sstevel@tonic-gate * the sendmail distribution. 87c478bd9Sstevel@tonic-gate * 9*e9af4bc0SJohn Beck * $Id: sem.h,v 1.10 2008/05/30 16:26:39 ca Exp $ 107c478bd9Sstevel@tonic-gate */ 117c478bd9Sstevel@tonic-gate 127c478bd9Sstevel@tonic-gate #ifndef SM_SEM_H 137c478bd9Sstevel@tonic-gate # define SM_SEM_H 1 147c478bd9Sstevel@tonic-gate 157c478bd9Sstevel@tonic-gate #include <sm/gen.h> 167c478bd9Sstevel@tonic-gate 177c478bd9Sstevel@tonic-gate /* key for semaphores */ 187c478bd9Sstevel@tonic-gate # define SM_SEM_KEY (41L) 197c478bd9Sstevel@tonic-gate # define SM_SEM_NO_ID (-1) 207c478bd9Sstevel@tonic-gate # define SM_NO_SEM(id) ((id) < 0) 217c478bd9Sstevel@tonic-gate 227c478bd9Sstevel@tonic-gate # if SM_CONF_SEM > 0 237c478bd9Sstevel@tonic-gate # include <sys/types.h> 247c478bd9Sstevel@tonic-gate # include <sys/ipc.h> 257c478bd9Sstevel@tonic-gate # include <sys/sem.h> 267c478bd9Sstevel@tonic-gate 277c478bd9Sstevel@tonic-gate # if SM_CONF_SEM == 2 287c478bd9Sstevel@tonic-gate union semun 297c478bd9Sstevel@tonic-gate { 307c478bd9Sstevel@tonic-gate int val; 317c478bd9Sstevel@tonic-gate struct semid_ds *buf; 327c478bd9Sstevel@tonic-gate ushort *array; 337c478bd9Sstevel@tonic-gate }; 347c478bd9Sstevel@tonic-gate # endif /* SM_CONF_SEM == 2 */ 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate # ifndef SEM_A 377c478bd9Sstevel@tonic-gate # define SEM_A 0200 387c478bd9Sstevel@tonic-gate # endif /* SEM_A */ 397c478bd9Sstevel@tonic-gate # ifndef SEM_R 407c478bd9Sstevel@tonic-gate # define SEM_R 0400 417c478bd9Sstevel@tonic-gate # endif /* SEM_R */ 427c478bd9Sstevel@tonic-gate 437c478bd9Sstevel@tonic-gate # define SM_NSEM 1 447c478bd9Sstevel@tonic-gate 457c478bd9Sstevel@tonic-gate extern int sm_sem_start __P((key_t, int, int, bool)); 467c478bd9Sstevel@tonic-gate extern int sm_sem_stop __P((int)); 477c478bd9Sstevel@tonic-gate extern int sm_sem_acq __P((int, int, int)); 487c478bd9Sstevel@tonic-gate extern int sm_sem_rel __P((int, int, int)); 497c478bd9Sstevel@tonic-gate extern int sm_sem_get __P((int, int)); 50*e9af4bc0SJohn Beck extern int sm_semsetowner __P((int, uid_t, gid_t, mode_t)); 517c478bd9Sstevel@tonic-gate 527c478bd9Sstevel@tonic-gate # else /* SM_CONF_SEM > 0 */ 537c478bd9Sstevel@tonic-gate # define sm_sem_start(key, nsem, semflg, owner) 0 547c478bd9Sstevel@tonic-gate # define sm_sem_stop(semid) 0 557c478bd9Sstevel@tonic-gate # define sm_sem_acq(semid, semnum, timeout) 0 567c478bd9Sstevel@tonic-gate # define sm_sem_rel(semid, semnum, timeout) 0 577c478bd9Sstevel@tonic-gate # define sm_sem_get(semid, semnum) 0 587c478bd9Sstevel@tonic-gate # endif /* SM_CONF_SEM > 0 */ 597c478bd9Sstevel@tonic-gate 607c478bd9Sstevel@tonic-gate #endif /* ! SM_SEM_H */ 61