chiark / gitweb /
util: add timeout to generator execution
[elogind.git] / src / shared / util.h
index 219e4897b38bc78cc384f3a6aec1fea26e352041..51b1caf94614831759d0161d627918f3ad361a12 100644 (file)
 #  error Unknown uid_t size
 #endif
 
+#if SIZEOF_GID_T == 4
+#  define GID_FMT "%" PRIu32
+#elif SIZEOF_GID_T == 2
+#  define GID_FMT "%" PRIu16
+#else
+#  error Unknown gid_t size
+#endif
+
 #include "macro.h"
 #include "time-util.h"
 
@@ -144,8 +152,9 @@ int close_nointr(int fd);
 void close_nointr_nofail(int fd);
 void close_many(const int fds[], unsigned n_fd);
 
+int parse_size(const char *t, off_t base, off_t *size);
+
 int parse_boolean(const char *v) _pure_;
-int parse_bytes(const char *t, off_t *bytes);
 int parse_pid(const char *s, pid_t* ret_pid);
 int parse_uid(const char *s, uid_t* ret_uid);
 #define parse_gid(s, ret_uid) parse_uid(s, ret_uid)
@@ -238,6 +247,7 @@ char *file_in_same_dir(const char *path, const char *filename);
 
 int rmdir_parents(const char *path, const char *stop);
 
+int get_process_state(pid_t pid);
 int get_process_comm(pid_t pid, char **name);
 int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line);
 int get_process_exe(pid_t pid, char **name);
@@ -408,7 +418,6 @@ cpu_set_t* cpu_set_malloc(unsigned *ncpus);
 
 int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) _printf_(4,0);
 int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) _printf_(4,5);
-int status_welcome(void);
 
 int fd_columns(int fd);
 unsigned columns(void);
@@ -472,7 +481,7 @@ bool tty_is_console(const char *tty) _pure_;
 int vtnr_from_tty(const char *tty);
 const char *default_term_for_tty(const char *tty);
 
-void execute_directory(const char *directory, DIR *_d, char *argv[]);
+void execute_directory(const char *directory, DIR *_d, usec_t timeout, char *argv[]);
 
 int kill_and_sigcont(pid_t pid, int sig);
 
@@ -722,6 +731,15 @@ void* greedy_realloc0(void **p, size_t *allocated, size_t need);
 #define GREEDY_REALLOC0(array, allocated, need) \
         greedy_realloc0((void**) &(array), &(allocated), sizeof((array)[0]) * (need))
 
+#define GREEDY_REALLOC0_T(array, count, need)                           \
+        ({                                                              \
+                size_t _size = (count) * sizeof((array)[0]);            \
+                void *_ptr = GREEDY_REALLOC0((array), _size, (need));   \
+                if (_ptr)                                               \
+                        (count) = _size / sizeof((array)[0]);           \
+                _ptr;                                                   \
+        })
+
 static inline void _reset_errno_(int *saved_errno) {
         errno = *saved_errno;
 }
@@ -833,7 +851,6 @@ static inline void _reset_locale_(struct _locale_struct_ *s) {
              _saved_locale_.quit = true)
 
 bool id128_is_valid(const char *s) _pure_;
-void parse_user_at_host(char *arg, char **user, char **host);
 
 int split_pair(const char *s, const char *sep, char **l, char **r);
 
@@ -852,13 +869,15 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size,
 }
 
 int proc_cmdline(char **ret);
+int parse_proc_cmdline(int (*parse_word)(const char *word));
 
 int container_get_leader(const char *machine, pid_t *pid);
 
 int namespace_open(pid_t pid, int *pidns_fd, int *mntns_fd, int *root_fd);
 int namespace_enter(int pidns_fd, int mntns_fd, int root_fd);
 
-bool pid_valid(pid_t pid);
+bool pid_is_alive(pid_t pid);
+bool pid_is_unwaited(pid_t pid);
 
 int getpeercred(int fd, struct ucred *ucred);
 int getpeersec(int fd, char **ret);
@@ -869,3 +888,8 @@ int mkostemp_safe(char *pattern, int flags);
 int open_tmpfile(const char *path, int flags);
 
 int fd_warn_permissions(const char *path, int fd);
+
+unsigned long personality_from_string(const char *p);
+const char *personality_to_string(unsigned long);
+
+uint64_t physical_memory(void);