1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _CFG_LOCKD_H 27 #define _CFG_LOCKD_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 typedef enum { LOCK_NOTLOCKED, /* Unlock message */ 34 LOCK_READ, /* ask for read lock */ 35 LOCK_WRITE, /* ask for write lock */ 36 LOCK_LOCKED, /* lock has been taken */ 37 LOCK_LOCKEDBY, /* who has lock? */ 38 LOCK_STAT, /* ask daemon to print its state */ 39 LOCK_ACK /* acknowledge a notlocked msg */ 40 } cfglockd_t; 41 42 typedef struct sockaddr_in daemonaddr_t; 43 44 struct lock_msg { 45 int32_t message; 46 pid_t pid; 47 int32_t order; 48 uint8_t seq; 49 }; 50 51 #define CFG_PIDFILE "/var/tmp/.cfglockd.pid" 52 #define CFG_SERVER_PORT 50121u 53 #define CFG_LF_EOF -1 54 #define CFG_LF_OKAY 1 55 #define CFG_LF_AGAIN 0 56 void cfg_lfinit(); 57 int cfg_filelock(int segment, int flag); 58 int cfg_fileunlock(int segment); 59 void cfg_readpid(int segment, pid_t *pidp); 60 void cfg_writepid(int segment, pid_t pid); 61 void cfg_enterpid(); 62 int cfg_lockd_init(); 63 cfglockd_t cfg_lockedby(pid_t *); 64 void cfg_lockd_rdlock(); 65 void cfg_lockd_wrlock(); 66 void cfg_lockd_unlock(); 67 68 #ifdef __cplusplus 69 } 70 #endif 71 72 #endif /* _CFG_LOCKD_H */