File: lock.h

package info (click to toggle)
fsplib 0.14-5.1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 236 kB
  • sloc: ansic: 1,581; python: 117; makefile: 11; sh: 8
file content (45 lines) | stat: -rw-r--r-- 972 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef _FSPLIB_H_LOCK
#define _FSPLIB_H_LOCK 1

#ifndef FSP_NOLOCKING
/* define locking prefix if needed */
# ifndef FSP_KEY_PREFIX
#  define FSP_KEY_PREFIX "/tmp/.FSPL"
# endif
#endif

#ifdef FSP_USE_SHAREMEM_AND_SEMOP

typedef struct FSP_LOCK {
		unsigned int *share_key;
		int   lock_shm;
		int   lock_sem;
		char key_string[sizeof(FSP_KEY_PREFIX)+32];
} FSP_LOCK;

#elif defined(FSP_NOLOCKING)

typedef struct FSP_LOCK {
               unsigned short share_key;
} FSP_LOCK;

#elif defined(FSP_USE_LOCKF)

typedef struct FSP_LOCK {  
	       int lock_fd;
	       char key_string[sizeof(FSP_KEY_PREFIX)+32];
} FSP_LOCK;

#else
#error "No locking type specified"
#endif

/* prototypes */

unsigned short client_get_key (FSP_LOCK *lock);
void client_set_key (FSP_LOCK *lock,unsigned short key);
int client_init_key (FSP_LOCK *lock,
                            unsigned long server_addr,
			    unsigned short server_port);
void client_destroy_key(FSP_LOCK *lock);
#endif