/usr/include/gfarm/gfarm_misc.h is in libgfarm-dev 2.6.15+dfsg-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | /*
* $Id: gfarm_misc.h 10028 2016-01-12 13:39:51Z tatebe $
*/
#if !defined(PATH_MAX)
#define PATH_MAX 1024
#endif
#include <gfarm/gfarm_config.h>
/*
* basic types
*/
typedef unsigned char gfarm_uint8_t;
typedef unsigned short gfarm_uint16_t;
typedef unsigned int gfarm_uint32_t;
typedef char gfarm_int8_t;
typedef short gfarm_int16_t;
typedef int gfarm_int32_t;
typedef gfarm_int64_t gfarm_pid_t; /* XXX - need better place */
/*
* username handling
*/
/* the return value of the following functions should be free(3)ed */
gfarm_error_t gfarm_local_to_global_username_by_url(const char *,
const char *, char **);
gfarm_error_t gfarm_global_to_local_username_by_url(const char *,
const char *, char **);
gfarm_error_t gfarm_local_to_global_groupname_by_url(const char *,
const char *, char **);
gfarm_error_t gfarm_global_to_local_groupname_by_url(const char *,
const char *, char **);
gfarm_error_t gfarm_local_to_global_username_by_host(const char *, int,
const char *, char **);
gfarm_error_t gfarm_global_to_local_username_by_host(const char *, int,
const char *, char **);
gfarm_error_t gfarm_local_to_global_groupname_by_host(const char *, int,
const char *, char **);
gfarm_error_t gfarm_global_to_local_groupname_by_host(const char *, int,
const char *, char **);
/*
* the return value of the following gfarm_get_*() funtions should not be
* trusted (maybe forged) on client side, because any user can forge
* the name by simply setting $USER.
*/
gfarm_error_t gfarm_set_local_username(char *);
gfarm_error_t gfarm_set_local_homedir(char *);
gfarm_error_t gfarm_get_global_username_by_url(const char *, char **);
gfarm_error_t gfarm_get_global_username_by_host(const char *, int, char **);
char *gfarm_get_local_username(void);
char *gfarm_get_local_homedir(void);
gfarm_error_t gfarm_set_local_user_for_this_local_account(void);
gfarm_error_t gfarm_set_global_user_for_this_local_account(void);
/*
* gfarm.conf
*/
/* the following functions are for client, */
/* server/daemon process shouldn't call follows: */
gfarm_error_t gfarm_initialize(int *, char ***);
gfarm_error_t gfarm_terminate(void);
gfarm_error_t gfarm_config_read(void);
gfarm_error_t gfarm_auth_method_gsi_available(void);
const char *gfarm_version(void);
int gfarm_version_major(void);
int gfarm_version_minor(void);
int gfarm_version_teeny(void);
/*
* GFarm URL and pathname handling
*/
gfarm_error_t gfarm_canonical_path(const char *, char **);
gfarm_error_t gfarm_canonical_path_for_creation(const char *, char **);
gfarm_error_t gfarm_url_make_path(const char *, char **);
gfarm_error_t gfarm_url_make_path_for_creation(const char *, char **);
int gfarm_is_url(const char *);
gfarm_error_t gfarm_path_canonical_to_url(const char *, char **);
const char *gfarm_url_prefix_skip(const char *);
const char *gfarm_url_prefix_hostname_port_skip(const char *);
gfarm_error_t gfarm_url_prefix_add(const char *);
const char *gfarm_path_dir_skip(const char *);
const char *gfarm_url_dir_skip(const char *);
char *gfarm_path_dir(const char *);
char *gfarm_url_dir(const char *);
extern const char GFARM_URL_PREFIX[];
#define GFARM_URL_PREFIX_LENGTH 6
extern const char GFARM_PATH_ROOT[];
#define GFARM_IS_PATH_ROOT(path) ((path)[0] == '/' && (path)[1] == '\0')
/*
* File System Node Scheduling
* XXX - will be separated to <gfarm_schedule.h>?
*/
struct gfarm_host_sched_info;
gfarm_error_t gfarm_schedule_hosts_domain_all(const char *, const char *,
int *, struct gfarm_host_sched_info **);
gfarm_error_t gfarm_schedule_hosts_domain_by_file(
const char *, int, const char *,
int *, struct gfarm_host_sched_info **);
void gfarm_host_sched_info_free(int, struct gfarm_host_sched_info *);
void gfarm_schedule_search_mode_use_loadavg(void);
gfarm_error_t gfarm_schedule_hosts(const char *,
int, struct gfarm_host_sched_info *, int, char **, int *);
gfarm_error_t gfarm_schedule_hosts_to_write(const char *,
int, struct gfarm_host_sched_info *, int, char **, int *);
gfarm_error_t gfarm_schedule_hosts_acyclic(const char *,
int, struct gfarm_host_sched_info *, int *, char **, int *);
gfarm_error_t gfarm_schedule_hosts_acyclic_to_write(const char *,
int, struct gfarm_host_sched_info *, int *, char **, int *);
/* for debugging */
void gfarm_schedule_cache_dump(void);
/*
* helper functions for import
*/
gfarm_error_t gfarm_hostlist_read(char *, int *, char ***, int *);
/*
* hostspec
*/
int gfarm_host_is_in_domain(const char *, const char *);
/*
* host
*/
char *gfarm_host_get_self_name(void);
/*
* Miscellaneous
*/
#define GFARM_INT32STRLEN 11 /* max strlen(sprintf(s, "%d", int32)) */
#define GFARM_INT64STRLEN 22 /* max strlen(sprintf(s, "%lld", int64)) */
#define GFARM_ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0]))
#define GFARM_MALLOC(p) ((p) = malloc(sizeof(*(p))))
#define GFARM_CALLOC_ARRAY(p,n) ((p) = gfarm_calloc_array((n), sizeof(*(p))))
#define GFARM_MALLOC_ARRAY(p,n) ((p) = gfarm_malloc_array((n), sizeof(*(p))))
#define GFARM_REALLOC_ARRAY(d,s,n) ((d) = gfarm_realloc_array((s), (n), sizeof(*(d))))
void *gfarm_calloc_array(size_t, size_t);
void *gfarm_malloc_array(size_t, size_t);
void *gfarm_realloc_array(void *, size_t, size_t);
gfarm_error_t gfarm_fixedstrings_dup(int, char **, char **);
void gfarm_strings_free_deeply(int, char **);
int gfarm_strarray_length(char **);
char **gfarm_strarray_dup(char **);
void gfarm_strarray_free(char **);
int gfarm_attach_debugger(void);
size_t gfarm_humanize_number(char *, size_t, unsigned long long, int);
size_t gfarm_humanize_signed_number(char *, size_t, long long, int);
#define GFARM_HUMANIZE_BINARY 1
#ifndef GFARM_CONFIG_H
/* HAVE_BYTESWAP_H, WORDS_BIGENDIAN, etc need <gfarm/gfarm_config.h> */
#error missing <gfarm/gfarm_config.h>, to use <gfarm/gfarm_misc.h>,
#endif
#ifdef HAVE_BYTESWAP_H
#include <byteswap.h>
#define gfarm_bswap_16(x) bswap_16(x)
#define gfarm_bswap_32(x) bswap_32(x)
#else
#define gfarm_bswap_16(x) ((((x) & 0xFF00) >> 8) | (((x) & 0xFF) << 8))
#define gfarm_bswap_32(x) ((((x) & 0xFF000000) >> 24) | \
(((x) & 0xFF0000) >> 8) | \
(((x) & 0xFF00) << 8) | (((x) & 0xFF) << 24))
#endif /* HAVE_BYTESWAP_H */
/* _htol_: host byte order to little endian */
/* _htob_: host byte order to big endian */
/* _ltoh_: little endian to host byte order */
/* _btoh_: big endian to host byte order */
#ifdef WORDS_BIGENDIAN
/* big endian */
#define gfarm_htol_16(x) gfarm_bswap_16(x)
#define gfarm_ltoh_16(x) gfarm_bswap_16(x)
#define gfarm_htol_32(x) gfarm_bswap_32(x)
#define gfarm_ltoh_32(x) gfarm_bswap_32(x)
#define gfarm_htob_16(x) (x)
#define gfarm_btoh_16(x) (x)
#define gfarm_htob_32(x) (x)
#define gfarm_btoh_32(x) (x)
#else
/* litle endian */
#define gfarm_htol_16(x) (x)
#define gfarm_ltoh_16(x) (x)
#define gfarm_htol_32(x) (x)
#define gfarm_ltoh_32(x) (x)
#define gfarm_htob_16(x) gfarm_bswap_16(x)
#define gfarm_btoh_16(x) gfarm_bswap_16(x)
#define gfarm_htob_32(x) gfarm_bswap_32(x)
#define gfarm_btoh_32(x) gfarm_bswap_32(x)
#endif /* WORDS_BIGENDIAN */
/* support nanosecond */
#ifndef __KERNEL__
#if defined(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) /* Solaris, Linux */
#define gfarm_stat_mtime_nsec(st) ((st)->st_mtim.tv_nsec)
#define gfarm_stat_atime_nsec(st) ((st)->st_atim.tv_nsec)
#define gfarm_stat_ctime_nsec(st) ((st)->st_ctim.tv_nsec)
#elif defined(HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC) /* *BSD, MacOS X */
#define gfarm_stat_mtime_nsec(st) ((st)->st_mtimespec.tv_nsec)
#define gfarm_stat_atime_nsec(st) ((st)->st_atimespec.tv_nsec)
#define gfarm_stat_ctime_nsec(st) ((st)->st_ctimespec.tv_nsec)
#else
#define gfarm_stat_mtime_nsec(st) 0
#define gfarm_stat_atime_nsec(st) 0
#define gfarm_stat_ctime_nsec(st) 0
#endif
#else /* __KERNEL__ */
#define gfarm_stat_mtime_nsec(st) ((st)->st_mtime_nsec)
#define gfarm_stat_atime_nsec(st) ((st)->st_atime_nsec)
#define gfarm_stat_ctime_nsec(st) ((st)->st_ctime_nsec)
#endif /* __KERNEL__ */
|