/
usr
/
include
/
/usr/include
mkdir
upload
Name
Size
Mode
Actions
arpa/
-
0755
rm
asm/
-
0755
rm
asm-generic/
-
0755
rm
bind9/
-
0755
rm
bits/
-
0755
rm
blkid/
-
0755
rm
brotli/
-
0755
rm
c++/
-
0755
rm
drm/
-
0755
rm
e2p/
-
0755
rm
et/
-
0755
rm
event2/
-
0755
rm
ext2fs/
-
0755
rm
finclude/
-
0755
rm
fontconfig/
-
0755
rm
freetype2/
-
0755
rm
fstrm/
-
0755
rm
fwctl/
-
0755
rm
gdbm/
-
0755
rm
gio-unix-2.0/
-
0755
rm
GL/
-
0755
rm
glib-2.0/
-
0755
rm
gnu/
-
0755
rm
google/
-
0755
rm
graphite2/
-
0755
rm
gssapi/
-
0755
rm
gssrpc/
-
0755
rm
harfbuzz/
-
0755
rm
json-c/
-
0755
rm
kadm5/
-
0755
rm
krb5/
-
0755
rm
libexslt/
-
0755
rm
libltdl/
-
0755
rm
libmount/
-
0755
rm
libpng16/
-
0755
rm
libxml2/
-
0755
rm
libxslt/
-
0755
rm
linux/
-
0755
rm
lzma/
-
0755
rm
misc/
-
0755
rm
mtd/
-
0755
rm
mysql/
-
0755
rm
ncurses/
-
0755
rm
ncursesw/
-
0755
rm
net/
-
0755
rm
netash/
-
0755
rm
netatalk/
-
0755
rm
netax25/
-
0755
rm
neteconet/
-
0755
rm
netinet/
-
0755
rm
netipx/
-
0755
rm
netiucv/
-
0755
rm
netpacket/
-
0755
rm
netrom/
-
0755
rm
netrose/
-
0755
rm
nfs/
-
0755
rm
openssl/
-
0755
rm
pcp/
-
0755
rm
protobuf-c/
-
0755
rm
protocols/
-
0755
rm
python3.9/
-
0755
rm
rdma/
-
0755
rm
rpc/
-
0755
rm
scsi/
-
0755
rm
security/
-
0755
rm
selinux/
-
0755
rm
sepol/
-
0755
rm
sound/
-
0755
rm
sys/
-
0755
rm
sysprof-4/
-
0755
rm
unicode/
-
0755
rm
video/
-
0755
rm
webp/
-
0755
rm
X11/
-
0755
rm
xcb/
-
0755
rm
xen/
-
0755
rm
a.out.h
4351
0644
edit
dl
rm
aio.h
7738
0644
edit
dl
rm
aliases.h
2028
0644
edit
dl
rm
alloca.h
1203
0644
edit
dl
rm
ar.h
1731
0644
edit
dl
rm
argp.h
25548
0644
edit
dl
rm
argz.h
6051
0644
edit
dl
rm
assert.h
4562
0644
edit
dl
rm
autosprintf.h
2421
0644
edit
dl
rm
byteswap.h
1449
0644
edit
dl
rm
bzlib.h
6240
0644
edit
dl
rm
complex.h
8140
0644
edit
dl
rm
com_err.h
2118
0644
edit
dl
rm
cpio.h
2268
0644
edit
dl
rm
cpuidle.h
931
0644
edit
dl
rm
crypt.h
11160
0644
edit
dl
rm
ctype.h
10969
0644
edit
dl
rm
curses.h
99147
0644
edit
dl
rm
cursesapp.h
7230
0644
edit
dl
rm
cursesf.h
28029
0644
edit
dl
rm
cursesm.h
19908
0644
edit
dl
rm
cursesp.h
8751
0644
edit
dl
rm
cursesw.h
50306
0644
edit
dl
rm
cursslk.h
7321
0644
edit
dl
rm
dbm.h
1403
0644
edit
dl
rm
dirent.h
12617
0644
edit
dl
rm
dlfcn.h
8802
0644
edit
dl
rm
elf.h
182542
0644
edit
dl
rm
endian.h
2299
0644
edit
dl
rm
entities.h
4930
0644
edit
dl
rm
envz.h
2867
0644
edit
dl
rm
err.h
2341
0644
edit
dl
rm
errno.h
1679
0644
edit
dl
rm
error.h
2416
0644
edit
dl
rm
eti.h
2969
0644
edit
dl
rm
etip.h
9836
0644
edit
dl
rm
evdns.h
2019
0644
edit
dl
rm
event.h
2744
0644
edit
dl
rm
evhttp.h
2035
0644
edit
dl
rm
evrpc.h
2015
0644
edit
dl
rm
evutil.h
1782
0644
edit
dl
rm
execinfo.h
1523
0644
edit
dl
rm
expat.h
44273
0644
edit
dl
rm
expat_config.h
3910
0644
edit
dl
rm
expat_external.h
6029
0644
edit
dl
rm
fcntl.h
11442
0644
edit
dl
rm
features-time64.h
1404
0644
edit
dl
rm
features.h
18116
0644
edit
dl
rm
fenv.h
5788
0644
edit
dl
rm
ffi-x86_64.h
14209
0644
edit
dl
rm
ffi.h
556
0644
edit
dl
rm
ffitarget-x86_64.h
4741
0644
edit
dl
rm
ffitarget.h
616
0644
edit
dl
rm
FlexLexer.h
6893
0644
edit
dl
rm
fmtmsg.h
3240
0644
edit
dl
rm
fnmatch.h
2296
0644
edit
dl
rm
form.h
18900
0644
edit
dl
rm
fpu_control.h
3584
0644
edit
dl
rm
fstab.h
3111
0644
edit
dl
rm
fstrm.h
13017
0644
edit
dl
rm
fts.h
9579
0644
edit
dl
rm
ftw.h
6343
0644
edit
dl
rm
gconv.h
4211
0644
edit
dl
rm
gd.h
59643
0644
edit
dl
rm
gdbm.h
12181
0644
edit
dl
rm
gdcache.h
2994
0644
edit
dl
rm
gdfontg.h
553
0644
edit
dl
rm
gdfontl.h
551
0644
edit
dl
rm
gdfontmb.h
519
0644
edit
dl
rm
gdfonts.h
515
0644
edit
dl
rm
gdfontt.h
546
0644
edit
dl
rm
gdfx.h
496
0644
edit
dl
rm
gdpp.h
51947
0644
edit
dl
rm
gd_color_map.h
478
0644
edit
dl
rm
gd_errors.h
1503
0644
edit
dl
rm
gd_io.h
3002
0644
edit
dl
rm
getopt.h
1469
0644
edit
dl
rm
gettext-po.h
15548
0644
edit
dl
rm
glob.h
7299
0644
edit
dl
rm
gnu-versions.h
2343
0644
edit
dl
rm
gnumake.h
2912
0644
edit
dl
rm
gpg-error.h
73651
0644
edit
dl
rm
gpgrt.h
73651
0644
edit
dl
rm
grp.h
6687
0644
edit
dl
rm
gshadow.h
4529
0644
edit
dl
rm
gssapi.h
181
0644
edit
dl
rm
iconv.h
1858
0644
edit
dl
rm
idn-free.h
2618
0644
edit
dl
rm
idn-int.h
20
0644
edit
dl
rm
idna.h
3981
0644
edit
dl
rm
ieee754.h
4916
0644
edit
dl
rm
ifaddrs.h
2841
0644
edit
dl
rm
inttypes.h
8337
0644
edit
dl
rm
jconfig-64.h
2029
0644
edit
dl
rm
jconfig.h
246
0644
edit
dl
rm
jerror.h
15715
0644
edit
dl
rm
jmorecfg.h
14317
0644
edit
dl
rm
jpegint.h
15619
0644
edit
dl
rm
jpeglib.h
50281
0644
edit
dl
rm
kdb.h
64333
0644
edit
dl
rm
keyutils.h
11796
0644
edit
dl
rm
krad.h
8933
0644
edit
dl
rm
krb5.h
402
0644
edit
dl
rm
langinfo.h
17849
0644
edit
dl
rm
lastlog.h
126
0644
edit
dl
rm
libaio.h
8965
0644
edit
dl
rm
libgen.h
1386
0644
edit
dl
rm
libintl.h
4580
0644
edit
dl
rm
limits.h
5706
0644
edit
dl
rm
link.h
7801
0644
edit
dl
rm
lmdb.h
74014
0644
edit
dl
rm
locale.h
7675
0644
edit
dl
rm
ltdl.h
5709
0644
edit
dl
rm
lzma.h
9866
0644
edit
dl
rm
malloc.h
5912
0644
edit
dl
rm
math.h
48773
0644
edit
dl
rm
maxminddb.h
8543
0644
edit
dl
rm
maxminddb_config-64.h
504
0644
edit
dl
rm
maxminddb_config.h
178
0644
edit
dl
rm
mcheck.h
2435
0644
edit
dl
rm
memory.h
956
0644
edit
dl
rm
menu.h
11875
0644
edit
dl
rm
mntent.h
3359
0644
edit
dl
rm
monetary.h
1966
0644
edit
dl
rm
mqueue.h
4603
0644
edit
dl
rm
ncurses.h
99147
0644
edit
dl
rm
ncurses_dll.h
4043
0644
edit
dl
rm
nc_tparm.h
4777
0644
edit
dl
rm
ndbm.h
2443
0644
edit
dl
rm
netdb.h
28461
0644
edit
dl
rm
nl_types.h
1753
0644
edit
dl
rm
nss.h
14408
0644
edit
dl
rm
obstack.h
21307
0644
edit
dl
rm
panel.h
4512
0644
edit
dl
rm
paths.h
2977
0644
edit
dl
rm
pcre.h
31718
0644
edit
dl
rm
pcre2.h
47257
0644
edit
dl
rm
pcre2posix.h
6677
0644
edit
dl
rm
pcrecpp.h
26529
0644
edit
dl
rm
pcrecpparg.h
6783
0644
edit
dl
rm
pcreposix.h
5881
0644
edit
dl
rm
pcre_scanner.h
6600
0644
edit
dl
rm
pcre_stringpiece.h
6312
0644
edit
dl
rm
png.h
142860
0644
edit
dl
rm
pngconf.h
22846
0644
edit
dl
rm
pnglibconf.h
7605
0644
edit
dl
rm
poll.h
22
0644
edit
dl
rm
powercap.h
1660
0644
edit
dl
rm
pr29.h
2242
0644
edit
dl
rm
printf.h
6875
0644
edit
dl
rm
proc_service.h
3477
0644
edit
dl
rm
profile.h
12154
0644
edit
dl
rm
pthread.h
48524
0644
edit
dl
rm
pty.h
1570
0644
edit
dl
rm
punycode.h
9523
0644
edit
dl
rm
pwd.h
6317
0644
edit
dl
rm
regex.h
25904
0644
edit
dl
rm
regexp.h
1448
0644
edit
dl
rm
resolv.h
12387
0644
edit
dl
rm
re_comp.h
963
0644
edit
dl
rm
sched.h
5038
0644
edit
dl
rm
search.h
5450
0644
edit
dl
rm
semaphore.h
3464
0644
edit
dl
rm
setjmp.h
3190
0644
edit
dl
rm
sgtty.h
1344
0644
edit
dl
rm
shadow.h
5472
0644
edit
dl
rm
signal.h
13040
0644
edit
dl
rm
spawn.h
8297
0644
edit
dl
rm
stab.h
264
0644
edit
dl
rm
stdc-predef.h
2290
0644
edit
dl
rm
stdint.h
8474
0644
edit
dl
rm
stdio.h
31411
0644
edit
dl
rm
stdio_ext.h
2800
0644
edit
dl
rm
stdlib.h
36316
0644
edit
dl
rm
string.h
19459
0644
edit
dl
rm
stringprep.h
9758
0644
edit
dl
rm
strings.h
4753
0644
edit
dl
rm
syscall.h
25
0644
edit
dl
rm
sysexits.h
5232
0644
edit
dl
rm
syslog.h
24
0644
edit
dl
rm
tar.h
3786
0644
edit
dl
rm
term.h
41934
0644
edit
dl
rm
termcap.h
3474
0644
edit
dl
rm
termio.h
214
0644
edit
dl
rm
termios.h
3599
0644
edit
dl
rm
term_entry.h
9110
0644
edit
dl
rm
tgmath.h
40180
0644
edit
dl
rm
threads.h
7686
0644
edit
dl
rm
thread_db.h
16024
0644
edit
dl
rm
tic.h
14830
0644
edit
dl
rm
tiff.h
47444
0644
edit
dl
rm
tiffconf-64.h
3266
0644
edit
dl
rm
tiffconf.h
250
0644
edit
dl
rm
tiffio.h
24707
0644
edit
dl
rm
tiffio.hxx
1658
0644
edit
dl
rm
tiffvers.h
410
0644
edit
dl
rm
time.h
14848
0644
edit
dl
rm
tld.h
4963
0644
edit
dl
rm
ttyent.h
2494
0644
edit
dl
rm
uchar.h
2002
0644
edit
dl
rm
ucontext.h
2037
0644
edit
dl
rm
ulimit.h
1584
0644
edit
dl
rm
unctrl.h
3177
0644
edit
dl
rm
unistd.h
44489
0644
edit
dl
rm
utime.h
1905
0644
edit
dl
rm
utmp.h
3223
0644
edit
dl
rm
utmpx.h
4100
0644
edit
dl
rm
values.h
1956
0644
edit
dl
rm
verto-module.h
6640
0644
edit
dl
rm
verto.h
19437
0644
edit
dl
rm
wait.h
22
0644
edit
dl
rm
wchar.h
32142
0644
edit
dl
rm
wctype.h
5549
0644
edit
dl
rm
wordexp.h
2502
0644
edit
dl
rm
zconf.h
16262
0644
edit
dl
rm
zlib.h
96261
0644
edit
dl
rm
Edit:
/usr/include/verto.h
(19437B)
/* * Copyright 2011 Red Hat, Inc. * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation files * (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #ifndef VERTO_H_ #define VERTO_H_ #include <time.h> /* For time_t */ #include <unistd.h> /* For pid_t */ #ifdef WIN32 #include <windows.h> typedef HANDLE verto_proc; typedef DWORD verto_proc_status; #else #include <sys/types.h> typedef pid_t verto_proc; typedef int verto_proc_status; #endif #define VERTO_SIG_IGN ((verto_callback *) 1) #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct verto_ctx verto_ctx; typedef struct verto_ev verto_ev; typedef enum { VERTO_EV_TYPE_NONE = 0, VERTO_EV_TYPE_IO = 1, VERTO_EV_TYPE_TIMEOUT = 1 << 1, VERTO_EV_TYPE_IDLE = 1 << 2, VERTO_EV_TYPE_SIGNAL = 1 << 3, VERTO_EV_TYPE_CHILD = 1 << 4 } verto_ev_type; typedef enum { VERTO_EV_FLAG_NONE = 0, VERTO_EV_FLAG_PERSIST = 1, VERTO_EV_FLAG_PRIORITY_LOW = 1 << 1, VERTO_EV_FLAG_PRIORITY_MEDIUM = 1 << 2, VERTO_EV_FLAG_PRIORITY_HIGH = 1 << 3, VERTO_EV_FLAG_IO_READ = 1 << 4, VERTO_EV_FLAG_IO_WRITE = 1 << 5, VERTO_EV_FLAG_IO_ERROR = 1 << 7, VERTO_EV_FLAG_IO_CLOSE_FD = 1 << 8, VERTO_EV_FLAG_REINITIABLE = 1 << 6, _VERTO_EV_FLAG_MUTABLE_MASK = VERTO_EV_FLAG_PRIORITY_LOW | VERTO_EV_FLAG_PRIORITY_MEDIUM | VERTO_EV_FLAG_PRIORITY_HIGH | VERTO_EV_FLAG_IO_READ | VERTO_EV_FLAG_IO_WRITE, _VERTO_EV_FLAG_MAX = VERTO_EV_FLAG_IO_CLOSE_FD } verto_ev_flag; typedef void (verto_callback)(verto_ctx *ctx, verto_ev *ev); /** * Creates a new event context using an optionally specified implementation * and/or optionally specified required features. * * If you are an application that has already decided on using a particular * event loop implementation, you should not call this function, but instead * import the verto-NAME.h header and link against the verto-NAME.so, where * NAME is the implementation you wish to use. * * If you are a library, you should generally avoid creating event contexts * on your own but allow applications to pass in a verto_ctx you can use. * * There are two cases where you should use this function. The first is * where you have a need to choose an implementation at run time, usually * for testing purposes. The second and more common is when you simply * wish to remain implementation agnostic. In this later case, you should * always call like this: verto_new(NULL, ...). This lets verto choose the best * implementation to use. * * If impl is not NULL, a new context is returned which is backed by the * implementation specified. If the implementation specified is not * available or if the required types (reqtypes) are not provided by the * named implementation, NULL is returned. The parameter 'impl' can specify: * * The full path to an implementation library * * The name of the implementation library (i.e. - "glib" or "libev") * * If impl is NULL, verto will attempt to automatically determine the * best implementation to use. * * First, verto will attempt to use an existing, previously loaded * implementation. This is handled automatically by internal caching of either * the first implementation loaded or the one specified by verto_set_default(). * * Second, verto will attempt to discern if you are already linked to any * of the supported implementations (to avoid wasting memory by loading * extra unnecessary libraries). If you are linked to one supported * implementation, that implementation will be chosen. If you are linked * to more than one supported implementation one of the ones linked to * will be chosen, but the order of the particular choice is undefined. * * Third, verto will attempt to load the compile-time default, if defined at * build time and available at runtime. * * Last, verto will attempt to load any implementation installed. The specific * order of this step is undefined. * * In all cases above, if the implementation does not support all the specified * features (reqtypes), it will be skipped and processing will continue from * where it left off. This means that if verto_new() returns non-NULL it is * guaranteed to support the features you specified. * * @see verto_set_default() * @param impl The implementation to use, or NULL. * @param reqtypes A bitwise or'd list of required event type features. * @return A new verto_ctx, or NULL on error. Call verto_free() when done. */ verto_ctx * verto_new(const char *impl, verto_ev_type reqtypes); /** * Gets the default event context using an optionally specified implementation. * * This function is essentially a singleton version of verto_new(). However, * since this function must return the same loop as the *_default() call of * the underlying implementation (if such a function exists), it is NOT a * global singleton, but a per-implementation singleton. For this reason, you * must call verto_free() when you are done with this loop. Even after calling * verto_free() on the default verto_ctx, you can safely call verto_default() * again and receive a new reference to the same (internally default) loop. * * In all other respects, verto_default() acts exactly like verto_new(). * * @see verto_new() * @see verto_free() * @param impl The implementation to use, or NULL. * @param reqtypes A bitwise or'd list of required event type features. * @return The default verto_ctx, or NULL on error. Call verto_free() when done. */ verto_ctx * verto_default(const char *impl, verto_ev_type reqtypes); /** * Sets the default implementation to use by its name. * * This function returns 1 on success and 0 on failure. It can fail for the * following reasons: * 1. The default implementation was already set via verto_set_default(). * 2. The implementation specified could not be found. * 3. The implementation specified didn't support the features specified. * 4. The impl argument was NULL. * 5. verto_new() was already called. * 6. verto_default() was already called. * 7. verto_new_NAME() was already called. * 8. verto_default_NAME() was already called. * 9. verto_convert_NAME() was already called. * * @see verto_new() * @see verto_default() * @param impl The implementation to use. * @param reqtypes A bitwise or'd list of required event type features. * @return The default verto_ctx, or NULL on error. Call verto_free() when done. */ int verto_set_default(const char *impl, verto_ev_type reqtypes); /** * Sets the allocator to use for verto_ctx and verto_ev objects. * * If you plan to set the allocator, you MUST call this function before any * other verto_*() calls. * * @see verto_new() * @see verto_default() * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param resize The allocator to use (behaves like realloc(); * resize(ptr, 0) must free memory at ptr.) * @param hierarchical Zero if the allocator is not hierarchical */ int verto_set_allocator(void *(*resize)(void *mem, size_t size), int hierarchical); /** * Frees a verto_ctx. * * When called on a default verto_ctx, the reference will be freed but the * internal default loop will still be available via another call to * verto_default(). * * @see verto_new() * @see verto_default() * @param ctx The verto_ctx to free. */ void verto_free(verto_ctx *ctx); /** * Frees global state. * * Remove and free all allocated global state. Call only when no further * contexts exist and all threads have exited. * * @see verto_new() * @see verto_free() * @see verto_default() */ void verto_cleanup(void); /** * Run the verto_ctx forever, or at least until verto_break() is called. * * @see verto_break() * @param ctx The verto_ctx to run. */ void verto_run(verto_ctx *ctx); /** * Run the verto_ctx once. May block. * * @param ctx The verto_ctx to run once. */ void verto_run_once(verto_ctx *ctx); /** * Exits the currently running verto_ctx. * * @see verto_run() * @param ctx The verto_ctx to exit. */ void verto_break(verto_ctx *ctx); /** * Re-initializes the verto_ctx. * * This function deletes all events, except those which have set the * VERTO_EV_FLAG_REINITIABLE flag. If you fork(), you MUST call this in the * child process after the fork! * * If this function fails it indicates that at least one * VERTO_EV_FLAG_REINITIABLE event was not rearmed or that ctx was NULL. * * @see verto_new() * @see verto_default() * @param ctx The verto_ctx to re-initialize. * @return Non-zero on success, 0 on error. */ int verto_reinitialize(verto_ctx *ctx); /** * Adds a callback executed when a file descriptor is ready to be read/written. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * If VERTO_EV_FLAG_IO_CLOSE_FD is provided the passed in fd is automatically * closed when the event is freed with verto_del() * * NOTE: On Windows, the underlying select() only works with sockets. As such, * any attempt to add a non-socket io event on Windows will produce undefined * results and may even crash. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set (at least one VERTO_EV_FLAG_IO* required). * @param callback The callback to fire. * @param fd The file descriptor to watch for reads. * @return The verto_ev registered with the event context or NULL on error. */ verto_ev * verto_add_io(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, int fd); /** * Adds a callback executed after a period of time. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param interval Time period to wait before firing (in milliseconds). * @return The verto_ev registered with the event context. */ verto_ev * verto_add_timeout(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, time_t interval); /** * Adds a callback executed when there is nothing else to do. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_idle(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback); /** * Adds a callback executed when a signal is received. * * All verto_ev events are automatically freed when their parent verto_ctx is * freed. You do not need to free them manually. If VERTO_EV_FLAG_PERSIST is * provided, the event will repeat until verto_del() is called. If * VERTO_EV_FLAG_PERSIST is not provided, the event will be freed automatically * after its execution. In either case, you may call verto_del() at any time * to prevent the event from executing. * * NOTE: If you attempt to ignore a signal without the VERTO_EV_FLAG_PERSIST * flag, this function fails. * * NOTE: SIGCHLD is expressly not supported. If you want this notification, * please use verto_add_child(). * * WARNNIG: Signal events can only be reliably received in the default verto_ctx * in some implementations. Attempting to receive signal events in non-default * loops may result in assert() failures. * * WARNING: While verto does its best to protect you from crashes, there is * essentially no way to do signal events if you mix multiple implementations in * a single process. Attempting to do so will result in undefined behavior, * and potentially even a crash. You have been warned. * * @see verto_add_child() * @see verto_repeat() * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param signal The signal to watch for. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_signal(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, int signal); /** * Adds a callback executed when a child process exits. * * This event will be freed automatically after its execution. Due to the * nature of a process' life-cycle, child events cannot persist (processes only * exit once). This function returns NULL if you attempt to use * VERTO_EV_FLAG_PERSIST. You may, of course, call verto_del() at any time to * prevent the callback from firing. * * @see verto_del() * @param ctx The verto_ctx which will fire the callback. * @param flags The flags to set. * @param callback The callback to fire. * @param child The pid (POSIX) or handle (Win32) of the child to watch for. * @return The verto_ev registered with the event context. */ verto_ev * verto_add_child(verto_ctx *ctx, verto_ev_flag flags, verto_callback *callback, verto_proc proc); /** * Sets the private pointer of the verto_ev. * * The free callback will be called in two cases: * 1. When the event is deleted (manually or automatically) * 2. When verto_set_private() is called again, unless * free is NULL. * * @see verto_get_private() * @param ev The verto_ev * @param priv The private value to store * @param free The callback used to free the data or NULL */ void verto_set_private(verto_ev *ev, void *priv, verto_callback *free); /** * Gets the private pointer of the verto_ev. * * @see verto_set_private() * @param ev The verto_ev * @return The verto_ev private pointer */ void * verto_get_private(const verto_ev *ev); /** * Gets the type of the verto_ev. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param ev The verto_ev * @return The verto_ev type */ verto_ev_type verto_get_type(const verto_ev *ev); /** * Gets the flags associated with the given verto_ev. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @see verto_set_flags() * @param ev The verto_ev * @return The verto_ev type */ verto_ev_flag verto_get_flags(const verto_ev *ev); /** * Sets the flags associated with the given verto_ev. * * See _VERTO_EV_FLAG_MUTABLE_MASK for the flags that can be changed * with this function. All others will be ignored. If the flags specified * are the same as the flags the event already has, this function is a no-op. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @see verto_get_flags() * @param ev The verto_ev * @param flags The flags for the event */ void verto_set_flags(verto_ev *ev, verto_ev_flag flags); /** * Gets the file descriptor associated with a read/write verto_ev. * * @see verto_add_io() * @param ev The verto_ev to retrieve the file descriptor from. * @return The file descriptor, or -1 if not a read/write event. */ int verto_get_fd(const verto_ev *ev); /** * Gets the file descriptor state from when the event fires. * * @see verto_add_io() * @param ev The verto_ev to retrieve the fd state from. * @return The fd state. */ verto_ev_flag verto_get_fd_state(const verto_ev *ev); /** * Gets the interval associated with a timeout verto_ev. * * @see verto_add_timeout() * @param ev The verto_ev to retrieve the interval from. * @return The interval, or 0 if not a timeout event. */ time_t verto_get_interval(const verto_ev *ev); /** * Gets the signal associated with a signal verto_ev. * * @see verto_add_signal() * @param ev The verto_ev to retrieve the signal from. * @return The signal, or -1 if not a signal event. */ int verto_get_signal(const verto_ev *ev); /** * Gets the process associated with a child verto_ev. * * @see verto_add_child() * @param ev The verto_ev to retrieve the process from. * @return The pid/handle, or 0/NULL if not a child event (POSIX/Win32). */ verto_proc verto_get_proc(const verto_ev *ev); /** * Gets the status of the process which caused this event to fire. * * @see verto_add_child() * @param ev The verto_ev to retrieve the status from. * @return The pid/handle status. */ verto_proc_status verto_get_proc_status(const verto_ev *ev); /** * Gets the verto_ctx associated with a verto_ev. * * This is a borrowed reference, don't attempt to free it! * * @param ev The verto_ev to retrieve the verto_ctx from. * @return The verto_ctx. */ verto_ctx * verto_get_ctx(const verto_ev *ev); /** * Removes an event from from the event context and frees it. * * The event and its contents cannot be used after this call. * * @see verto_add_io() * @see verto_add_timeout() * @see verto_add_idle() * @see verto_add_signal() * @see verto_add_child() * @param ev The event to delete. */ void verto_del(verto_ev *ev); /** * Returns the event types supported by this implementation. * * @param ctx The verto_ctx to query. * @return The event types supported. */ verto_ev_type verto_get_supported_types(verto_ctx *ctx); #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */ #endif /* VERTO_H_ */
Save
cmd:
run