blob: 6839e9c914ea06f8f962198871c9996824feafb6 (
plain) (
blame)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/* See LICENSE file for copyright and license details. */
#ifndef SERVERS_KERNEL_H
#define SERVERS_KERNEL_H
#ifndef GCC_ONLY
# if defined(__GNUC__) && !defined(__clang__)
# define GCC_ONLY(...) __VA_ARGS__
# else
# define GCC_ONLY(...) /* nothing */
# endif
#endif
/**
* Get the pathname of the socket
*
* @return The pathname of the socket, `NULL` on error
*/
GCC_ONLY(__attribute__((__malloc__)))
char *get_socket_pathname(void);
/**
* Get the pathname of the PID file
*
* @return The pathname of the PID file, `NULL` on error
*/
GCC_ONLY(__attribute__((__malloc__)))
char *get_pidfile_pathname(void);
/**
* Get the pathname of the state file
*
* @return The pathname of the state file, `NULL` on error
*/
GCC_ONLY(__attribute__((__malloc__)))
char *get_state_pathname(void);
/**
* Create PID file
*
* @param pidpath The pathname of the PID file
* @return Zero on success, -1 on error,
* -2 if the service is already running
*/
GCC_ONLY(__attribute__((__nonnull__)))
int create_pidfile(char *pidpath);
/**
* Create socket and start listening
*
* @param socketpath The pathname of the socket
* @return Zero on success, -1 on error
*/
GCC_ONLY(__attribute__((__nonnull__)))
int create_socket(const char *socketpath);
/**
* Close and unlink the socket
*
* @param socketpath The pathname of the socket
*/
GCC_ONLY(__attribute__((__nonnull__)))
void close_socket(const char *socketpath);
#endif
|