662
|
1 #ifndef _FSPLIB_H_LOCK
|
|
2 #define _FSPLIB_H_LOCK 1
|
|
3
|
828
|
4 #include "../../config.h"
|
|
5
|
662
|
6 #ifndef FSP_NOLOCKING
|
|
7 /* define locking prefix if needed */
|
|
8 # ifndef FSP_KEY_PREFIX
|
|
9 # define FSP_KEY_PREFIX "/tmp/.FSPL"
|
|
10 # endif
|
|
11 #endif
|
|
12
|
|
13 #ifdef FSP_USE_SHAREMEM_AND_SEMOP
|
|
14
|
|
15 typedef struct FSP_LOCK {
|
|
16 unsigned int *share_key;
|
|
17 int lock_shm;
|
|
18 int lock_sem;
|
|
19 char key_string[sizeof(FSP_KEY_PREFIX)+32];
|
|
20 } FSP_LOCK;
|
|
21
|
|
22 #elif defined(FSP_NOLOCKING)
|
|
23
|
|
24 typedef struct FSP_LOCK {
|
|
25 unsigned short share_key;
|
|
26 } FSP_LOCK;
|
|
27
|
|
28 #elif defined(FSP_USE_LOCKF)
|
|
29
|
|
30 typedef struct FSP_LOCK {
|
|
31 int lock_fd;
|
|
32 char key_string[sizeof(FSP_KEY_PREFIX)+32];
|
|
33 } FSP_LOCK;
|
|
34
|
|
35 #else
|
|
36 #error "No locking type specified"
|
|
37 #endif
|
|
38
|
|
39 /* prototypes */
|
|
40
|
|
41 unsigned short client_get_key (FSP_LOCK *lock);
|
|
42 void client_set_key (FSP_LOCK *lock,unsigned short key);
|
|
43 int client_init_key (FSP_LOCK *lock,
|
|
44 unsigned long server_addr,
|
|
45 unsigned short server_port);
|
|
46 void client_destroy_key(FSP_LOCK *lock);
|
|
47 #endif
|