003 File Manager
Current Path:
/usr/local/lib/perl5/site_perl/mach/5.32
usr
/
local
/
lib
/
perl5
/
site_perl
/
mach
/
5.32
/
📁
..
📄
Block.ph
(735 B)
📄
Block_private.ph
(1.67 KB)
📄
FlexLexer.ph
(326 B)
📄
_ctype.ph
(3.81 KB)
📄
_h2ph_pre.ph
(1011 B)
📄
_semaphore.ph
(285 B)
📄
a.out.ph
(399 B)
📄
aio.ph
(2.17 KB)
📄
alias.ph
(1.92 KB)
📄
ar.ph
(540 B)
📄
archive.ph
(13.71 KB)
📄
archive_entry.ph
(11.06 KB)
📄
asn1-common.ph
(1.02 KB)
📄
asn1_err.ph
(2.11 KB)
📄
assert.ph
(946 B)
📄
atf-c.ph
(235 B)
📁
auto
📄
base64.ph
(554 B)
📄
be.ph
(2.32 KB)
📄
bitstring.ph
(248 B)
📄
blacklist.ph
(614 B)
📄
bluetooth.ph
(2.62 KB)
📄
bsdxml.ph
(7.69 KB)
📄
bsdxml_external.ph
(2.78 KB)
📄
bzlib.ph
(2.35 KB)
📄
calendar.ph
(60 B)
📄
camlib.ph
(414 B)
📄
capsicum_helpers.ph
(3.87 KB)
📄
cms_asn1.ph
(2.68 KB)
📄
com_err.ph
(383 B)
📄
com_right.ph
(1.18 KB)
📄
complex.ph
(1.47 KB)
📄
cpio.ph
(1.44 KB)
📄
crmf_asn1.ph
(2.79 KB)
📄
ctype.ph
(3.71 KB)
📄
curses.ph
(72.16 KB)
📄
cuse.ph
(262 B)
📄
db.ph
(3.65 KB)
📄
der-private.ph
(202 B)
📄
der-protos.ph
(275 B)
📄
der.ph
(2.78 KB)
📄
devctl.ph
(188 B)
📄
devinfo.ph
(368 B)
📄
devstat.ph
(5.12 KB)
📄
dialog.ph
(23.7 KB)
📄
digest_asn1.ph
(2.45 KB)
📄
dirent.ph
(1.94 KB)
📄
dlfcn.ph
(1.61 KB)
📄
dlg_colors.ph
(10.44 KB)
📄
dlg_config.ph
(6.75 KB)
📄
dlg_keys.ph
(6.27 KB)
📄
dpv.ph
(2.34 KB)
📄
dtrace.ph
(7.23 KB)
📄
dwarf.ph
(44.77 KB)
📄
efivar-dp.ph
(165 B)
📄
efivar.ph
(2.08 KB)
📄
elf-hints.ph
(343 B)
📄
elf.ph
(261 B)
📄
err.ph
(204 B)
📄
errno.ph
(6.93 KB)
📄
eti.ph
(1.21 KB)
📄
execinfo.ph
(187 B)
📄
fcntl.ph
(9.1 KB)
📄
fenv.ph
(2.85 KB)
📄
fetch.ph
(2.01 KB)
📄
figpar.ph
(1.63 KB)
📄
float.ph
(84 B)
📄
floatingpoint.ph
(238 B)
📄
fmtmsg.ph
(1.64 KB)
📄
fmtutils.ph
(298 B)
📄
fnmatch.ph
(949 B)
📄
form.ph
(7.62 KB)
📄
fstab.ph
(631 B)
📄
fts.ph
(2.64 KB)
📄
ftw.ph
(834 B)
📄
gelf.ph
(1.3 KB)
📄
getarg.ph
(1.33 KB)
📄
getopt.ph
(647 B)
📄
glob.ph
(1.76 KB)
📄
grp.ph
(984 B)
📄
gssapi.ph
(230 B)
📄
hdb-protos.ph
(275 B)
📄
hdb.ph
(2.07 KB)
📄
hdb_asn1.ph
(2.42 KB)
📄
hdb_err.ph
(1.77 KB)
📄
heim_asn1.ph
(168 B)
📄
heim_err.ph
(3.06 KB)
📄
heim_threads.ph
(10.51 KB)
📄
heimbase.ph
(1.4 KB)
📄
heimntlm-protos.ph
(290 B)
📄
heimntlm.ph
(2.96 KB)
📄
hex.ph
(708 B)
📄
histedit.ph
(4.41 KB)
📄
hx509-private.ph
(373 B)
📄
hx509-protos.ph
(954 B)
📄
hx509.ph
(4.68 KB)
📄
hx509_err.ph
(7.52 KB)
📄
iconv.ph
(1.25 KB)
📄
ieeefp.ph
(217 B)
📄
ifaddrs.ph
(309 B)
📄
inttypes.ph
(460 B)
📄
iso646.ph
(745 B)
📄
jail.ph
(475 B)
📄
k524_err.ph
(1.13 KB)
📄
kafs.ph
(6.79 KB)
📄
kdc-protos.ph
(275 B)
📄
kdc.ph
(647 B)
📄
kenv.ph
(205 B)
📄
krb5-private.ph
(1.11 KB)
📄
krb5-protos.ph
(1.66 KB)
📄
krb5-types.ph
(2.39 KB)
📄
krb5.ph
(24.35 KB)
📄
krb5_asn1.ph
(15.94 KB)
📄
krb5_ccapi.ph
(4.22 KB)
📄
krb5_err.ph
(18.17 KB)
📄
kvm.ph
(802 B)
📄
kx509_asn1.ph
(1.75 KB)
📄
langinfo.ph
(4.64 KB)
📄
libcasper.ph
(4.3 KB)
📄
libcasper_service.ph
(963 B)
📄
libdwarf.ph
(14.36 KB)
📄
libelf.ph
(4.94 KB)
📄
libgen.ph
(561 B)
📄
libgeom.ph
(670 B)
📄
libgpio.ph
(524 B)
📄
libnetmap.ph
(1009 B)
📄
libproc.ph
(3.07 KB)
📄
libprocstat.ph
(3.91 KB)
📄
librss.ph
(622 B)
📄
libufs.ph
(577 B)
📄
libusb.ph
(14.17 KB)
📄
libusb20.ph
(4.09 KB)
📄
libusb20_desc.ph
(18.86 KB)
📄
libutil.ph
(3.45 KB)
📄
libzfs.ph
(12.71 KB)
📄
libzfs_core.ph
(986 B)
📄
libzfsbootenv.ph
(382 B)
📄
limits.ph
(6.45 KB)
📄
link.ph
(87 B)
📄
linker_set.ph
(2.81 KB)
📄
locale.ph
(810 B)
📄
login_cap.ph
(3.63 KB)
📄
lzma.ph
(5.03 KB)
📁
machine
📄
magic.ph
(4.33 KB)
📄
malloc.ph
(105 B)
📄
malloc_np.ph
(1.22 KB)
📄
math.ph
(9.35 KB)
📄
md4.ph
(1.24 KB)
📄
md5.ph
(1.38 KB)
📄
memory.ph
(81 B)
📄
memstat.ph
(1.28 KB)
📄
menu.ph
(3.26 KB)
📄
monetary.ph
(598 B)
📄
mp.ph
(213 B)
📄
mpool.ph
(884 B)
📄
mqueue.ph
(337 B)
📄
mtlib.ph
(810 B)
📄
ncurses.ph
(72.16 KB)
📄
ncurses_dll.ph
(2.7 KB)
📄
ndbm.ph
(697 B)
📄
netconfig.ph
(2.53 KB)
📄
netdb.ph
(4.68 KB)
📄
netgraph.ph
(228 B)
📄
nl_types.ph
(574 B)
📄
nlist.ph
(214 B)
📄
nss.ph
(1020 B)
📄
nsswitch.ph
(4.91 KB)
📄
ntlm_err.ph
(1.74 KB)
📄
ocsp_asn1.ph
(2.47 KB)
📄
omp.ph
(7.03 KB)
📄
opie.ph
(2.3 KB)
📄
osreldate.ph
(314 B)
📄
panel.ph
(442 B)
📄
parse_bytes.ph
(575 B)
📄
parse_time.ph
(572 B)
📄
parse_units.ph
(624 B)
📄
pathconv.ph
(159 B)
📄
paths.ph
(6.94 KB)
📄
pcap-bpf.ph
(83 B)
📄
pcap-namedb.ph
(86 B)
📄
pcap-netmap.ph
(60 B)
📄
pcap.ph
(84 B)
📄
pkcs10_asn1.ph
(1.22 KB)
📄
pkcs12_asn1.ph
(3.28 KB)
📄
pkcs8_asn1.ph
(1.18 KB)
📄
pkcs9_asn1.ph
(2.46 KB)
📄
pkinit_asn1.ph
(3.91 KB)
📄
pmc.ph
(229 B)
📄
pmcformat.ph
(168 B)
📄
pmclog.ph
(917 B)
📄
poll.ph
(1.58 KB)
📄
printf.ph
(1.56 KB)
📄
proc_service.ph
(702 B)
📄
pthread.ph
(4.62 KB)
📄
pthread_np.ph
(225 B)
📄
pwd.ph
(3.68 KB)
📄
radlib.ph
(11.03 KB)
📄
radlib_vs.ph
(3.71 KB)
📄
ranlib.ph
(290 B)
📄
readpassphrase.ph
(846 B)
📄
regex.ph
(2.53 KB)
📄
res_update.ph
(744 B)
📄
resolv.ph
(12.22 KB)
📄
resolve.ph
(5.74 KB)
📄
rfc2459_asn1.ph
(18.75 KB)
📄
ripemd.ph
(2.33 KB)
📄
roken-common.ph
(10.94 KB)
📄
roken.ph
(4.17 KB)
📄
rpoll.ph
(422 B)
📄
rtbl.ph
(1.01 KB)
📄
rtld_db.ph
(2.41 KB)
📄
runetype.ph
(800 B)
📄
sched.ph
(3.04 KB)
📄
sdp.ph
(24.71 KB)
📄
search.ph
(873 B)
📄
semaphore.ph
(506 B)
📄
setjmp.ph
(483 B)
📄
sha.ph
(3.45 KB)
📄
sha224.ph
(1.78 KB)
📄
sha256.ph
(1.92 KB)
📄
sha384.ph
(1.78 KB)
📄
sha512.ph
(1.92 KB)
📄
sha512t.ph
(3.88 KB)
📄
signal.ph
(1.59 KB)
📄
skein.ph
(18.65 KB)
📄
skein_freebsd.ph
(1.51 KB)
📄
skein_iv.ph
(251 B)
📄
skein_port.ph
(4.6 KB)
📄
spawn.ph
(1.11 KB)
📄
stab.ph
(1.64 KB)
📄
stdalign.ph
(684 B)
📄
stdarg.ph
(85 B)
📄
stdatomic.ph
(15.26 KB)
📄
stdbool.ph
(407 B)
📄
stddef.ph
(1.48 KB)
📄
stdint.ph
(915 B)
📄
stdio.ph
(9.48 KB)
📄
stdlib.ph
(3.05 KB)
📄
stdnoreturn.ph
(288 B)
📄
string.ph
(2.34 KB)
📄
string_m.ph
(190 B)
📄
stringlist.ph
(221 B)
📄
strings.ph
(943 B)
📁
sys
📄
sysdecode.ph
(799 B)
📄
sysexits.ph
(1.26 KB)
📄
syslog.ph
(4.03 KB)
📄
taclib.ph
(4.95 KB)
📄
tar.ph
(1.65 KB)
📄
tcpd.ph
(3.45 KB)
📄
term.ph
(46.27 KB)
📄
termcap.ph
(643 B)
📄
termios.ph
(1.78 KB)
📄
tgmath.ph
(11.34 KB)
📄
thread_db.ph
(4.78 KB)
📄
thread_pool_impl.ph
(543 B)
📄
threads.ph
(1.04 KB)
📄
time.ph
(4.11 KB)
📄
timeconv.ph
(338 B)
📄
timers.ph
(185 B)
📄
ttyent.ph
(1.44 KB)
📄
uchar.ph
(829 B)
📄
ucontext.ph
(695 B)
📄
ugidfw.ph
(153 B)
📄
ulimit.ph
(314 B)
📄
ulog.ph
(178 B)
📄
unctrl.ph
(483 B)
📄
unistd.ph
(18.61 KB)
📄
usb.ph
(5.14 KB)
📄
usbhid.ph
(761 B)
📄
utempter.ph
(190 B)
📄
utime.ph
(329 B)
📄
utmpx.ph
(1.37 KB)
📄
uuid.ph
(515 B)
📄
varargs.ph
(252 B)
📄
vgl.ph
(1.98 KB)
📄
vis.ph
(1.92 KB)
📄
vmmapi.ph
(1.12 KB)
📄
wchar.ph
(2.52 KB)
📄
wctype.ph
(3.66 KB)
📄
wind.ph
(1.17 KB)
📄
wind_err.ph
(1.47 KB)
📄
wordexp.ph
(1.21 KB)
📄
xdbm.ph
(491 B)
📄
xlocale.ph
(971 B)
📄
ypclnt.ph
(101 B)
📄
zconf.ph
(18.64 KB)
📄
zdb.ph
(144 B)
📄
zinject.ph
(1.53 KB)
📄
zlib.ph
(6.34 KB)
📄
zstream.ph
(232 B)
📄
zutil_import.ph
(930 B)
Editing: stdatomic.ph
require '_h2ph_pre.ph'; no warnings qw(redefine misc); unless(defined(&_STDATOMIC_H_)) { eval 'sub _STDATOMIC_H_ () {1;}' unless defined(&_STDATOMIC_H_); require 'sys/cdefs.ph'; require 'sys/_types.ph'; if( &__has_extension((defined(&c_atomic) ? &c_atomic : undef)) || &__has_extension((defined(&cxx_atomic) ? &cxx_atomic : undef))) { eval 'sub __CLANG_ATOMICS () {1;}' unless defined(&__CLANG_ATOMICS); } elsif( &__GNUC_PREREQ__(4, 7)) { eval 'sub __GNUC_ATOMICS () {1;}' unless defined(&__GNUC_ATOMICS); } elsif(defined(&__GNUC__)) { eval 'sub __SYNC_ATOMICS () {1;}' unless defined(&__SYNC_ATOMICS); } else { die("stdatomic.h does not support your compiler"); } if(defined(&__GCC_ATOMIC_BOOL_LOCK_FREE)) { eval 'sub ATOMIC_BOOL_LOCK_FREE () { &__GCC_ATOMIC_BOOL_LOCK_FREE;}' unless defined(&ATOMIC_BOOL_LOCK_FREE); } if(defined(&__GCC_ATOMIC_CHAR_LOCK_FREE)) { eval 'sub ATOMIC_CHAR_LOCK_FREE () { &__GCC_ATOMIC_CHAR_LOCK_FREE;}' unless defined(&ATOMIC_CHAR_LOCK_FREE); } if(defined(&__GCC_ATOMIC_CHAR16_T_LOCK_FREE)) { eval 'sub ATOMIC_CHAR16_T_LOCK_FREE () { &__GCC_ATOMIC_CHAR16_T_LOCK_FREE;}' unless defined(&ATOMIC_CHAR16_T_LOCK_FREE); } if(defined(&__GCC_ATOMIC_CHAR32_T_LOCK_FREE)) { eval 'sub ATOMIC_CHAR32_T_LOCK_FREE () { &__GCC_ATOMIC_CHAR32_T_LOCK_FREE;}' unless defined(&ATOMIC_CHAR32_T_LOCK_FREE); } if(defined(&__GCC_ATOMIC_WCHAR_T_LOCK_FREE)) { eval 'sub ATOMIC_WCHAR_T_LOCK_FREE () { &__GCC_ATOMIC_WCHAR_T_LOCK_FREE;}' unless defined(&ATOMIC_WCHAR_T_LOCK_FREE); } if(defined(&__GCC_ATOMIC_SHORT_LOCK_FREE)) { eval 'sub ATOMIC_SHORT_LOCK_FREE () { &__GCC_ATOMIC_SHORT_LOCK_FREE;}' unless defined(&ATOMIC_SHORT_LOCK_FREE); } if(defined(&__GCC_ATOMIC_INT_LOCK_FREE)) { eval 'sub ATOMIC_INT_LOCK_FREE () { &__GCC_ATOMIC_INT_LOCK_FREE;}' unless defined(&ATOMIC_INT_LOCK_FREE); } if(defined(&__GCC_ATOMIC_LONG_LOCK_FREE)) { eval 'sub ATOMIC_LONG_LOCK_FREE () { &__GCC_ATOMIC_LONG_LOCK_FREE;}' unless defined(&ATOMIC_LONG_LOCK_FREE); } if(defined(&__GCC_ATOMIC_LLONG_LOCK_FREE)) { eval 'sub ATOMIC_LLONG_LOCK_FREE () { &__GCC_ATOMIC_LLONG_LOCK_FREE;}' unless defined(&ATOMIC_LLONG_LOCK_FREE); } if(defined(&__GCC_ATOMIC_POINTER_LOCK_FREE)) { eval 'sub ATOMIC_POINTER_LOCK_FREE () { &__GCC_ATOMIC_POINTER_LOCK_FREE;}' unless defined(&ATOMIC_POINTER_LOCK_FREE); } if(defined(&__CLANG_ATOMICS)) { eval 'sub ATOMIC_VAR_INIT { my($value) = @_; eval q(($value)); }' unless defined(&ATOMIC_VAR_INIT); eval 'sub atomic_init { my($obj, $value) = @_; eval q( &__c11_atomic_init($obj, $value)); }' unless defined(&atomic_init); } else { eval 'sub ATOMIC_VAR_INIT { my($value) = @_; eval q({ . &__val = ($value) }); }' unless defined(&ATOMIC_VAR_INIT); eval 'sub atomic_init { my($obj, $value) = @_; eval q((( &void)(($obj)-> &__val = ($value)))); }' unless defined(&atomic_init); } unless(defined(&__ATOMIC_RELAXED)) { eval 'sub __ATOMIC_RELAXED () {0;}' unless defined(&__ATOMIC_RELAXED); } unless(defined(&__ATOMIC_CONSUME)) { eval 'sub __ATOMIC_CONSUME () {1;}' unless defined(&__ATOMIC_CONSUME); } unless(defined(&__ATOMIC_ACQUIRE)) { eval 'sub __ATOMIC_ACQUIRE () {2;}' unless defined(&__ATOMIC_ACQUIRE); } unless(defined(&__ATOMIC_RELEASE)) { eval 'sub __ATOMIC_RELEASE () {3;}' unless defined(&__ATOMIC_RELEASE); } unless(defined(&__ATOMIC_ACQ_REL)) { eval 'sub __ATOMIC_ACQ_REL () {4;}' unless defined(&__ATOMIC_ACQ_REL); } unless(defined(&__ATOMIC_SEQ_CST)) { eval 'sub __ATOMIC_SEQ_CST () {5;}' unless defined(&__ATOMIC_SEQ_CST); } eval("sub memory_order_relaxed () { __ATOMIC_RELAXED; }") unless defined(&memory_order_relaxed); eval("sub memory_order_consume () { __ATOMIC_CONSUME; }") unless defined(&memory_order_consume); eval("sub memory_order_acquire () { __ATOMIC_ACQUIRE; }") unless defined(&memory_order_acquire); eval("sub memory_order_release () { __ATOMIC_RELEASE; }") unless defined(&memory_order_release); eval("sub memory_order_acq_rel () { __ATOMIC_ACQ_REL; }") unless defined(&memory_order_acq_rel); eval("sub memory_order_seq_cst () { __ATOMIC_SEQ_CST; }") unless defined(&memory_order_seq_cst); if(defined(&__CLANG_ATOMICS)) { } elsif(defined(&__GNUC_ATOMICS)) { } else { } # some #ifdef were dropped here -- fill in the blanks eval 'sub atomic_signal_fence { my($__unused) = @_; eval q({ }); }' unless defined(&atomic_signal_fence); if(defined(&_KERNEL)) { eval 'sub atomic_is_lock_free { my($obj) = @_; eval q((( &void)($obj), ( &_Bool)1)); }' unless defined(&atomic_is_lock_free); } elsif(defined(&__CLANG_ATOMICS) || defined(&__GNUC_ATOMICS)) { eval 'sub atomic_is_lock_free { my($obj) = @_; eval q( &__atomic_is_lock_free($sizeof{($obj)}, $obj)); }' unless defined(&atomic_is_lock_free); } else { eval 'sub atomic_is_lock_free { my($obj) = @_; eval q((( &void)($obj), $sizeof{($obj)-> &__val} <= $sizeof{ &void })); }' unless defined(&atomic_is_lock_free); } if(defined(&__CLANG_ATOMICS)) { eval 'sub atomic_compare_exchange_strong_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &__c11_atomic_compare_exchange_strong($object, $expected, $desired, $success, $failure)); }' unless defined(&atomic_compare_exchange_strong_explicit); eval 'sub atomic_compare_exchange_weak_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &__c11_atomic_compare_exchange_weak($object, $expected, $desired, $success, $failure)); }' unless defined(&atomic_compare_exchange_weak_explicit); eval 'sub atomic_exchange_explicit { my($object, $desired, $order) = @_; eval q( &__c11_atomic_exchange($object, $desired, $order)); }' unless defined(&atomic_exchange_explicit); eval 'sub atomic_fetch_add_explicit { my($object, $operand, $order) = @_; eval q( &__c11_atomic_fetch_add($object, $operand, $order)); }' unless defined(&atomic_fetch_add_explicit); eval 'sub atomic_fetch_and_explicit { my($object, $operand, $order) = @_; eval q( &__c11_atomic_fetch_and($object, $operand, $order)); }' unless defined(&atomic_fetch_and_explicit); eval 'sub atomic_fetch_or_explicit { my($object, $operand, $order) = @_; eval q( &__c11_atomic_fetch_or($object, $operand, $order)); }' unless defined(&atomic_fetch_or_explicit); eval 'sub atomic_fetch_sub_explicit { my($object, $operand, $order) = @_; eval q( &__c11_atomic_fetch_sub($object, $operand, $order)); }' unless defined(&atomic_fetch_sub_explicit); eval 'sub atomic_fetch_xor_explicit { my($object, $operand, $order) = @_; eval q( &__c11_atomic_fetch_xor($object, $operand, $order)); }' unless defined(&atomic_fetch_xor_explicit); eval 'sub atomic_load_explicit { my($object, $order) = @_; eval q( &__c11_atomic_load($object, $order)); }' unless defined(&atomic_load_explicit); eval 'sub atomic_store_explicit { my($object, $desired, $order) = @_; eval q( &__c11_atomic_store($object, $desired, $order)); }' unless defined(&atomic_store_explicit); } elsif(defined(&__GNUC_ATOMICS)) { eval 'sub atomic_compare_exchange_strong_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &__atomic_compare_exchange_n($object, $expected, $desired, 0, $success, $failure)); }' unless defined(&atomic_compare_exchange_strong_explicit); eval 'sub atomic_compare_exchange_weak_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &__atomic_compare_exchange_n($object, $expected, $desired, 1, $success, $failure)); }' unless defined(&atomic_compare_exchange_weak_explicit); eval 'sub atomic_exchange_explicit { my($object, $desired, $order) = @_; eval q( &__atomic_exchange_n($object, $desired, $order)); }' unless defined(&atomic_exchange_explicit); eval 'sub atomic_fetch_add_explicit { my($object, $operand, $order) = @_; eval q( &__atomic_fetch_add($object, $operand, $order)); }' unless defined(&atomic_fetch_add_explicit); eval 'sub atomic_fetch_and_explicit { my($object, $operand, $order) = @_; eval q( &__atomic_fetch_and($object, $operand, $order)); }' unless defined(&atomic_fetch_and_explicit); eval 'sub atomic_fetch_or_explicit { my($object, $operand, $order) = @_; eval q( &__atomic_fetch_or($object, $operand, $order)); }' unless defined(&atomic_fetch_or_explicit); eval 'sub atomic_fetch_sub_explicit { my($object, $operand, $order) = @_; eval q( &__atomic_fetch_sub($object, $operand, $order)); }' unless defined(&atomic_fetch_sub_explicit); eval 'sub atomic_fetch_xor_explicit { my($object, $operand, $order) = @_; eval q( &__atomic_fetch_xor($object, $operand, $order)); }' unless defined(&atomic_fetch_xor_explicit); eval 'sub atomic_load_explicit { my($object, $order) = @_; eval q( &__atomic_load_n($object, $order)); }' unless defined(&atomic_load_explicit); eval 'sub atomic_store_explicit { my($object, $desired, $order) = @_; eval q( &__atomic_store_n($object, $desired, $order)); }' unless defined(&atomic_store_explicit); } else { eval 'sub __atomic_apply_stride { my($object, $operand) = @_; eval q(((( &__typeof__(($object)-> &__val))0) + ($operand))); }' unless defined(&__atomic_apply_stride); eval 'sub atomic_compare_exchange_strong_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &__extension__ ({ &__typeof__($expected) &__ep = ($expected); &__typeof__(* &__ep) &__e = * &__ep; ( &void)($success); ( &void)($failure); ( &_Bool)((* &__ep = &__sync_val_compare_and_swap(($object)-> &__val, &__e, $desired)) == &__e); })); }' unless defined(&atomic_compare_exchange_strong_explicit); eval 'sub atomic_compare_exchange_weak_explicit { my($object, $expected, $desired, $success, $failure) = @_; eval q( &atomic_compare_exchange_strong_explicit($object, $expected, $desired, $success, $failure)); }' unless defined(&atomic_compare_exchange_weak_explicit); if( &__has_builtin((defined(&__sync_swap) ? &__sync_swap : undef))) { eval 'sub atomic_exchange_explicit { my($object, $desired, $order) = @_; eval q((( &void)($order), &__sync_swap(($object)-> &__val, $desired))); }' unless defined(&atomic_exchange_explicit); } else { eval 'sub atomic_exchange_explicit { my($object, $desired, $order) = @_; eval q( &__extension__ ({ &__typeof__($object) &__o = ($object); &__typeof__($desired) &__d = ($desired); ( &void)($order); &__sync_synchronize(); &__sync_lock_test_and_set(( &__o)-> &__val, &__d); })); }' unless defined(&atomic_exchange_explicit); } eval 'sub atomic_fetch_add_explicit { my($object, $operand, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_add(($object)-> &__val, &__atomic_apply_stride($object, $operand)))); }' unless defined(&atomic_fetch_add_explicit); eval 'sub atomic_fetch_and_explicit { my($object, $operand, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_and(($object)-> &__val, $operand))); }' unless defined(&atomic_fetch_and_explicit); eval 'sub atomic_fetch_or_explicit { my($object, $operand, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_or(($object)-> &__val, $operand))); }' unless defined(&atomic_fetch_or_explicit); eval 'sub atomic_fetch_sub_explicit { my($object, $operand, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_sub(($object)-> &__val, &__atomic_apply_stride($object, $operand)))); }' unless defined(&atomic_fetch_sub_explicit); eval 'sub atomic_fetch_xor_explicit { my($object, $operand, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_xor(($object)-> &__val, $operand))); }' unless defined(&atomic_fetch_xor_explicit); eval 'sub atomic_load_explicit { my($object, $order) = @_; eval q((( &void)($order), &__sync_fetch_and_add(($object)-> &__val, 0))); }' unless defined(&atomic_load_explicit); eval 'sub atomic_store_explicit { my($object, $desired, $order) = @_; eval q((( &void) &atomic_exchange_explicit($object, $desired, $order))); }' unless defined(&atomic_store_explicit); } unless(defined(&_KERNEL)) { eval 'sub atomic_compare_exchange_strong { my($object, $expected, $desired) = @_; eval q( &atomic_compare_exchange_strong_explicit($object, $expected, $desired, &memory_order_seq_cst, &memory_order_seq_cst)); }' unless defined(&atomic_compare_exchange_strong); eval 'sub atomic_compare_exchange_weak { my($object, $expected, $desired) = @_; eval q( &atomic_compare_exchange_weak_explicit($object, $expected, $desired, &memory_order_seq_cst, &memory_order_seq_cst)); }' unless defined(&atomic_compare_exchange_weak); eval 'sub atomic_exchange { my($object, $desired) = @_; eval q( &atomic_exchange_explicit($object, $desired, &memory_order_seq_cst)); }' unless defined(&atomic_exchange); eval 'sub atomic_fetch_add { my($object, $operand) = @_; eval q( &atomic_fetch_add_explicit($object, $operand, &memory_order_seq_cst)); }' unless defined(&atomic_fetch_add); eval 'sub atomic_fetch_and { my($object, $operand) = @_; eval q( &atomic_fetch_and_explicit($object, $operand, &memory_order_seq_cst)); }' unless defined(&atomic_fetch_and); eval 'sub atomic_fetch_or { my($object, $operand) = @_; eval q( &atomic_fetch_or_explicit($object, $operand, &memory_order_seq_cst)); }' unless defined(&atomic_fetch_or); eval 'sub atomic_fetch_sub { my($object, $operand) = @_; eval q( &atomic_fetch_sub_explicit($object, $operand, &memory_order_seq_cst)); }' unless defined(&atomic_fetch_sub); eval 'sub atomic_fetch_xor { my($object, $operand) = @_; eval q( &atomic_fetch_xor_explicit($object, $operand, &memory_order_seq_cst)); }' unless defined(&atomic_fetch_xor); eval 'sub atomic_load { my($object) = @_; eval q( &atomic_load_explicit($object, &memory_order_seq_cst)); }' unless defined(&atomic_load); eval 'sub atomic_store { my($object, $desired) = @_; eval q( &atomic_store_explicit($object, $desired, &memory_order_seq_cst)); }' unless defined(&atomic_store); } eval 'sub ATOMIC_FLAG_INIT () {{ &ATOMIC_VAR_INIT(0) };}' unless defined(&ATOMIC_FLAG_INIT); eval 'sub atomic_flag_test_and_set_explicit { my($__object,$__order) = @_; eval q({ ( &atomic_exchange_explicit(& ($__object->{__flag}), 1, $__order)); }); }' unless defined(&atomic_flag_test_and_set_explicit); eval 'sub atomic_flag_clear_explicit { my($__object,$__order) = @_; eval q({ &atomic_store_explicit(& ($__object->{__flag}), 0, $__order); }); }' unless defined(&atomic_flag_clear_explicit); unless(defined(&_KERNEL)) { eval 'sub atomic_flag_test_and_set { my($__object) = @_; eval q({ ( &atomic_flag_test_and_set_explicit($__object, &memory_order_seq_cst)); }); }' unless defined(&atomic_flag_test_and_set); eval 'sub atomic_flag_clear { my($__object) = @_; eval q({ &atomic_flag_clear_explicit($__object, &memory_order_seq_cst); }); }' unless defined(&atomic_flag_clear); } } 1;
Upload File
Create Folder