Current Path: > > usr > include > >
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
GL | Directory | - | - | |
X11 | Directory | - | - | |
apache2 | Directory | - | - | |
arpa | Directory | - | - | |
asm | Directory | - | - | |
asm-generic | Directory | - | - | |
bind9 | Directory | - | - | |
bits | Directory | - | - | |
bsock | Directory | - | - | |
c++ | Directory | - | - | |
criu | Directory | - | - | |
curl | Directory | - | - | |
drm | Directory | - | - | |
e2p | Directory | - | - | |
et | Directory | - | - | |
event2 | Directory | - | - | |
ext2fs | Directory | - | - | |
finclude | Directory | - | - | |
fontconfig | Directory | - | - | |
freetype2 | Directory | - | - | |
fstrm | Directory | - | - | |
gdb | Directory | - | - | |
gdbm | Directory | - | - | |
gnu | Directory | - | - | |
Directory | - | - | ||
gssapi | Directory | - | - | |
gssrpc | Directory | - | - | |
jemalloc | Directory | - | - | |
json-c | Directory | - | - | |
kadm5 | Directory | - | - | |
krb5 | Directory | - | - | |
libdb | Directory | - | - | |
libexslt | Directory | - | - | |
libltdl | Directory | - | - | |
libpng16 | Directory | - | - | |
libxml2 | Directory | - | - | |
libxslt | Directory | - | - | |
linux | Directory | - | - | |
lua-5.1 | Directory | - | - | |
lzma | Directory | - | - | |
misc | Directory | - | - | |
mtd | Directory | - | - | |
mysql | Directory | - | - | |
ncurses | Directory | - | - | |
ncursesw | Directory | - | - | |
net | Directory | - | - | |
netash | Directory | - | - | |
netatalk | Directory | - | - | |
netax25 | Directory | - | - | |
neteconet | Directory | - | - | |
netinet | Directory | - | - | |
netipx | Directory | - | - | |
netiucv | Directory | - | - | |
netpacket | Directory | - | - | |
netrom | Directory | - | - | |
netrose | Directory | - | - | |
nfs | Directory | - | - | |
openssl | Directory | - | - | |
perf | Directory | - | - | |
protobuf-c | Directory | - | - | |
protocols | Directory | - | - | |
python2.7 | Directory | - | - | |
python3.6m | Directory | - | - | |
python3.8 | Directory | - | - | |
rdma | Directory | - | - | |
rpc | Directory | - | - | |
sasl | Directory | - | - | |
scsi | Directory | - | - | |
security | Directory | - | - | |
selinux | Directory | - | - | |
sepol | Directory | - | - | |
sound | Directory | - | - | |
sys | Directory | - | - | |
uuid | Directory | - | - | |
video | Directory | - | - | |
webp | Directory | - | - | |
xcb | Directory | - | - | |
xen | Directory | - | - | |
FlexLexer.h | File | 6893 bytes | October 12 2019 12:33:17. | |
a.out.h | File | 4350 bytes | June 09 2025 20:25:26. | |
aio.h | File | 7456 bytes | June 09 2025 20:25:38. | |
aliases.h | File | 2031 bytes | June 09 2025 20:25:38. | |
alloca.h | File | 1203 bytes | June 09 2025 20:25:24. | |
ar.h | File | 1730 bytes | June 09 2025 20:25:26. | |
argp.h | File | 25414 bytes | June 09 2025 20:25:38. | |
argz.h | File | 6050 bytes | June 09 2025 20:25:25. | |
assert.h | File | 4561 bytes | June 09 2025 20:25:22. | |
autosprintf.h | File | 2383 bytes | November 18 2019 17:16:51. | |
byteswap.h | File | 1404 bytes | June 09 2025 20:25:25. | |
bzlib.h | File | 6245 bytes | September 10 2010 23:08:42. | |
com_err.h | File | 2118 bytes | March 21 2020 04:24:04. | |
complex.h | File | 7163 bytes | June 09 2025 20:25:23. | |
cpio.h | File | 2267 bytes | June 09 2025 20:25:25. | |
cpuidle.h | File | 844 bytes | July 04 2025 12:30:10. | |
crypt.h | File | 9118 bytes | October 09 2021 04:04:04. | |
ctype.h | File | 10963 bytes | June 09 2025 20:25:22. | |
curses.h | File | 99625 bytes | October 14 2023 18:54:42. | |
cursesapp.h | File | 6775 bytes | October 14 2023 18:54:42. | |
cursesf.h | File | 27849 bytes | October 14 2023 18:54:42. | |
cursesm.h | File | 19677 bytes | October 14 2023 18:54:42. | |
cursesp.h | File | 8601 bytes | October 14 2023 18:54:42. | |
cursesw.h | File | 49719 bytes | October 14 2023 18:54:42. | |
cursslk.h | File | 7304 bytes | October 14 2023 18:54:42. | |
db.h | File | 123105 bytes | September 21 2021 16:29:14. | |
db_185.h | File | 5983 bytes | September 21 2021 16:29:14. | |
dbm.h | File | 1414 bytes | October 08 2022 13:22:08. | |
dirent.h | File | 12484 bytes | June 09 2025 20:25:25. | |
dlfcn.h | File | 7238 bytes | June 09 2025 20:25:24. | |
elf.h | File | 174828 bytes | June 09 2025 20:25:40. | |
endian.h | File | 3189 bytes | June 09 2025 20:25:25. | |
entities.h | File | 4930 bytes | August 30 2017 11:05:54. | |
envz.h | File | 2866 bytes | June 09 2025 20:25:25. | |
err.h | File | 2209 bytes | June 09 2025 20:25:26. | |
errno.h | File | 1678 bytes | June 09 2025 20:25:24. | |
error.h | File | 2039 bytes | June 09 2025 20:25:26. | |
eti.h | File | 2891 bytes | October 14 2023 18:54:42. | |
etip.h | File | 9702 bytes | October 14 2023 18:54:42. | |
evdns.h | File | 2019 bytes | October 12 2019 00:29:31. | |
event.h | File | 2744 bytes | October 12 2019 00:29:31. | |
evhttp.h | File | 2035 bytes | October 12 2019 00:29:31. | |
evrpc.h | File | 2015 bytes | October 12 2019 00:29:31. | |
evutil.h | File | 1782 bytes | October 12 2019 00:29:31. | |
execinfo.h | File | 1522 bytes | June 09 2025 20:25:38. | |
expat.h | File | 43680 bytes | April 15 2025 19:58:56. | |
expat_config.h | File | 3517 bytes | April 15 2025 19:58:56. | |
expat_external.h | File | 5532 bytes | April 15 2025 19:58:56. | |
fcntl.h | File | 10958 bytes | June 09 2025 20:25:26. | |
features.h | File | 16062 bytes | June 09 2025 20:25:19. | |
fenv.h | File | 5857 bytes | June 09 2025 20:25:23. | |
fmtmsg.h | File | 3239 bytes | June 09 2025 20:25:24. | |
fnmatch.h | File | 2295 bytes | June 09 2025 20:25:25. | |
form.h | File | 18601 bytes | October 14 2023 18:54:42. | |
fpu_control.h | File | 3583 bytes | June 09 2025 20:25:23. | |
fstab.h | File | 3111 bytes | June 09 2025 20:25:26. | |
fstrm.h | File | 13017 bytes | March 11 2019 20:58:34. | |
fts.h | File | 8372 bytes | June 09 2025 20:25:26. | |
ftw.h | File | 5251 bytes | June 09 2025 20:25:26. | |
gconv.h | File | 4410 bytes | June 09 2025 20:25:19. | |
gcrypt.h | File | 70361 bytes | June 28 2022 11:54:07. | |
gd.h | File | 57777 bytes | August 30 2017 11:05:54. | |
gd_color_map.h | File | 478 bytes | August 30 2017 11:05:54. | |
gd_errors.h | File | 1503 bytes | August 30 2017 11:05:54. | |
gd_io.h | File | 3125 bytes | August 30 2017 11:05:54. | |
gdbm.h | File | 10345 bytes | October 08 2022 13:22:07. | |
gdcache.h | File | 2898 bytes | August 30 2017 11:05:54. | |
gdfontg.h | File | 553 bytes | August 30 2017 11:05:54. | |
gdfontl.h | File | 551 bytes | August 30 2017 11:05:54. | |
gdfontmb.h | File | 519 bytes | August 30 2017 11:05:54. | |
gdfonts.h | File | 515 bytes | August 30 2017 11:05:54. | |
gdfontt.h | File | 546 bytes | August 30 2017 11:05:54. | |
gdfx.h | File | 497 bytes | August 30 2017 11:05:54. | |
gdpp.h | File | 52162 bytes | August 30 2017 11:05:54. | |
getopt.h | File | 1468 bytes | June 09 2025 20:25:25. | |
gettext-po.h | File | 15534 bytes | November 18 2019 17:17:03. | |
glob.h | File | 6614 bytes | June 09 2025 20:25:25. | |
gnu-versions.h | File | 2342 bytes | June 09 2025 20:25:19. | |
gnumake.h | File | 2912 bytes | April 18 2022 16:38:33. | |
gpg-error.h | File | 67879 bytes | October 12 2019 12:20:46. | |
gpgrt.h | File | 67879 bytes | October 12 2019 12:20:46. | |
grp.h | File | 6686 bytes | June 09 2025 20:25:25. | |
gshadow.h | File | 4528 bytes | June 09 2025 20:25:37. | |
gssapi.h | File | 181 bytes | June 03 2025 02:06:27. | |
iconv.h | File | 1857 bytes | June 09 2025 20:25:19. | |
idn-free.h | File | 2472 bytes | October 13 2019 16:55:34. | |
idn-int.h | File | 20 bytes | October 13 2019 16:55:34. | |
idna.h | File | 3564 bytes | October 13 2019 16:55:34. | |
ieee754.h | File | 4910 bytes | June 09 2025 20:25:23. | |
ifaddrs.h | File | 2840 bytes | June 09 2025 20:25:38. | |
inttypes.h | File | 11892 bytes | June 09 2025 20:25:24. | |
jconfig-64.h | File | 2225 bytes | May 14 2025 12:43:01. | |
jconfig.h | File | 246 bytes | May 14 2025 12:43:01. | |
jerror.h | File | 15088 bytes | May 14 2025 12:43:01. | |
jmorecfg.h | File | 15049 bytes | May 14 2025 12:43:01. | |
jpegint.h | File | 15586 bytes | May 14 2025 12:43:01. | |
jpeglib.h | File | 49875 bytes | May 14 2025 12:43:01. | |
kdb.h | File | 69285 bytes | June 03 2025 02:06:27. | |
keyutils.h | File | 7698 bytes | October 08 2021 13:50:54. | |
krad.h | File | 8933 bytes | June 03 2025 02:06:27. | |
krb5.h | File | 402 bytes | June 03 2025 02:06:27. | |
langinfo.h | File | 17848 bytes | June 09 2025 20:25:19. | |
lastlog.h | File | 126 bytes | June 09 2025 20:25:40. | |
lber.h | File | 15311 bytes | March 11 2025 09:44:02. | |
lber_types.h | File | 1468 bytes | March 11 2025 09:44:02. | |
ldap.h | File | 65096 bytes | March 11 2025 09:44:02. | |
ldap_cdefs.h | File | 9466 bytes | March 11 2025 09:44:02. | |
ldap_features.h | File | 1814 bytes | March 11 2025 09:44:03. | |
ldap_schema.h | File | 9450 bytes | March 11 2025 09:44:02. | |
ldap_utf8.h | File | 3468 bytes | March 11 2025 09:44:02. | |
ldif.h | File | 4692 bytes | March 11 2025 09:44:03. | |
libaio.h | File | 8937 bytes | November 13 2019 13:59:49. | |
libgen.h | File | 1385 bytes | June 09 2025 20:25:26. | |
libintl.h | File | 4579 bytes | June 09 2025 20:25:22. | |
limits.h | File | 5412 bytes | June 09 2025 20:25:19. | |
link.h | File | 7218 bytes | June 09 2025 20:25:40. | |
locale.h | File | 7674 bytes | June 09 2025 20:25:19. | |
ltdl.h | File | 5709 bytes | October 11 2019 14:55:29. | |
lzma.h | File | 9817 bytes | April 29 2018 15:10:38. | |
magic.h | File | 5588 bytes | April 06 2024 14:44:54. | |
malloc.h | File | 6102 bytes | June 09 2025 20:25:25. | |
math.h | File | 53318 bytes | June 09 2025 20:25:23. | |
mcheck.h | File | 2434 bytes | June 09 2025 20:25:25. | |
memory.h | File | 955 bytes | June 09 2025 20:25:25. | |
menu.h | File | 12197 bytes | October 14 2023 18:54:42. | |
mntent.h | File | 3358 bytes | June 09 2025 20:25:26. | |
monetary.h | File | 1803 bytes | June 09 2025 20:25:24. | |
mqueue.h | File | 3759 bytes | June 09 2025 20:25:38. | |
nc_tparm.h | File | 4197 bytes | October 14 2023 18:54:42. | |
ncurses.h | File | 99625 bytes | October 14 2023 18:54:42. | |
ncurses_dll.h | File | 4277 bytes | October 14 2023 18:54:42. | |
ndbm.h | File | 2454 bytes | October 08 2022 13:22:08. | |
netdb.h | File | 28099 bytes | June 09 2025 20:25:39. | |
nl_types.h | File | 1752 bytes | June 09 2025 20:25:23. | |
nss.h | File | 1878 bytes | June 09 2025 20:25:39. | |
obstack.h | File | 21306 bytes | June 09 2025 20:25:25. | |
panel.h | File | 4123 bytes | October 14 2023 18:54:42. | |
paths.h | File | 2977 bytes | June 09 2025 20:25:26. | |
pcre.h | File | 31718 bytes | October 08 2021 19:17:42. | |
pcre2.h | File | 44802 bytes | August 02 2022 16:07:28. | |
pcre2posix.h | File | 5804 bytes | August 02 2022 16:07:28. | |
pcre_scanner.h | File | 6600 bytes | October 08 2021 19:17:42. | |
pcre_stringpiece.h | File | 6312 bytes | October 08 2021 19:17:42. | |
pcrecpp.h | File | 26529 bytes | October 08 2021 19:17:42. | |
pcrecpparg.h | File | 6783 bytes | October 08 2021 19:17:42. | |
pcreposix.h | File | 5452 bytes | October 08 2021 19:17:42. | |
png.h | File | 144149 bytes | October 12 2019 00:44:13. | |
pngconf.h | File | 22845 bytes | October 12 2019 00:44:13. | |
pnglibconf.h | File | 7567 bytes | October 12 2019 00:44:13. | |
poll.h | File | 22 bytes | June 09 2025 20:25:26. | |
pr29.h | File | 2123 bytes | October 13 2019 16:55:34. | |
printf.h | File | 6800 bytes | June 09 2025 20:25:24. | |
proc_service.h | File | 3476 bytes | June 09 2025 20:25:38. | |
profile.h | File | 12154 bytes | June 03 2025 02:06:27. | |
pthread.h | File | 41269 bytes | June 09 2025 20:25:25. | |
pty.h | File | 1569 bytes | June 09 2025 20:25:40. | |
punycode.h | File | 9384 bytes | October 13 2019 16:55:34. | |
pwd.h | File | 6158 bytes | June 09 2025 20:25:25. | |
re_comp.h | File | 962 bytes | June 09 2025 20:25:25. | |
regex.h | File | 24715 bytes | June 09 2025 20:25:25. | |
regexp.h | File | 1447 bytes | June 09 2025 20:25:26. | |
resolv.h | File | 12077 bytes | June 09 2025 20:25:39. | |
sched.h | File | 4732 bytes | June 09 2025 20:25:25. | |
search.h | File | 5223 bytes | June 09 2025 20:25:26. | |
semaphore.h | File | 2399 bytes | June 09 2025 20:25:25. | |
setjmp.h | File | 3669 bytes | June 09 2025 20:25:24. | |
sgtty.h | File | 1343 bytes | June 09 2025 20:25:26. | |
shadow.h | File | 5471 bytes | June 09 2025 20:25:37. | |
signal.h | File | 12243 bytes | June 09 2025 20:25:24. | |
slapi-plugin.h | File | 38351 bytes | March 11 2025 09:44:03. | |
spawn.h | File | 6690 bytes | June 09 2025 20:25:25. | |
stab.h | File | 264 bytes | June 09 2025 20:25:26. | |
stdc-predef.h | File | 2289 bytes | June 09 2025 20:25:19. | |
stdint.h | File | 8469 bytes | June 09 2025 20:25:24. | |
stdio.h | File | 30168 bytes | June 09 2025 20:25:24. | |
stdio_ext.h | File | 2799 bytes | June 09 2025 20:25:24. | |
stdlib.h | File | 35653 bytes | June 09 2025 20:25:24. | |
string.h | File | 17587 bytes | June 09 2025 20:25:25. | |
stringprep.h | File | 8227 bytes | October 13 2019 16:55:34. | |
strings.h | File | 4752 bytes | June 09 2025 20:25:25. | |
syscall.h | File | 25 bytes | June 09 2025 20:25:26. | |
sysexits.h | File | 5232 bytes | June 09 2025 20:25:26. | |
syslog.h | File | 24 bytes | June 09 2025 20:25:26. | |
tar.h | File | 3785 bytes | June 09 2025 20:25:25. | |
term.h | File | 41190 bytes | October 14 2023 18:54:42. | |
term_entry.h | File | 8760 bytes | October 14 2023 18:54:42. | |
termcap.h | File | 3473 bytes | October 14 2023 18:54:42. | |
termio.h | File | 214 bytes | June 09 2025 20:25:26. | |
termios.h | File | 3598 bytes | June 09 2025 20:25:26. | |
tgmath.h | File | 31489 bytes | June 09 2025 20:25:23. | |
thread_db.h | File | 16023 bytes | June 09 2025 20:25:38. | |
threads.h | File | 6655 bytes | June 09 2025 20:25:25. | |
tic.h | File | 13638 bytes | October 14 2023 18:54:42. | |
tiff.h | File | 35983 bytes | May 07 2025 13:34:34. | |
tiffconf-64.h | File | 3429 bytes | May 07 2025 13:34:34. | |
tiffconf.h | File | 250 bytes | May 07 2025 13:34:35. | |
tiffio.h | File | 23227 bytes | May 07 2025 13:34:34. | |
tiffio.hxx | File | 1702 bytes | May 07 2025 13:34:34. | |
tiffvers.h | File | 410 bytes | May 07 2025 13:34:34. | |
time.h | File | 10360 bytes | June 09 2025 20:25:25. | |
tld.h | File | 4650 bytes | October 13 2019 16:55:34. | |
ttyent.h | File | 2494 bytes | June 09 2025 20:25:26. | |
uchar.h | File | 2001 bytes | June 09 2025 20:25:25. | |
ucontext.h | File | 2036 bytes | June 09 2025 20:25:24. | |
ulimit.h | File | 1583 bytes | June 09 2025 20:25:26. | |
unctrl.h | File | 3099 bytes | October 14 2023 18:54:42. | |
unistd.h | File | 42738 bytes | June 09 2025 20:25:25. | |
utime.h | File | 1501 bytes | June 09 2025 20:25:26. | |
utmp.h | File | 3222 bytes | June 09 2025 20:25:40. | |
utmpx.h | File | 4099 bytes | June 09 2025 20:25:40. | |
values.h | File | 1955 bytes | June 09 2025 20:25:19. | |
verto-module.h | File | 6640 bytes | October 08 2022 07:49:42. | |
verto.h | File | 19437 bytes | October 08 2022 07:49:42. | |
wait.h | File | 22 bytes | June 09 2025 20:25:25. | |
wchar.h | File | 31111 bytes | June 09 2025 20:25:25. | |
wctype.h | File | 5548 bytes | June 09 2025 20:25:26. | |
wordexp.h | File | 2501 bytes | June 09 2025 20:25:25. | |
zconf.h | File | 16262 bytes | October 11 2023 22:02:25. | |
zlib.h | File | 96261 bytes | October 11 2023 22:02:25. |
/* * 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_ */
SILENT KILLER Tool