diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index a4b9eebc6..558cbc70c 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,85 @@ +2003-11-28 Christopher Faylor + + Eliminate use of sigframe and sigthread throughout. + * Makefile.in (DLL_OFILES): Add sigfe.o. Remove reliance on cygwin.def + from cygwin0.dll dependency since dependence on sigfe.o implies that. + Generate def file on the fly using 'gendef'. + * configure.in: Don't auto-generate cygwin.def. + * configure: Regenerate. + * cygwin.din: Add SIGFE stuff where appropriate. + * dcrt0.cc (dll_crt0_1): Initialize cygwin tls early in process + startup. Set _main_tls to address of the main thread's cygwin tls. + * debug.h: Remove now unneeded WFSO and WFMO declarations. + * exceptions.cc (_last_thread): Define. + (set_thread_state_for_signals): New function. + (reset_thread_exception_for_signals): Ditto. + (init_thread_for_signals): Ditto. + (delete_thread_for_signals): Ditto. + (capture_thread_for_signals): Ditto. + (handle_exceptions): Set return address explicitly for exceptions prior + to calling sig_send. + (interrupt_on_return): Eliminate. + (setup_handler): Add preliminary implementation for dealing with + thread-specific signals by querying _main_tls. + (signal_exit): Use cygthread::main_thread_id instead of mainthread.id. + (call_signal_handler_now): For now, just handle the main thread. + * fork.cc (vfork): Save and restore main _my_tls. + * gendef: New file. Generates def file and sigfe.s file. + * gentls_offsets: New file. Generates offsets for perl to use in + sigfe.s. + * how-signals-work.txt: Mention that info is obsolete. + * init.cc (dll_entry): Initialize cygwin tls storage here. + * miscfuncs.cc (low_priority_sleep): Make a C function for easier + calling from asm. + * perthread.h (vfork_save::tls): New element. + * signal.cc (nanosleep): Replace previous use of + sigframe.call_signal_handler_now with straight call to + call_signal_handler_now. + (abort): Ditto. + * syscalls.cc (readv): Ditto. + * termios.cc (tcsetattr): Ditto. + * wait.cc (wait4): Ditto. + * sigproc.cc (sig_dispatch_pending): Ditto. + (sig_send): Ditto. + * sigproc.h: Declare call_signal_handler_now. + * thread.cc (pthread::thread_init_wrapper): Initialize cygwin tls. + Remove obsolete and unworking signal stuff. + * thread.h (verifyable_object::sigs): Eliminate. + (verifyable_object::sigmask): Eliminate. + (verifyable_object::sigtodo): Eliminate. + (verifyable_object::exit): Make attribute noreturn. + (verifyable_object::thread_init_wrapper): Ditto. + (pthread_null::exit): Ditto. + * winbase.h (__stackbase): Always define. + * winsup.h (low_priority_sleep): Declare as a "C" function. + * include/cygwin/version.h: Bump API version to reflect sigwait export. + + * include/sys/queue.h: Protect SLIST_ENTRY from previous declaration. + + * signal.cc (sigwait): Implement. + + * select.cc (fhandler_base::ready_for_read): Add debugging output. + + * devices.h: Define more device pointers via their storage. + * devices.in: Don't parse things like /dev/inet/tcp, as they really + have no meaning. + * devices.cc: Regenerate. + * gendevices: Set proper protection for output file. + + * cygtls.h: New file. + * gendef: New file. + * gentls_offsets: New file. + * tlsoffsets.h: New file. Autogenerated. + * config/i386/longjmp.c: Remove. File subsumed by gendef output. + * config/i386/makefrag: Remove obsolete file. + + * fhandler.cc: Remove spurious access_worker declaration. + + * spawn.cc (spawnve): Make debugging output more accurate. + + * cygwin-gperf: Remove. + * devices.cc: Remove. + 2003-11-28 Christopher Faylor * speclib: Use correct EOF marker. Ensure that directory is actually diff --git a/winsup/cygwin/Makefile.in b/winsup/cygwin/Makefile.in index e8737ada7..e285d0b1a 100644 --- a/winsup/cygwin/Makefile.in +++ b/winsup/cygwin/Makefile.in @@ -51,10 +51,10 @@ DEFS:=@DEFS@ CC:=@CC@ # FIXME: Which is it, CC or CC_FOR_TARGET? CC_FOR_TARGET:=$(CC) -CFLAGS=@CFLAGS@ +CFLAGS=@CFLAGS@ -fmerge-constants -ftracer override CFLAGS+=-MMD ${$(*F)_CFLAGS} CXX=@CXX@ -CXXFLAGS=@CXXFLAGS@ +CXXFLAGS=@CXXFLAGS@ -fmerge-constants AR:=@AR@ AR_FLAGS:=qv @@ -117,6 +117,7 @@ DLL_IMPORTS:=$(w32api_lib)/libkernel32.a MT_SAFE_OBJECTS:= # Please maintain this list in sorted order, with maximum files per 80 col line +# DLL_OFILES:=assert.o autoload.o bsdlib.o cxx.o cygheap.o cygthread.o dcrt0.o \ debug.o delqueue.o devices.o dir.o dlfcn.o dll_init.o dtable.o environ.o \ errno.o exceptions.o exec.o external.o fcntl.o fhandler.o \ @@ -131,10 +132,10 @@ DLL_OFILES:=assert.o autoload.o bsdlib.o cxx.o cygheap.o cygthread.o dcrt0.o \ mmap.o msg.o net.o netdb.o ntea.o passwd.o path.o pinfo.o pipe.o \ poll.o pthread.o regcomp.o regerror.o regexec.o regfree.o registry.o \ resource.o scandir.o sched.o sec_acl.o sec_helper.o security.o \ - select.o sem.o shared.o shm.o signal.o sigproc.o smallprint.o spawn.o \ - strace.o strsep.o sync.o syscalls.o sysconf.o syslog.o termios.o \ - thread.o times.o tty.o uinfo.o uname.o v8_regexp.o v8_regerror.o \ - v8_regsub.o wait.o wincap.o window.o \ + select.o sem.o shared.o shm.o sigfe.o signal.o sigproc.o smallprint.o \ + spawn.o strace.o strsep.o sync.o syscalls.o sysconf.o syslog.o \ + termios.o thread.o times.o tty.o uinfo.o uname.o v8_regexp.o \ + v8_regerror.o v8_regsub.o wait.o wincap.o window.o \ $(EXTRA_DLL_OFILES) $(EXTRA_OFILES) $(MALLOC_OFILES) $(MT_SAFE_OBJECTS) GMON_OFILES:=gmon.o mcount.o profil.o @@ -305,7 +306,6 @@ install_target: install_host: - uninstall-libs: $(TARGET_LIBS) rm -f $(bindir)/$(DLL_NAME); \ for i in $^; do \ @@ -346,7 +346,7 @@ maintainer-clean realclean: clean # Rule to build cygwin.dll -$(TEST_DLL_NAME): $(LDSCRIPT) $(DLL_OFILES) $(DEF_FILE) $(DLL_IMPORTS) $(LIBSERVER) $(LIBC) $(LIBM) $(API_VER) Makefile winver_stamp +$(TEST_DLL_NAME): $(LDSCRIPT) $(DLL_OFILES) $(DLL_IMPORTS) $(LIBSERVER) $(LIBC) $(LIBM) $(API_VER) Makefile winver_stamp $(CXX) $(CXXFLAGS) $(nostdlib) -Wl,-T$(firstword $^) -Wl,--out-implib,cygdll.a -shared -o $@ \ -e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) version.o winver.o \ $(MALLOC_OBJ) $(LIBSERVER) $(LIBM) $(LIBC) \ @@ -376,7 +376,7 @@ $(LIBGMON_A): $(GMON_OFILES) $(GMON_START) $(API_VER): $(srcdir)/cygwin.din @echo Error: Version info is older than DLL API! - @false +# @false version.cc winver.o: winver_stamp @ : @@ -422,8 +422,17 @@ winver_stamp: mkvers.sh include/cygwin/version.h winver.rc $(DLL_OFILES) Makefile: cygwin.din -$(DEF_FILE): cygwin.din config.status - $(SHELL) config.status +$(DEF_FILE): gendef cygwin.din $(srcdir)/tlsoffsets.h + $^ $@ sigfe.s + +$(srcdir)/tlsoffsets.h: gentls_offsets cygtls.h + $^ $@ $(COMPILE_CXX) + +sigfe.s: $(DEF_FILE) + @touch $@ + +sigfe.o: sigfe.s + $(CC) -c -o $@ $? winsup.h: config.h diff --git a/winsup/cygwin/config/i386/longjmp.c b/winsup/cygwin/config/i386/longjmp.c deleted file mode 100644 index 62c52aaa0..000000000 --- a/winsup/cygwin/config/i386/longjmp.c +++ /dev/null @@ -1,51 +0,0 @@ -/* longjmp.c - - Copyright 1996, 1998, 1999, 2000, 2001 Red Hat, Inc. - -This file is part of Cygwin. - -This software is a copyrighted work licensed under the terms of the -Cygwin license. Please consult the file "CYGWIN_LICENSE" for -details. */ - -#ifdef __i386__ -#if 1 -asm (" .globl _longjmp \n" -"_longjmp: \n" -" pushl %ebp \n" -" movl %esp,%ebp \n" -" movl 8(%ebp),%edi \n" -" movl 12(%ebp),%eax \n" -" testl %eax,%eax \n" -" jne 0f \n" -" incl %eax \n" -"0: \n" -" movl %eax,0(%edi) \n" -" movl 24(%edi),%ebp \n" -" pushfl \n" -" popl %ebx \n" -" movw 42(%edi),%ax \n" -" movw %ax,%ss \n" -" movl 28(%edi),%esp \n" -" pushl 32(%edi) \n" -" pushl %ebx \n" -" movw 36(%edi),%ax \n" -" movw %ax,%es \n" -#if 0 -/* fs is a system register in windows; don't muck with it */ -" movw 38(%edi),%ax \n" -" movw %ax,%fs \n" -#endif -" movw 40(%edi),%ax \n" -" movw %ax,%gs \n" -" movl 0(%edi),%eax \n" -" movl 4(%edi),%ebx \n" -" movl 8(%edi),%ecx \n" -" movl 12(%edi),%edx \n" -" movl 16(%edi),%esi \n" -" movl 20(%edi),%edi \n" -" popfl \n" -" ret \n"); -#endif - -#endif /* __i386__ */ diff --git a/winsup/cygwin/config/i386/makefrag b/winsup/cygwin/config/i386/makefrag deleted file mode 100644 index c7f6b2d17..000000000 --- a/winsup/cygwin/config/i386/makefrag +++ /dev/null @@ -1,17 +0,0 @@ -# makefrag: included by the main Cygwin Makefile.in - -# Copyright 1996, 1998, 1999, 2001 Red Hat, Inc. - -# This file is part of Cygwin. - -# This software is a copyrighted work licensed under the terms of the -# Cygwin license. Please consult the file "CYGWIN_LICENSE" for -# details. - -EXTRA_DLL_OFILES=setjmp.o longjmp.o - -setjmp.o:config/i386/setjmp.c - $(CC) -c $(ALL_CFLAGS) $< - -longjmp.o:config/i386/longjmp.c - $(CC) -c $(ALL_CFLAGS) $< diff --git a/winsup/cygwin/configure b/winsup/cygwin/configure index 61d694f26..277353698 100755 --- a/winsup/cygwin/configure +++ b/winsup/cygwin/configure @@ -2068,7 +2068,7 @@ done ac_given_srcdir=$srcdir ac_given_INSTALL="$INSTALL" -trap 'rm -fr `echo "Makefile cygwin.def:cygwin.din config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +trap 'rm -fr `echo "Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then diff --git a/winsup/cygwin/configure.in b/winsup/cygwin/configure.in index 04c961c19..351284ecc 100644 --- a/winsup/cygwin/configure.in +++ b/winsup/cygwin/configure.in @@ -197,4 +197,4 @@ AC_SUBST(DLL_ENTRY) AC_SUBST(DEF_DLL_ENTRY) AC_SUBST(ALLOCA) AC_SUBST(CONFIG_DIR) -AC_OUTPUT(Makefile cygwin.def:cygwin.din) +AC_OUTPUT(Makefile) diff --git a/winsup/cygwin/cygtls.h b/winsup/cygwin/cygtls.h new file mode 100644 index 000000000..8f900e9f0 --- /dev/null +++ b/winsup/cygwin/cygtls.h @@ -0,0 +1,61 @@ +/* cygtls.h + + Copyright 2003 Red Hat, Inc. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#ifndef _CYGTLS_H +#define _CYGTLS_H + +#include + +#define CYGTLS_INITIALIZED 0x43227 +#define CYGTLS_EXCEPTION (0x43227 + true) + +/* Please keep this file simple. Changes to the below structure may require + acompanying changes to the very simple parser in the perl script + 'gentls_offsets'. */ + +#pragma pack(push,4) +typedef __uint32_t __stack_t; +struct _threadinfo +{ + void (*func) /*gentls_offsets*/(int)/*gentls_offsets*/; + int saved_errno; + int sa_flags; + sigset_t oldmask; + sigset_t newmask; + HANDLE event; + int *errno_addr; + unsigned initialized; + sigset_t sigmask; + sigset_t sigwait_mask; + siginfo_t *sigwait_info; + siginfo_t infodata; + void *tid; + struct _threadinfo *prev, *next; + __stack_t stack[8]; + int sig; + __stack_t *stackptr; + + struct _threadinfo *init (void *, void * = NULL); + void remove (); + void push (__stack_t, bool = false); + __stack_t pop (); + bool isinitialized () {return initialized == CYGTLS_INITIALIZED || initialized == CYGTLS_EXCEPTION;} + void set_state (bool); + void reset_exception (); + bool interrupt_now (CONTEXT *, int, void *, struct sigaction&) + __attribute__((regparm(3))); + void __stdcall interrupt_setup (int sig, void *handler, struct sigaction& siga, __stack_t retaddr) + __attribute__((regparm(3))); +}; +#pragma pack(pop) + +extern _threadinfo *_tlsbase __asm__ ("%fs:4"); +#define _my_tls (_tlsbase[-1]) + +#define CYGTLS_PADSIZE (sizeof (_threadinfo) + 64) +#endif /*_CYGTLS_H*/ diff --git a/winsup/cygwin/cygwin-gperf b/winsup/cygwin/cygwin-gperf deleted file mode 100755 index 4599e90ca..000000000 --- a/winsup/cygwin/cygwin-gperf +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/perl -use strict; -sub read_devices($%); -my $infile = shift; -my $incfile = shift; -open(GPERF, "gperf -c --key-positions='5-8,1-2,9-10' -r -t -C -E " . - "-T -L 'ANSI-C' -Hdevhash -N'device::lookup' -Z devstring " . - "-7 -G $infile |"); -my @lines = ; -my $ix = 0; -my $i = 0; -my $n = -1; -my $findclose = 0; -my $add_device = ''; -my %fh_static; -my %fh_declare = ( - 'cygdrive' => 'dev_cygdrive_storage', - 'fs' => 'dev_fs_storage', - 'proc' => 'dev_proc_storage', - 'registry' => 'dev_registry_storage', - 'process' => 'dev_process_storage', - 'piper' => 'dev_piper_storage', - 'pipew' => 'dev_pipew_storage', - 'tcp' => 'dev_tcp_storage', - 'udp' => 'dev_udp_storage', - 'icmp' => 'dev_icmp_storage', - 'unix' => 'dev_unix_storage', - 'stream' => 'dev_stream_storage', - 'dgram' => 'dev_dgram_storage' -); - -foreach (@lines) { - $i++; - s/\[(str\[[^\]]*\])\]/[(unsigned) cyg_tolower ($1)]/o and next; - s/static (.* )wordlist/static NO_COPY $1wordlist/o and do { - $findclose = 1; - }; - s/([ ]*)if \(\*str.*$/$1if (strncasematch (str, s, len))/o and next; - $findclose and /};/o and do { - $_ .= "\n"; - $_ .=<<'EOF'; -const device dev_cygdrive_storage = - {"/cygdrive", FH_CYGDRIVE, "/cygdrive", 0, 0, 0, 0}; - -const device dev_fs_storage = - {"", FH_FS, "", 0, 0, 0, 0}; - -const device dev_proc_storage = - {"", FH_PROC, "", 0, 0, 0, 0}; - -const device dev_registry_storage = - {"", FH_REGISTRY, "", 0, 0, 0, 0}; - -const device dev_process_storage = - {"", FH_PROCESS, "", 0, 0, 0, 0}; - -const device dev_tcp_storage = - {"/dev/inet/tcp", FH_TCP, "", 0, 0, 0, 0}; - -const device dev_udp_storage = - {"/dev/inet/udp", FH_UCP, "", 0, 0, 0, 0}; - -const device dev_icmp_storage = - {"/dev/inet/icmp", FH_ICMP, "", 0, 0, 0, 0}; - -const device dev_unix_storage = - {"/dev/inet/unix", FH_UNIX, "", 0, 0, 0, 0}; - -const device dev_stream_storage = - {"/dev/inet/stream", FH_STREAM, "", 0, 0, 0, 0}; - -const device dev_dgram_storage = - {"/dev/inet/dgram", FH_DGRAM, "", 0, 0, 0, 0}; - -const device dev_piper_storage = - {"", FH_PIPER, "", 0, 0, 0, 0}; - -const device dev_pipew_storage = - {"", FH_PIPEW, "", 0, 0, 0, 0}; - -const device dev_fs = - {"", FH_FS, "", 0, 0, 0, 0}; -EOF - for my $f (sort keys %fh_declare) { - $_ .= 'const device dev_' . $f . "_storage = $fh_declare{$f};\n" - if $fh_declare{$f} !~ /_storage/; - } - $_ .= "\n"; - $_ .= read_devices($incfile, %fh_declare); - $findclose = 0; - }; - /^(\s+)(\{".*)/ or next; - my $indent = $1; - my $rest = $2; - for my $f ($rest =~ /\{([^}]+)\}/g) { - $f eq '""' and do { - $ix++; - next; - }; - my ($str, $fh) = (split(/, /, $f))[0..1]; - if ($str !~ m!^"(?:/dev|:bad:)!) { - $ix++; - } else { - my $what = lc(($fh =~ /FH_(.+)/o)[0]); - my $addon = ''; - while (defined $fh_static{$what . $addon} && - $fh_static{$what . $addon} ne $f) { - $addon++; - } - $what .= $addon; - $fh_static{$what} = $f; - $fh_declare{$what} = "wordlist[$ix]"; - $ix++; - } - } -} - -print @lines; - -sub read_devices($%) { - my $fn = shift; - my %fh_declare = @_; - open(F, "$fn") or die "$0: couldn't open $fn - $!\n"; - my (%dev, %fh); - local $_; - while () { - /^\s*DEV_([A-Z_0-9]+)_MAJOR\s*=\s*(\d+)/ and do { - my $dev = lc($1); - next unless $fh_declare{$dev}; - my $a = sprintf "%08d", $2; - $dev{$2} = '&' . $fh_declare{$dev} . " /* \L$1 */"; - next; - }; - /^\s*FH_([A-Z_0-9]+)\s*=\s*FHDEV\s*\((\d+),\s*(\d+)\)/ and do { - my $a = sprintf "%08d.%08d", $2, $3; - $fh{$a} = '&' . $fh_declare{lc($1)} . " /* \L$1 */"; - }; - }; - close F; - my $toprint = ''; - $toprint = "const device *unit_devices[] =\n{"; - for my $f (sort keys %dev) { - $toprint .= "\n $dev{$f}," if length($dev{$f}); - } - chop $toprint; - $toprint .= "\n};\n\nconst device *uniq_devices[] = \n{"; - for my $f (sort keys %fh) { - $toprint .= "\n $fh{$f},"; - } - chop $toprint; - $toprint .= "\n};\n"; - return $toprint; -} diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index d4fff57b8..f4be987ea 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -25,1527 +25,1504 @@ optind DATA optopt DATA optreset DATA reent_data DATA -@ALLOCA@ -@DEF_DLL_ENTRY@ -__assert -__assertfail -__eprintf -__errno -__fpclassifyd -__fpclassifyf -__getreent -__infinity -__main -__signbitd -__signbitf -__signgam -__srget -__swbuf -_asprintf_r -asprintf_r = _asprintf_r -_dll_crt0@0 -_exit -_f_atan2 -__f_atan2 = _f_atan2 -_f_atan2f -__f_atan2f = _f_atan2f -_f_exp -__f_exp = _f_exp -_f_expf -__f_expf = _f_expf -_f_frexp -__f_frexp = _f_frexp -_f_frexpf -__f_frexpf = _f_frexpf -_f_ldexp -__f_ldexp = _f_ldexp -_f_ldexpf -__f_ldexpf = _f_ldexpf -_f_log -__f_log = _f_log -_f_log10 -__f_log10 = _f_log10 -_f_log10f -__f_log10f = _f_log10f -_f_logf -__f_logf = _f_logf -_f_pow -__f_pow = _f_pow -_f_powf -__f_powf = _f_powf -_f_tan -__f_tan = _f_tan -_f_tanf -__f_tanf = _f_tanf -_fcloseall_r -fcloseall_r = _fcloseall_r -_fscanf_r -fscanf_r = _fscanf_r -fstat -_fstat = fstat -_pipe -_pthread_cleanup_pop -_pthread_cleanup_push -_scanf_r -scanf_r = _scanf_r -_sscanf_r -sscanf_r = _sscanf_r -stat -_stat = stat -_strtold -trunc -_vasprintf_r -vasprintf_r = _vasprintf_r -_vfscanf_r -vfscanf_r = _vfscanf_r -_vscanf_r -vscanf_r = _vscanf_r -_vsscanf_r -vsscanf_r = _vsscanf_r -a64l -abort -_abort = abort -abs -_abs = abs -access -_access = access -acl -_acl = acl -_acl32 = acl32 -aclcheck -_aclcheck = aclcheck -_aclcheck32 = aclcheck32 -aclfrommode -_aclfrommode = aclfrommode -_aclfrommode32 = aclfrommode32 -aclfrompbits -_aclfrompbits = aclfrompbits -_aclfrompbits32 = aclfrompbits32 -aclfromtext -_aclfromtext = aclfromtext -_aclfromtext32 = aclfromtext32 -aclsort -_aclsort = aclsort -_aclsort32 = aclsort32 -acltomode -_acltomode = acltomode -_acltomode32 = acltomode32 -acltopbits -_acltopbits = acltopbits -_acltopbits32 = acltopbits32 -acltotext -_acltotext = acltotext -_acltotext32 = acltotext32 -acos -_acos = acos -acosf -_acosf = acosf -acosh -_acosh = acosh -acoshf -_acoshf = acoshf -alarm -_alarm = alarm -alphasort -_alphasort = alphasort -argz_add -__argz_add = argz_add -argz_add_sep -__argz_add_sep = argz_add_sep -argz_append -__argz_append = argz_append -argz_count -__argz_count = argz_count -argz_create -__argz_create = argz_create -argz_create_sep -__argz_create_sep = argz_create_sep -argz_delete -__argz_delete = argz_delete -argz_extract -__argz_extract = argz_extract -argz_insert -__argz_insert = argz_insert -argz_next -__argz_next = argz_next -argz_replace -__argz_replace = argz_replace -argz_stringify -__argz_stringify = argz_stringify -asctime -_asctime = asctime -asctime_r -_asctime_r = asctime_r -asin -_asin = asin -asinf -_asinf = asinf -asinh -_asinh = asinh -asinhf -_asinhf = asinhf -asprintf -_asprintf = asprintf -atan -_atan = atan -atan2 -_atan2 = atan2 -atan2f -_atan2f = atan2f -atanf -_atanf = atanf -atanh -_atanh = atanh -atanhf -_atanhf = atanhf -atexit = cygwin_atexit -_atexit = cygwin_atexit -atof -_atof = atof -atoff -_atoff = atoff -atoi -_atoi = atoi -atol -_atol = atol -bcmp -_bcmp = bcmp -bcopy -_bcopy = bcopy -bsearch -_bsearch = bsearch -btowc -bzero -_bzero = bzero -cabs -_cabs = cabs -cabsf -_cabsf = cabsf -calloc -_calloc = calloc -cbrt -_cbrt = cbrt -cbrtf -_cbrtf = cbrtf -ceil -_ceil = ceil -ceilf -_ceilf = ceilf -cfgetispeed -cfgetospeed -cfsetispeed -cfsetospeed -chdir -_chdir = chdir -chmod -_chmod = chmod -chown -_chown = chown -_chown32 = chown32 -chroot -_chroot = chroot -cleanup_glue -clearerr -_clearerr = clearerr -clock -_clock = clock -close -_close = close -closedir -_closedir = closedir -closelog -_closelog = closelog -copysign -_copysign = copysign -copysignf -_copysignf = copysignf -cos -_cos = cos -cosf -_cosf = cosf -cosh -_cosh = cosh -coshf -_coshf = coshf -creat -_creat = creat -ctermid -ctime -_ctime = ctime -ctime_r -_ctime_r = ctime_r -cuserid -_cuserid = cuserid -cwait -_cwait = cwait -accept = cygwin_accept -cygwin_attach_handle_to_fd -cygwin32_attach_handle_to_fd = cygwin_attach_handle_to_fd -bind = cygwin_bind -connect = cygwin_connect -cygwin_conv_to_full_posix_path -cygwin32_conv_to_full_posix_path = cygwin_conv_to_full_posix_path -cygwin_conv_to_full_win32_path -cygwin32_conv_to_full_win32_path = cygwin_conv_to_full_win32_path -cygwin_conv_to_posix_path -cygwin32_conv_to_posix_path = cygwin_conv_to_posix_path -cygwin_conv_to_win32_path -cygwin32_conv_to_win32_path = cygwin_conv_to_win32_path -cygwin_detach_dll -cygwin32_detach_dll = cygwin_detach_dll -cygwin_dll_init -endprotoent = cygwin_endprotoent -endservent = cygwin_endservent -endusershell -gethostbyaddr = cygwin_gethostbyaddr -gethostbyname = cygwin_gethostbyname -_gethostname = cygwin_gethostname -gethostname = cygwin_gethostname -getpeername = cygwin_getpeername -getprotobyname = cygwin_getprotobyname -getprotobynumber = cygwin_getprotobynumber -getprotoent = cygwin_getprotoent -getservbyname = cygwin_getservbyname -getservbyport = cygwin_getservbyport -getservent = cygwin_getservent -getsockname = cygwin_getsockname -getsockopt = cygwin_getsockopt -getusershell -herror = cygwin_herror -hstrerror = cygwin_hstrerror -inet_addr = cygwin_inet_addr -inet_aton = cygwin_inet_aton -inet_network = cygwin_inet_network -inet_ntoa = cygwin_inet_ntoa -cygwin_internal -cygwin32_internal = cygwin_internal -listen = cygwin_listen -cygwin_logon_user -lstat -_lstat = lstat -cygwin_posix_path_list_p -cygwin32_posix_path_list_p = cygwin_posix_path_list_p -cygwin_posix_to_win32_path_list -cygwin32_posix_to_win32_path_list = cygwin_posix_to_win32_path_list -cygwin_posix_to_win32_path_list_buf_size -cygwin32_posix_to_win32_path_list_buf_size = cygwin_posix_to_win32_path_list_buf_size -rcmd = cygwin_rcmd -recv = cygwin_recv -recvfrom = cygwin_recvfrom -recvmsg = cygwin_recvmsg -rexec = cygwin_rexec -rresvport = cygwin_rresvport -_select = cygwin_select -select = cygwin_select -send = cygwin_send -sendmsg = cygwin_sendmsg -sendto = cygwin_sendto -cygwin_set_impersonation_token -setprotoent = cygwin_setprotoent -setservent = cygwin_setservent -setsockopt = cygwin_setsockopt -setusershell -shutdown = cygwin_shutdown -socket = cygwin_socket -cygwin_split_path -cygwin32_split_path = cygwin_split_path -cygwin_stackdump -cygwin_umount -cygwin_win32_to_posix_path_list -cygwin32_win32_to_posix_path_list = cygwin_win32_to_posix_path_list -cygwin_win32_to_posix_path_list_buf_size -cygwin32_win32_to_posix_path_list_buf_size = cygwin_win32_to_posix_path_list_buf_size -cygwin_winpid_to_pid -cygwin32_winpid_to_pid = cygwin_winpid_to_pid -daemon -difftime -_difftime = difftime -dirfd -_dirfd = dirfd -div -_div = div -dlclose -dlerror -dlfork -dll_crt0__FP11per_process -dll_dllcrt0 -dll_noncygwin_dllcrt0 -dlopen -dlsym -drand48 -_drand48 = drand48 -drem -_drem = drem -dremf -_dremf = dremf -dup -_dup = dup -dup2 -_dup2 = dup2 -ecvt -_ecvt = ecvt -ecvtbuf -_ecvtbuf = ecvtbuf -ecvtf -_ecvtf = ecvtf -endgrent -_endgrent = endgrent -endhostent -endmntent -_endmntent = endmntent -endpwent -_endpwent = endpwent -endutent -_endutent = endutent -envz_add -__envz_add = envz_add -envz_entry -__envz_entry = envz_entry -envz_get -__envz_get = envz_get -envz_merge -__envz_merge = envz_merge -envz_remove -__envz_remove = envz_remove -envz_strip -__envz_strip = envz_strip -erand48 -_erand48 = erand48 -erf -_erf = erf -erfc -_erfc = erfc -erfcf -_erfcf = erfcf -erff -_erff = erff -err -errx -verr -verrx -warn -warnx -vwarn -vwarnx -execl -_execl = execl -execle -_execle = execle -execlp -_execlp = execlp -execv -_execv = execv -execve -_execve = execve -execvp -_execvp = execvp -exit = cygwin_exit -exp -_exp = exp -exp2 -exp2f -expf -_expf = expf -expm1 -_expm1 = expm1 -expm1f -_expm1f = expm1f -fabs -_fabs = fabs -fabsf -_fabsf = fabsf -facl -_facl = facl -_facl32 = facl32 -fchdir -_fchdir = fchdir -fchmod -_fchmod = fchmod -fchown -_fchown = fchown -_fchown32 = fchown32 -fclose -_fclose = fclose -fcloseall -_fcloseall = fcloseall -fcntl -_fcntl = fcntl -fcvt -_fcvt = fcvt -fcvtbuf -_fcvtbuf = fcvtbuf -fcvtf -_fcvtf = fcvtf -fdim -fdimf -fdopen -_fdopen = fdopen -_fdopen64 = fdopen64 -feof -_feof = feof -ferror -_ferror = ferror -fflush -_fflush = fflush -ffs -_ffs = ffs -fgetc -_fgetc = fgetc -fgetpos -_fgetpos = fgetpos -_fgetpos64 = fgetpos64 -fgets -_fgets = fgets -fileno -_fileno = fileno -finite -_finite = finite -finitef -_finitef = finitef -fiprintf -_fiprintf = fiprintf -floor -_floor = floor -floorf -_floorf = floorf -fma -fmaf -fmax -fmaxf -fmin -fminf -fmod -_fmod = fmod -fmodf -_fmodf = fmodf -fnmatch -_fnmatch = fnmatch -fopen -_fopen = fopen -_fopen64 = fopen64 -fork -_fork = fork -forkpty -fpathconf -fprintf -_fprintf = fprintf -fputc -_fputc = fputc -fputs -_fputs = fputs -fread -_fread = fread -free -_free = free -freopen -_freopen = freopen -_freopen64 = freopen64 -frexp -_frexp = frexp -frexpf -_frexpf = frexpf -fscanf -_fscanf = fscanf -fseek -_fseek = fseek -fseeko -_fseeko = fseeko -_fseeko64 = fseeko64 -fsetpos -_fsetpos = fsetpos -_fsetpos64 = fsetpos64 -_fstat64 = fstat64 -fstatfs -_fstatfs = fstatfs -fsync -_fsync = fsync -ftell -_ftell = ftell -ftello -_ftello = ftello -_ftello64 = ftello64 -ftime -_ftime = ftime -ftok -_ftok = ftok -ftruncate -_ftruncate = ftruncate -_ftruncate64 = ftruncate64 -fwrite -_fwrite = fwrite -gamma -_gamma = gamma -gamma_r -_gamma_r = gamma_r -gammaf -_gammaf = gammaf -gammaf_r -_gammaf_r = gammaf_r -gcvt -_gcvt = gcvt -gcvtf -_gcvtf = gcvtf -get_osfhandle -_get_osfhandle = get_osfhandle -getc -_getc = getc -getc_unlocked -_getc_unlocked = getc_unlocked -getchar -_getchar = getchar -getchar_unlocked -_getchar_unlocked = getchar_unlocked -getcwd -_getcwd = getcwd -getdomainname -_getdomainname = getdomainname -getdtablesize -_getdtablesize = getdtablesize -getegid -_getegid = getegid -_getegid32 = getegid32 -getenv -_getenv = getenv -geteuid -_geteuid = geteuid -_geteuid32 = geteuid32 -getgid -_getgid = getgid -_getgid32 = getgid32 -getgrent -_getgrent = getgrent -_getgrent32 = getgrent32 -getgrgid -_getgrgid = getgrgid -_getgrgid32 = getgrgid32 -getgrnam -_getgrnam = getgrnam -_getgrnam32 = getgrnam32 -getgroups -_getgroups = getgroups -_getgroups32 = getgroups32 -gethostid -getitimer -getlogin -_getlogin = getlogin -getmntent -_getmntent = getmntent -getmode -_getmode = getmode -getopt -getopt_long -getpagesize -_getpagesize = getpagesize -getpass -_getpass = getpass -getpgid -getpgrp -_getpgrp = getpgrp -getpid -_getpid = getpid -getppid -_getppid = getppid -getprogname -getpwduid -_getpwduid = getpwduid -getpwent -_getpwent = getpwent -getpwnam -_getpwnam = getpwnam -getpwnam_r -getpwuid -_getpwuid = getpwuid -_getpwuid32 = getpwuid32 -getpwuid_r -_getpwuid_r32 = getpwuid_r32 -getrlimit -_getrlimit = getrlimit -getrusage -_getrusage = getrusage -gets -_gets = gets -getsid -gettimeofday -_gettimeofday = gettimeofday -getuid -_getuid = getuid -_getuid32 = getuid32 -getutent -_getutent = getutent -getutid -_getutid = getutid -getutline -_getutline = getutline -getw -_getw = getw -getwd -_getwd = getwd -glob -_glob = glob -globfree -_globfree = globfree -gmtime -_gmtime = gmtime -gmtime_r -_gmtime_r = gmtime_r -grantpt -hcreate -hcreate_r -hdestroy -hdestroy_r -hsearch -hsearch_r -htonl -_htonl = htonl -htons -_htons = htons -hypot -_hypot = hypot -hypotf -_hypotf = hypotf -ilogb -_ilogb = ilogb -ilogbf -_ilogbf = ilogbf -index -_index = index -inet_makeaddr -inet_netof -infinity -_infinity = infinity -infinityf -_infinityf = infinityf -initgroups -_initgroups32 = initgroups32 -initstate -ioctl -_ioctl = ioctl -iprintf -_iprintf = iprintf -iruserok -ruserok -isalnum -_isalnum = isalnum -isalpha -_isalpha = isalpha -isascii -_isascii = isascii -isatty -_isatty = isatty -isblank -iscntrl -_iscntrl = iscntrl -isdigit -_isdigit = isdigit -isgraph -_isgraph = isgraph -isinf -_isinf = isinf -isinff -_isinff = isinff -islower -_islower = islower -isnan -_isnan = isnan -isnanf -_isnanf = isnanf -isprint -_isprint = isprint -ispunct -_ispunct = ispunct -isspace -_isspace = isspace -isupper -_isupper = isupper -iswalnum -iswalpha -iswblank -iswcntrl -iswctype -iswdigit -iswgraph -iswlower -iswprint -iswpunct -iswspace -iswupper -iswxdigit -isxdigit -_isxdigit = isxdigit -j0 -_j0 = j0 -j0f -_j0f = j0f -j1 -_j1 = j1 -j1f -_j1f = j1f -jn -_jn = jn -jnf -_jnf = jnf -jrand48 -_jrand48 = jrand48 -kill -_kill = kill -killpg -l64a -labs -_labs = labs -lacl -_lacl = lacl -lchown -_lchown = lchown -_lchown32 = lchown32 -lcong48 -_lcong48 = lcong48 -ldexp -_ldexp = ldexp -ldexpf -_ldexpf = ldexpf -ldiv -_ldiv = ldiv -lgamma -_lgamma = lgamma -lgamma_r -_lgamma_r = lgamma_r -lgammaf -_lgammaf = lgammaf -lgammaf_r -_lgammaf_r = lgammaf_r -link -_link = link -localeconv -_localeconv = localeconv -localtime -_localtime = localtime -localtime_r -_localtime_r = localtime_r -log -_log = log -log10 -_log10 = log10 -log10f -_log10f = log10f -log1p -_log1p = log1p -log1pf -_log1pf = log1pf -logb -_logb = logb -logbf -_logbf = logbf -logf -_logf = logf -login -login_tty -logout -logwtmp -updwtmp -longjmp -_longjmp = longjmp -lrand48 -_lrand48 = lrand48 -lrint -lrintf -lround -lroundf -lseek -_lseek = lseek -_lseek64 = lseek64 -_lstat64 = lstat64 -mallinfo -malloc -_malloc = malloc -malloc_stats -malloc_trim -malloc_usable_size -mallopt -matherr -_matherr = matherr -mblen -_mblen = mblen -mbrlen -mbrtowc -mbsinit -mbsrtowcs -mbstowcs -_mbstowcs = mbstowcs -mbtowc -_mbtowc = mbtowc -memalign -memccpy -_memccpy = memccpy -memchr -_memchr = memchr -memcmp -_memcmp = memcmp -memcpy -_memcpy = memcpy -memmove -_memmove = memmove -mempcpy -__mempcpy = mempcpy -memset -_memset = memset -mkdir -_mkdir = mkdir -mkfifo -mknod -_mknod = mknod -_mknod32 = mknod32 -mkstemp -_mkstemp = mkstemp -mktemp -_mktemp = mktemp -mktime -_mktime = mktime -mmap -_mmap64 = mmap64 -modf -_modf = modf -modff -_modff = modff -mount -_mount = mount -mprotect -mrand48 -msgctl -msgget -msgrcv -msgsnd -msync -munmap -nan -_nan = nan -nanf -_nanf = nanf -nanosleep -_nanosleep = nanosleep -nearbyint -nearbyintf -nextafter -_nextafter = nextafter -nextafterf -_nextafterf = nextafterf -nice -_nice = nice -nl_langinfo -_nl_langinfo = nl_langinfo -nrand48 -_nrand48 = nrand48 -ntohl -_ntohl = ntohl -ntohs -_ntohs = ntohs -on_exit -open -_open = open +_alloca NOSIGFE +dll_entry@12 NOSIGFE +__assert SIGFE +__assertfail SIGFE +__eprintf SIGFE +__errno NOSIGFE +__fpclassifyd NOSIGFE +__fpclassifyf NOSIGFE +__getreent NOSIGFE +__infinity NOSIGFE +__main SIGFE +__signbitd NOSIGFE +__signbitf NOSIGFE +__signgam NOSIGFE +__srget SIGFE +__swbuf SIGFE +_asprintf_r SIGFE +asprintf_r = _asprintf_r SIGFE +_dll_crt0@0 NOSIGFE +_exit SIGFE +_f_atan2 NOSIGFE +__f_atan2 = _f_atan2 NOSIGFE +_f_atan2f NOSIGFE +__f_atan2f = _f_atan2f NOSIGFE +_f_exp NOSIGFE +__f_exp = _f_exp NOSIGFE +_f_expf NOSIGFE +__f_expf = _f_expf NOSIGFE +_f_frexp NOSIGFE +__f_frexp = _f_frexp NOSIGFE +_f_frexpf NOSIGFE +__f_frexpf = _f_frexpf NOSIGFE +_f_ldexp NOSIGFE +__f_ldexp = _f_ldexp NOSIGFE +_f_ldexpf NOSIGFE +__f_ldexpf = _f_ldexpf NOSIGFE +_f_log NOSIGFE +__f_log = _f_log NOSIGFE +_f_log10 NOSIGFE +__f_log10 = _f_log10 NOSIGFE +_f_log10f NOSIGFE +__f_log10f = _f_log10f NOSIGFE +_f_logf NOSIGFE +__f_logf = _f_logf NOSIGFE +_f_pow NOSIGFE +__f_pow = _f_pow NOSIGFE +_f_powf NOSIGFE +__f_powf = _f_powf NOSIGFE +_f_tan NOSIGFE +__f_tan = _f_tan NOSIGFE +_f_tanf NOSIGFE +__f_tanf = _f_tanf NOSIGFE +_fcloseall_r SIGFE +fcloseall_r = _fcloseall_r SIGFE +_fscanf_r SIGFE +fscanf_r = _fscanf_r SIGFE +fstat SIGFE +_fstat = fstat SIGFE +_pipe SIGFE +_pthread_cleanup_pop NOSIGFE +_pthread_cleanup_push NOSIGFE +_scanf_r SIGFE +scanf_r = _scanf_r SIGFE +_sscanf_r SIGFE +sscanf_r = _sscanf_r SIGFE +stat SIGFE +_stat = stat SIGFE +_strtold SIGFE +trunc NOSIGFE +_vasprintf_r SIGFE +vasprintf_r = _vasprintf_r SIGFE +_vfscanf_r NOSIGFE +vfscanf_r = _vfscanf_r NOSIGFE +_vscanf_r SIGFE +vscanf_r = _vscanf_r SIGFE +_vsscanf_r SIGFE +vsscanf_r = _vsscanf_r SIGFE +a64l NOSIGFE +abort SIGFE +_abort = abort SIGFE +abs NOSIGFE +_abs = abs NOSIGFE +access SIGFE +_access = access SIGFE +acl SIGFE +_acl = acl SIGFE +_acl32 = acl32 SIGFE +aclcheck NOSIGFE +_aclcheck = aclcheck NOSIGFE +_aclcheck32 = aclcheck32 NOSIGFE +aclfrommode SIGFE +_aclfrommode = aclfrommode SIGFE +_aclfrommode32 = aclfrommode32 SIGFE +aclfrompbits SIGFE +_aclfrompbits = aclfrompbits SIGFE +_aclfrompbits32 = aclfrompbits32 SIGFE +aclfromtext SIGFE +_aclfromtext = aclfromtext SIGFE +_aclfromtext32 = aclfromtext32 SIGFE +aclsort SIGFE +_aclsort = aclsort SIGFE +_aclsort32 = aclsort32 SIGFE +acltomode SIGFE +_acltomode = acltomode SIGFE +_acltomode32 = acltomode32 SIGFE +acltopbits SIGFE +_acltopbits = acltopbits SIGFE +_acltopbits32 = acltopbits32 SIGFE +acltotext SIGFE +_acltotext = acltotext SIGFE +_acltotext32 = acltotext32 SIGFE +acos NOSIGFE +_acos = acos NOSIGFE +acosf NOSIGFE +_acosf = acosf NOSIGFE +acosh NOSIGFE +_acosh = acosh NOSIGFE +acoshf NOSIGFE +_acoshf = acoshf NOSIGFE +alarm SIGFE +_alarm = alarm SIGFE +alphasort NOSIGFE +_alphasort = alphasort NOSIGFE +argz_add SIGFE +__argz_add = argz_add SIGFE +argz_add_sep SIGFE +__argz_add_sep = argz_add_sep SIGFE +argz_append SIGFE +__argz_append = argz_append SIGFE +argz_count NOSIGFE +__argz_count = argz_count NOSIGFE +argz_create SIGFE +__argz_create = argz_create SIGFE +argz_create_sep SIGFE +__argz_create_sep = argz_create_sep SIGFE +argz_delete SIGFE +__argz_delete = argz_delete SIGFE +argz_extract NOSIGFE +__argz_extract = argz_extract NOSIGFE +argz_insert SIGFE +__argz_insert = argz_insert SIGFE +argz_next NOSIGFE +__argz_next = argz_next NOSIGFE +argz_replace SIGFE +__argz_replace = argz_replace SIGFE +argz_stringify NOSIGFE +__argz_stringify = argz_stringify NOSIGFE +asctime SIGFE +_asctime = asctime SIGFE +asctime_r SIGFE +_asctime_r = asctime_r SIGFE +asin NOSIGFE +_asin = asin NOSIGFE +asinf NOSIGFE +_asinf = asinf NOSIGFE +asinh NOSIGFE +_asinh = asinh NOSIGFE +asinhf NOSIGFE +_asinhf = asinhf NOSIGFE +asprintf SIGFE +_asprintf = asprintf SIGFE +atan NOSIGFE +_atan = atan NOSIGFE +atan2 NOSIGFE +_atan2 = atan2 NOSIGFE +atan2f NOSIGFE +_atan2f = atan2f NOSIGFE +atanf NOSIGFE +_atanf = atanf NOSIGFE +atanh NOSIGFE +_atanh = atanh NOSIGFE +atanhf NOSIGFE +_atanhf = atanhf NOSIGFE +atexit = cygwin_atexit SIGFE +_atexit = cygwin_atexit SIGFE +atof SIGFE +_atof = atof SIGFE +atoff SIGFE +_atoff = atoff SIGFE +atoi NOSIGFE +_atoi = atoi NOSIGFE +atol NOSIGFE +_atol = atol NOSIGFE +bcmp NOSIGFE +_bcmp = bcmp NOSIGFE +bcopy NOSIGFE +_bcopy = bcopy NOSIGFE +bsearch NOSIGFE +_bsearch = bsearch NOSIGFE +btowc NOSIGFE +bzero NOSIGFE +_bzero = bzero NOSIGFE +cabs NOSIGFE +_cabs = cabs NOSIGFE +cabsf NOSIGFE +_cabsf = cabsf NOSIGFE +calloc SIGFE +_calloc = calloc SIGFE +cbrt NOSIGFE +_cbrt = cbrt NOSIGFE +cbrtf NOSIGFE +_cbrtf = cbrtf NOSIGFE +ceil NOSIGFE +_ceil = ceil NOSIGFE +ceilf NOSIGFE +_ceilf = ceilf NOSIGFE +cfgetispeed NOSIGFE +cfgetospeed NOSIGFE +cfsetispeed SIGFE +cfsetospeed SIGFE +chdir SIGFE +_chdir = chdir SIGFE +chmod SIGFE +_chmod = chmod SIGFE +chown SIGFE +_chown = chown SIGFE +_chown32 = chown32 SIGFE +chroot SIGFE +_chroot = chroot SIGFE +cleanup_glue NOSIGFE +clearerr NOSIGFE +_clearerr = clearerr NOSIGFE +clock NOSIGFE +_clock = clock NOSIGFE +close SIGFE +_close = close SIGFE +closedir SIGFE +_closedir = closedir SIGFE +closelog NOSIGFE +_closelog = closelog NOSIGFE +copysign NOSIGFE +_copysign = copysign NOSIGFE +copysignf NOSIGFE +_copysignf = copysignf NOSIGFE +cos NOSIGFE +_cos = cos NOSIGFE +cosf NOSIGFE +_cosf = cosf NOSIGFE +cosh NOSIGFE +_cosh = cosh NOSIGFE +coshf NOSIGFE +_coshf = coshf NOSIGFE +creat SIGFE +_creat = creat SIGFE +ctermid NOSIGFE +ctime SIGFE +_ctime = ctime SIGFE +ctime_r SIGFE +_ctime_r = ctime_r SIGFE +cuserid NOSIGFE +_cuserid = cuserid NOSIGFE +cwait SIGFE +_cwait = cwait SIGFE +accept = cygwin_accept SIGFE +cygwin_attach_handle_to_fd SIGFE +cygwin32_attach_handle_to_fd = cygwin_attach_handle_to_fd SIGFE +bind = cygwin_bind SIGFE +connect = cygwin_connect SIGFE +cygwin_conv_to_full_posix_path SIGFE +cygwin32_conv_to_full_posix_path = cygwin_conv_to_full_posix_path SIGFE +cygwin_conv_to_full_win32_path SIGFE +cygwin32_conv_to_full_win32_path = cygwin_conv_to_full_win32_path SIGFE +cygwin_conv_to_posix_path SIGFE +cygwin32_conv_to_posix_path = cygwin_conv_to_posix_path SIGFE +cygwin_conv_to_win32_path SIGFE +cygwin32_conv_to_win32_path = cygwin_conv_to_win32_path SIGFE +cygwin_detach_dll SIGFE +cygwin32_detach_dll = cygwin_detach_dll SIGFE +cygwin_dll_init SIGFE +endprotoent = cygwin_endprotoent SIGFE +endservent = cygwin_endservent SIGFE +endusershell SIGFE +err SIGFE +errx SIGFE +gethostbyaddr = cygwin_gethostbyaddr SIGFE +gethostbyname = cygwin_gethostbyname SIGFE +_gethostname = cygwin_gethostname SIGFE +gethostname = cygwin_gethostname SIGFE +getpeername = cygwin_getpeername SIGFE +getprogname NOSIGFE +getprotobyname = cygwin_getprotobyname SIGFE +getprotobynumber = cygwin_getprotobynumber SIGFE +getprotoent = cygwin_getprotoent SIGFE +getservbyname = cygwin_getservbyname SIGFE +getservbyport = cygwin_getservbyport SIGFE +getservent = cygwin_getservent SIGFE +getsockname = cygwin_getsockname SIGFE +getsockopt = cygwin_getsockopt SIGFE +getusershell SIGFE +herror = cygwin_herror SIGFE +hstrerror = cygwin_hstrerror NOSIGFE +inet_addr = cygwin_inet_addr SIGFE +inet_aton = cygwin_inet_aton SIGFE +inet_network = cygwin_inet_network SIGFE +inet_ntoa = cygwin_inet_ntoa SIGFE +cygwin_internal SIGFE +cygwin32_internal = cygwin_internal SIGFE +listen = cygwin_listen SIGFE +cygwin_logon_user SIGFE +lstat SIGFE +_lstat = lstat SIGFE +cygwin_posix_path_list_p NOSIGFE +cygwin32_posix_path_list_p = cygwin_posix_path_list_p NOSIGFE +cygwin_posix_to_win32_path_list NOSIGFE +cygwin32_posix_to_win32_path_list = cygwin_posix_to_win32_path_list NOSIGFE +cygwin_posix_to_win32_path_list_buf_size SIGFE +cygwin32_posix_to_win32_path_list_buf_size = cygwin_posix_to_win32_path_list_buf_size SIGFE +rcmd = cygwin_rcmd SIGFE +recv = cygwin_recv SIGFE +recvfrom = cygwin_recvfrom SIGFE +recvmsg = cygwin_recvmsg SIGFE +rexec = cygwin_rexec SIGFE +rresvport = cygwin_rresvport SIGFE +_select = cygwin_select SIGFE +select = cygwin_select SIGFE +send = cygwin_send SIGFE +sendmsg = cygwin_sendmsg SIGFE +sendto = cygwin_sendto SIGFE +cygwin_set_impersonation_token SIGFE +setprogname SIGFE +setprotoent = cygwin_setprotoent SIGFE +setservent = cygwin_setservent SIGFE +setsockopt = cygwin_setsockopt SIGFE +setusershell SIGFE +shutdown = cygwin_shutdown SIGFE +socket = cygwin_socket SIGFE +cygwin_split_path NOSIGFE +cygwin32_split_path = cygwin_split_path NOSIGFE +cygwin_stackdump SIGFE +cygwin_umount SIGFE +cygwin_win32_to_posix_path_list NOSIGFE +cygwin32_win32_to_posix_path_list = cygwin_win32_to_posix_path_list NOSIGFE +cygwin_win32_to_posix_path_list_buf_size SIGFE +cygwin32_win32_to_posix_path_list_buf_size = cygwin_win32_to_posix_path_list_buf_size SIGFE +cygwin_winpid_to_pid SIGFE +cygwin32_winpid_to_pid = cygwin_winpid_to_pid SIGFE +daemon SIGFE +difftime NOSIGFE +_difftime = difftime NOSIGFE +dirfd SIGFE +_dirfd = dirfd SIGFE +div NOSIGFE +_div = div NOSIGFE +dlclose SIGFE +dlerror NOSIGFE +dlfork NOSIGFE +dll_crt0__FP11per_process SIGFE +dll_dllcrt0 SIGFE +dll_noncygwin_dllcrt0 SIGFE +dlopen SIGFE +dlsym SIGFE +drand48 NOSIGFE +_drand48 = drand48 NOSIGFE +drem NOSIGFE +_drem = drem NOSIGFE +dremf NOSIGFE +_dremf = dremf NOSIGFE +dup SIGFE +_dup = dup SIGFE +dup2 SIGFE +_dup2 = dup2 SIGFE +ecvt SIGFE +_ecvt = ecvt SIGFE +ecvtbuf SIGFE +_ecvtbuf = ecvtbuf SIGFE +ecvtf SIGFE +_ecvtf = ecvtf SIGFE +endgrent NOSIGFE +_endgrent = endgrent NOSIGFE +endhostent NOSIGFE +endmntent NOSIGFE +_endmntent = endmntent NOSIGFE +endpwent NOSIGFE +_endpwent = endpwent NOSIGFE +endutent SIGFE +_endutent = endutent SIGFE +envz_add SIGFE +__envz_add = envz_add SIGFE +envz_entry NOSIGFE +__envz_entry = envz_entry NOSIGFE +envz_get NOSIGFE +__envz_get = envz_get NOSIGFE +envz_merge SIGFE +__envz_merge = envz_merge SIGFE +envz_remove SIGFE +__envz_remove = envz_remove SIGFE +envz_strip SIGFE +__envz_strip = envz_strip SIGFE +erand48 NOSIGFE +_erand48 = erand48 NOSIGFE +erf NOSIGFE +_erf = erf NOSIGFE +erfc NOSIGFE +_erfc = erfc NOSIGFE +erfcf NOSIGFE +_erfcf = erfcf NOSIGFE +erff NOSIGFE +_erff = erff NOSIGFE +execl SIGFE +_execl = execl SIGFE +execle SIGFE +_execle = execle SIGFE +execlp SIGFE +_execlp = execlp SIGFE +execv SIGFE +_execv = execv SIGFE +execve SIGFE +_execve = execve SIGFE +execvp SIGFE +_execvp = execvp SIGFE +exit = cygwin_exit SIGFE +exp NOSIGFE +_exp = exp NOSIGFE +exp2 NOSIGFE +exp2f NOSIGFE +expf NOSIGFE +_expf = expf NOSIGFE +expm1 NOSIGFE +_expm1 = expm1 NOSIGFE +expm1f NOSIGFE +_expm1f = expm1f NOSIGFE +fabs NOSIGFE +_fabs = fabs NOSIGFE +fabsf NOSIGFE +_fabsf = fabsf NOSIGFE +facl SIGFE +_facl = facl SIGFE +_facl32 = facl32 SIGFE +fchdir SIGFE +_fchdir = fchdir SIGFE +fchmod SIGFE +_fchmod = fchmod SIGFE +fchown SIGFE +_fchown = fchown SIGFE +_fchown32 = fchown32 SIGFE +fclose SIGFE +_fclose = fclose SIGFE +fcloseall SIGFE +_fcloseall = fcloseall SIGFE +fcntl NOSIGFE +_fcntl = fcntl NOSIGFE +fcvt SIGFE +_fcvt = fcvt SIGFE +fcvtbuf SIGFE +_fcvtbuf = fcvtbuf SIGFE +fcvtf SIGFE +_fcvtf = fcvtf SIGFE +fdim NOSIGFE +fdimf NOSIGFE +fdopen SIGFE +_fdopen = fdopen SIGFE +_fdopen64 = fdopen64 SIGFE +feof NOSIGFE +_feof = feof NOSIGFE +ferror NOSIGFE +_ferror = ferror NOSIGFE +fflush NOSIGFE +_fflush = fflush NOSIGFE +ffs NOSIGFE +_ffs = ffs NOSIGFE +fgetc SIGFE +_fgetc = fgetc SIGFE +fgetpos NOSIGFE +_fgetpos = fgetpos NOSIGFE +_fgetpos64 = fgetpos64 NOSIGFE +fgets SIGFE +_fgets = fgets SIGFE +fileno NOSIGFE +_fileno = fileno NOSIGFE +finite NOSIGFE +_finite = finite NOSIGFE +finitef NOSIGFE +_finitef = finitef NOSIGFE +fiprintf SIGFE +_fiprintf = fiprintf SIGFE +floor NOSIGFE +_floor = floor NOSIGFE +floorf NOSIGFE +_floorf = floorf NOSIGFE +fma NOSIGFE +fmaf NOSIGFE +fmax NOSIGFE +fmaxf NOSIGFE +fmin NOSIGFE +fminf NOSIGFE +fmod NOSIGFE +_fmod = fmod NOSIGFE +fmodf NOSIGFE +_fmodf = fmodf NOSIGFE +fnmatch NOSIGFE +_fnmatch = fnmatch NOSIGFE +fopen SIGFE +_fopen = fopen SIGFE +_fopen64 = fopen64 SIGFE +fork SIGFE +_fork = fork SIGFE +forkpty SIGFE +fpathconf SIGFE +fprintf SIGFE +_fprintf = fprintf SIGFE +fputc NOSIGFE +_fputc = fputc NOSIGFE +fputs SIGFE +_fputs = fputs SIGFE +fread SIGFE +_fread = fread SIGFE +free SIGFE +_free = free SIGFE +freopen SIGFE +_freopen = freopen SIGFE +_freopen64 = freopen64 SIGFE +frexp NOSIGFE +_frexp = frexp NOSIGFE +frexpf NOSIGFE +_frexpf = frexpf NOSIGFE +fscanf SIGFE +_fscanf = fscanf SIGFE +fseek SIGFE +_fseek = fseek SIGFE +fseeko SIGFE +_fseeko = fseeko SIGFE +_fseeko64 = fseeko64 SIGFE +fsetpos SIGFE +_fsetpos = fsetpos SIGFE +_fsetpos64 = fsetpos64 SIGFE +_fstat64 = fstat64 SIGFE +fstatfs SIGFE +_fstatfs = fstatfs SIGFE +fsync SIGFE +_fsync = fsync SIGFE +ftell NOSIGFE +_ftell = ftell NOSIGFE +ftello NOSIGFE +_ftello = ftello NOSIGFE +_ftello64 = ftello64 NOSIGFE +ftime SIGFE +_ftime = ftime SIGFE +ftok SIGFE +_ftok = ftok SIGFE +ftruncate SIGFE +_ftruncate = ftruncate SIGFE +_ftruncate64 = ftruncate64 SIGFE +fwrite SIGFE +_fwrite = fwrite SIGFE +gamma NOSIGFE +_gamma = gamma NOSIGFE +gamma_r NOSIGFE +_gamma_r = gamma_r NOSIGFE +gammaf NOSIGFE +_gammaf = gammaf NOSIGFE +gammaf_r NOSIGFE +_gammaf_r = gammaf_r NOSIGFE +gcvt SIGFE +_gcvt = gcvt SIGFE +gcvtf SIGFE +_gcvtf = gcvtf SIGFE +get_osfhandle SIGFE +_get_osfhandle = get_osfhandle SIGFE +getc SIGFE +_getc = getc SIGFE +getc_unlocked SIGFE +_getc_unlocked = getc_unlocked SIGFE +getchar NOSIGFE +_getchar = getchar NOSIGFE +getchar_unlocked NOSIGFE +_getchar_unlocked = getchar_unlocked NOSIGFE +getcwd SIGFE +_getcwd = getcwd SIGFE +getdomainname SIGFE +_getdomainname = getdomainname SIGFE +getdtablesize NOSIGFE +_getdtablesize = getdtablesize NOSIGFE +getegid NOSIGFE +_getegid = getegid NOSIGFE +_getegid32 = getegid32 NOSIGFE +getenv NOSIGFE +_getenv = getenv NOSIGFE +geteuid NOSIGFE +_geteuid = geteuid NOSIGFE +_geteuid32 = geteuid32 NOSIGFE +getgid NOSIGFE +_getgid = getgid NOSIGFE +_getgid32 = getgid32 NOSIGFE +getgrent SIGFE +_getgrent = getgrent SIGFE +_getgrent32 = getgrent32 SIGFE +getgrgid SIGFE +_getgrgid = getgrgid SIGFE +_getgrgid32 = getgrgid32 SIGFE +getgrnam SIGFE +_getgrnam = getgrnam SIGFE +_getgrnam32 = getgrnam32 SIGFE +getgroups SIGFE +_getgroups = getgroups SIGFE +_getgroups32 = getgroups32 SIGFE +gethostid SIGFE +getitimer SIGFE +getlogin NOSIGFE +_getlogin = getlogin NOSIGFE +getmntent SIGFE +_getmntent = getmntent SIGFE +getmode SIGFE +_getmode = getmode SIGFE +getopt SIGFE +getopt_long SIGFE +getpagesize SIGFE +_getpagesize = getpagesize SIGFE +getpass SIGFE +_getpass = getpass SIGFE +getpgid SIGFE +getpgrp SIGFE +_getpgrp = getpgrp SIGFE +getpid NOSIGFE +_getpid = getpid NOSIGFE +getppid NOSIGFE +_getppid = getppid NOSIGFE +getpwduid NOSIGFE +_getpwduid = getpwduid NOSIGFE +getpwent SIGFE +_getpwent = getpwent SIGFE +getpwnam SIGFE +_getpwnam = getpwnam SIGFE +getpwnam_r SIGFE +getpwuid SIGFE +_getpwuid = getpwuid SIGFE +_getpwuid32 = getpwuid32 SIGFE +getpwuid_r SIGFE +_getpwuid_r32 = getpwuid_r32 SIGFE +getrlimit SIGFE +_getrlimit = getrlimit SIGFE +getrusage SIGFE +_getrusage = getrusage SIGFE +gets NOSIGFE +_gets = gets NOSIGFE +getsid SIGFE +gettimeofday SIGFE +_gettimeofday = gettimeofday SIGFE +getuid NOSIGFE +_getuid = getuid NOSIGFE +_getuid32 = getuid32 NOSIGFE +getutent SIGFE +_getutent = getutent SIGFE +getutid SIGFE +_getutid = getutid SIGFE +getutline SIGFE +_getutline = getutline SIGFE +getw SIGFE +_getw = getw SIGFE +getwd SIGFE +_getwd = getwd SIGFE +glob SIGFE +_glob = glob SIGFE +globfree SIGFE +_globfree = globfree SIGFE +gmtime SIGFE +_gmtime = gmtime SIGFE +gmtime_r SIGFE +_gmtime_r = gmtime_r SIGFE +grantpt NOSIGFE +hcreate SIGFE +hcreate_r SIGFE +hdestroy SIGFE +hdestroy_r SIGFE +hsearch SIGFE +hsearch_r SIGFE +htonl NOSIGFE +_htonl = htonl NOSIGFE +htons NOSIGFE +_htons = htons NOSIGFE +hypot NOSIGFE +_hypot = hypot NOSIGFE +hypotf NOSIGFE +_hypotf = hypotf NOSIGFE +ilogb NOSIGFE +_ilogb = ilogb NOSIGFE +ilogbf NOSIGFE +_ilogbf = ilogbf NOSIGFE +index NOSIGFE +_index = index NOSIGFE +inet_makeaddr NOSIGFE +inet_netof NOSIGFE +infinity NOSIGFE +_infinity = infinity NOSIGFE +infinityf NOSIGFE +_infinityf = infinityf NOSIGFE +initgroups SIGFE +_initgroups32 = initgroups32 SIGFE +initstate NOSIGFE +ioctl SIGFE +_ioctl = ioctl SIGFE +iprintf SIGFE +_iprintf = iprintf SIGFE +iruserok SIGFE +ruserok SIGFE +isalnum NOSIGFE +_isalnum = isalnum NOSIGFE +isalpha NOSIGFE +_isalpha = isalpha NOSIGFE +isascii NOSIGFE +_isascii = isascii NOSIGFE +isatty SIGFE +_isatty = isatty SIGFE +isblank NOSIGFE +iscntrl NOSIGFE +_iscntrl = iscntrl NOSIGFE +isdigit NOSIGFE +_isdigit = isdigit NOSIGFE +isgraph NOSIGFE +_isgraph = isgraph NOSIGFE +isinf NOSIGFE +_isinf = isinf NOSIGFE +isinff NOSIGFE +_isinff = isinff NOSIGFE +islower NOSIGFE +_islower = islower NOSIGFE +isnan NOSIGFE +_isnan = isnan NOSIGFE +isnanf NOSIGFE +_isnanf = isnanf NOSIGFE +isprint NOSIGFE +_isprint = isprint NOSIGFE +ispunct NOSIGFE +_ispunct = ispunct NOSIGFE +isspace NOSIGFE +_isspace = isspace NOSIGFE +isupper NOSIGFE +_isupper = isupper NOSIGFE +iswalnum NOSIGFE +iswalpha NOSIGFE +iswblank NOSIGFE +iswcntrl NOSIGFE +iswctype NOSIGFE +iswdigit NOSIGFE +iswgraph NOSIGFE +iswlower NOSIGFE +iswprint NOSIGFE +iswpunct NOSIGFE +iswspace NOSIGFE +iswupper NOSIGFE +iswxdigit NOSIGFE +isxdigit NOSIGFE +_isxdigit = isxdigit NOSIGFE +j0 NOSIGFE +_j0 = j0 NOSIGFE +j0f NOSIGFE +_j0f = j0f NOSIGFE +j1 NOSIGFE +_j1 = j1 NOSIGFE +j1f NOSIGFE +_j1f = j1f NOSIGFE +jn NOSIGFE +_jn = jn NOSIGFE +jnf NOSIGFE +_jnf = jnf NOSIGFE +jrand48 NOSIGFE +_jrand48 = jrand48 NOSIGFE +kill SIGFE +_kill = kill SIGFE +killpg SIGFE +l64a NOSIGFE +labs NOSIGFE +_labs = labs NOSIGFE +lacl SIGFE +_lacl = lacl SIGFE +lchown SIGFE +_lchown = lchown SIGFE +_lchown32 = lchown32 SIGFE +lcong48 NOSIGFE +_lcong48 = lcong48 NOSIGFE +ldexp NOSIGFE +_ldexp = ldexp NOSIGFE +ldexpf NOSIGFE +_ldexpf = ldexpf NOSIGFE +ldiv NOSIGFE +_ldiv = ldiv NOSIGFE +lgamma NOSIGFE +_lgamma = lgamma NOSIGFE +lgamma_r NOSIGFE +_lgamma_r = lgamma_r NOSIGFE +lgammaf NOSIGFE +_lgammaf = lgammaf NOSIGFE +lgammaf_r NOSIGFE +_lgammaf_r = lgammaf_r NOSIGFE +link SIGFE +_link = link SIGFE +localeconv NOSIGFE +_localeconv = localeconv NOSIGFE +localtime SIGFE +_localtime = localtime SIGFE +localtime_r NOSIGFE +_localtime_r = localtime_r NOSIGFE +log NOSIGFE +_log = log NOSIGFE +log10 NOSIGFE +_log10 = log10 NOSIGFE +log10f NOSIGFE +_log10f = log10f NOSIGFE +log1p NOSIGFE +_log1p = log1p NOSIGFE +log1pf NOSIGFE +_log1pf = log1pf NOSIGFE +logb NOSIGFE +_logb = logb NOSIGFE +logbf NOSIGFE +_logbf = logbf NOSIGFE +logf NOSIGFE +_logf = logf NOSIGFE +login SIGFE +login_tty SIGFE +logout SIGFE +logwtmp SIGFE +updwtmp SIGFE +longjmp NOSIGFE +_longjmp = longjmp NOSIGFE +lrand48 NOSIGFE +_lrand48 = lrand48 NOSIGFE +lrint NOSIGFE +lrintf NOSIGFE +lround NOSIGFE +lroundf NOSIGFE +lseek SIGFE +_lseek = lseek SIGFE +_lseek64 = lseek64 SIGFE +_lstat64 = lstat64 SIGFE +mallinfo SIGFE +malloc SIGFE +_malloc = malloc SIGFE +malloc_stats SIGFE +malloc_trim SIGFE +malloc_usable_size SIGFE +mallopt SIGFE +matherr NOSIGFE +_matherr = matherr NOSIGFE +mblen NOSIGFE +_mblen = mblen NOSIGFE +mbrlen NOSIGFE +mbrtowc NOSIGFE +mbsinit NOSIGFE +mbsrtowcs NOSIGFE +mbstowcs NOSIGFE +_mbstowcs = mbstowcs NOSIGFE +mbtowc NOSIGFE +_mbtowc = mbtowc NOSIGFE +memalign SIGFE +memccpy NOSIGFE +_memccpy = memccpy NOSIGFE +memchr NOSIGFE +_memchr = memchr NOSIGFE +memcmp NOSIGFE +_memcmp = memcmp NOSIGFE +memcpy NOSIGFE +_memcpy = memcpy NOSIGFE +memmove NOSIGFE +_memmove = memmove NOSIGFE +mempcpy NOSIGFE +__mempcpy = mempcpy NOSIGFE +memset NOSIGFE +_memset = memset NOSIGFE +mkdir SIGFE +_mkdir = mkdir SIGFE +mkfifo SIGFE +mknod SIGFE +_mknod = mknod SIGFE +_mknod32 = mknod32 SIGFE +mkstemp SIGFE +_mkstemp = mkstemp SIGFE +mktemp SIGFE +_mktemp = mktemp SIGFE +mktime SIGFE +_mktime = mktime SIGFE +mmap SIGFE +_mmap64 = mmap64 SIGFE +modf NOSIGFE +_modf = modf NOSIGFE +modff NOSIGFE +_modff = modff NOSIGFE +mount SIGFE +_mount = mount SIGFE +mprotect SIGFE +mrand48 NOSIGFE +msync SIGFE +munmap SIGFE +nan NOSIGFE +_nan = nan NOSIGFE +nanf NOSIGFE +_nanf = nanf NOSIGFE +nanosleep SIGFE +_nanosleep = nanosleep SIGFE +nearbyint NOSIGFE +nearbyintf NOSIGFE +nextafter NOSIGFE +_nextafter = nextafter NOSIGFE +nextafterf NOSIGFE +_nextafterf = nextafterf NOSIGFE +nice SIGFE +_nice = nice SIGFE +nl_langinfo SIGFE +_nl_langinfo = nl_langinfo SIGFE +nrand48 NOSIGFE +_nrand48 = nrand48 NOSIGFE +ntohl NOSIGFE +_ntohl = ntohl NOSIGFE +ntohs NOSIGFE +_ntohs = ntohs NOSIGFE +on_exit SIGFE +open SIGFE +_open = open SIGFE _open64 -opendir -_opendir = opendir -openlog -_openlog = openlog -openpty -pathconf -_pathconf = pathconf -pause -pclose -_pclose = pclose -perror -_perror = perror -pipe -poll -_poll = poll -popen -_popen = popen -posix_regcomp -posix_regerror -posix_regexec -posix_regfree -pow -_pow = pow -powf -_powf = powf -printf -_printf = printf -pthread_atfork -pthread_attr_destroy -pthread_attr_getdetachstate -pthread_attr_getinheritsched -pthread_attr_getschedparam -pthread_attr_getschedpolicy -pthread_attr_getscope -pthread_attr_getstacksize -pthread_attr_init -pthread_attr_setdetachstate -pthread_attr_setinheritsched -pthread_attr_setschedparam -pthread_attr_setschedpolicy -pthread_attr_setscope -pthread_attr_setstacksize -pthread_cancel -pthread_cond_broadcast -pthread_cond_destroy -pthread_cond_init -pthread_cond_signal -pthread_cond_timedwait -pthread_cond_wait -pthread_condattr_destroy -pthread_condattr_getpshared -pthread_condattr_init -pthread_condattr_setpshared -pthread_continue -pthread_create -pthread_detach -pthread_equal -pthread_exit -pthread_getconcurrency -pthread_getschedparam -pthread_getsequence_np -pthread_getspecific -pthread_join -pthread_key_create -pthread_key_delete -pthread_kill -pthread_mutex_destroy -pthread_mutex_getprioceiling -pthread_mutex_init -pthread_mutex_lock -pthread_mutex_setprioceiling -pthread_mutex_trylock -pthread_mutex_unlock -pthread_mutexattr_destroy -pthread_mutexattr_getprioceiling -pthread_mutexattr_getprotocol -pthread_mutexattr_getpshared -pthread_mutexattr_gettype -pthread_mutexattr_init -pthread_mutexattr_setprioceiling -pthread_mutexattr_setprotocol -pthread_mutexattr_setpshared -pthread_mutexattr_settype -pthread_once -pthread_rwlock_destroy -pthread_rwlock_init -pthread_rwlock_rdlock -pthread_rwlock_tryrdlock -pthread_rwlock_wrlock -pthread_rwlock_trywrlock -pthread_rwlock_unlock -pthread_rwlockattr_init -pthread_rwlockattr_getpshared -pthread_rwlockattr_setpshared -pthread_rwlockattr_destroy -pthread_self -pthread_setcancelstate -pthread_setcanceltype -pthread_setconcurrency -pthread_setschedparam -pthread_setspecific -pthread_sigmask -pthread_suspend -pthread_testcancel -ptsname -putc -_putc = putc -putc_unlocked -_putc_unlocked = putc_unlocked -putchar -_putchar = putchar -putchar_unlocked -_putchar_unlocked = putchar_unlocked -putenv -_putenv = putenv -puts -_puts = puts -pututline -_pututline = pututline -putw -_putw = putw -qsort -_qsort = qsort -raise -_raise = raise -rand -_rand = rand -random -read -_read = read -readdir -_readdir = readdir -readlink -_readlink = readlink -readv -_readv = readv -realloc -_realloc = realloc -realpath -remainder -_remainder = remainder -remainderf -_remainderf = remainderf -remove -_remove = remove -remquo -remquof -rename -_rename = rename -revoke -rewind -_rewind = rewind -rewinddir -_rewinddir = rewinddir -rindex -_rindex = rindex -rint -_rint = rint -rintf -_rintf = rintf -rmdir -_rmdir = rmdir -round -roundf -sbrk -_sbrk = sbrk -scalb -_scalb = scalb -scalbf -_scalbf = scalbf -scalbln -scalblnf -scalbn -_scalbn = scalbn -scalbnf -_scalbnf = scalbnf -scandir -_scandir = scandir -scanf -_scanf = scanf -sched_get_priority_max -sched_get_priority_min -sched_getparam -sched_getscheduler -sched_rr_get_interval -sched_setparam -sched_setscheduler -sched_yield -seed48 -_seed48 = seed48 -seekdir -_seekdir = seekdir -_seekdir64 = seekdir64 -semctl -semget -semop -sem_close -sem_destroy -sem_getvalue -sem_init -sem_open -sem_post -sem_timedwait -sem_trywait -sem_wait -setbuf -_setbuf = setbuf -setbuffer -setdtablesize -_setdtablesize = setdtablesize -setegid -_setegid = setegid -_setegid32 = setegid32 -setenv -_setenv = setenv -seteuid -_seteuid = seteuid -_seteuid32 = seteuid32 -setgid -_setgid = setgid -_setgid32 = setgid32 -setgrent -_setgrent = setgrent -setgroups -_setgroups = setgroups -_setgroups32 = setgroups32 -sethostent -setitimer -setjmp -_setjmp = setjmp -setlinebuf -setlocale -_setlocale = setlocale -setlogmask -setmntent -_setmntent = setmntent -setmode -_setmode = setmode -setpassent -_setpassent = setpassent -setpgid -_setpgid = setpgid -setpgrp -_setpgrp = setpgrp -setprogname -setpwent -_setpwent = setpwent -setregid -_setregid = setregid -setregid32 -_setregid32 = setregid32 -setreuid -_setreuid = setreuid -setreuid32 -_setreuid32 = setreuid32 -setrlimit -_setrlimit = setrlimit -setsid -_setsid = setsid -setstate -settimeofday -_settimeofday = settimeofday -setuid -_setuid = setuid -_setuid32 = setuid32 -setutent -_setutent = setutent -setvbuf -_setvbuf = setvbuf -sexecl = sexecve_is_bad -sexecle = sexecve_is_bad -sexeclp = sexecve_is_bad -sexeclpe = sexecve_is_bad -sexecp = sexecve_is_bad -sexecv = sexecve_is_bad -sexecve = sexecve_is_bad -sexecvpe = sexecve_is_bad -shmat -shmctl -shmdt -shmget -sigaction -_sigaction = sigaction -sigaddset -_sigaddset = sigaddset -sigdelset -_sigdelset = sigdelset -sigemptyset -_sigemptyset = sigemptyset -sigfillset -_sigfillset = sigfillset -siginterrupt -_siginterrupt = siginterrupt -sigismember -_sigismember = sigismember -signal -_signal = signal -significand -_significand = significand -significandf -_significandf = significandf -sigpause -sigpending -_sigpending = sigpending -sigprocmask -_sigprocmask = sigprocmask -sigsuspend -_sigsuspend = sigsuspend -sin -_sin = sin -sincos -sincosf -sinf -_sinf = sinf -sinh -_sinh = sinh -sinhf -_sinhf = sinhf -siprintf -_siprintf = siprintf -sleep -_sleep = sleep -snprintf -_snprintf = snprintf -socketpair -spawnl -_spawnl = spawnl -spawnle -_spawnle = spawnle -spawnlp -_spawnlp = spawnlp -spawnlpe -_spawnlpe = spawnlpe -spawnv -_spawnv = spawnv -spawnve -_spawnve = spawnve -spawnvp -_spawnvp = spawnvp -spawnvpe -_spawnvpe = spawnvpe -sprintf -_sprintf = sprintf -sqrt -_sqrt = sqrt -sqrtf -_sqrtf = sqrtf -srand -_srand = srand -srand48 -_srand48 = srand48 -srandom -sscanf -_sscanf = sscanf -_stat64 = stat64 -statfs -_statfs = statfs -strcasecmp -_strcasecmp = strcasecmp -strcat -_strcat = strcat -strchr -_strchr = strchr -strcmp -_strcmp = strcmp -strcoll -_strcoll = strcoll -strcpy -_strcpy = strcpy -strcspn -_strcspn = strcspn -strdup -_strdup = strdup -strerror -_strerror = strerror -strerror_r -_strerror_r = strerror_r -strftime -_strftime = strftime -strlcat -_strlcat = strlcat -strlcpy -_strlcpy = strlcpy -strlen -_strlen = strlen -strlwr -_strlwr = strlwr -strncasecmp -_strncasecmp = strncasecmp -strncat -_strncat = strncat -strncmp -_strncmp = strncmp -strncpy -_strncpy = strncpy -strndup -strnlen -strpbrk -_strpbrk = strpbrk -strptime -_strptime = strptime -strrchr -_strrchr = strrchr -strsep -_strsep = strsep -strsignal -strspn -_strspn = strspn -strstr -_strstr = strstr -strtod -_strtod = strtod -strtof -_strtodf = strtof -strtodf = strtof -strtok -_strtok = strtok -strtok_r -_strtok_r = strtok_r -strtol -_strtol = strtol -strtoll -_strtoll = strtoll -strtosigno -strtoul -_strtoul = strtoul -strtoull -_strtoull = strtoull -strupr -_strupr = strupr -strxfrm -_strxfrm = strxfrm -swab -_swab = swab -symlink -_symlink = symlink -sync -_sync = sync -sysconf -_sysconf = sysconf -syslog -_syslog = syslog -vsyslog -system -_system = system -tan -_tan = tan -tanf -_tanf = tanf -tanh -_tanh = tanh -tanhf -_tanhf = tanhf -tcdrain -_tcdrain = tcdrain -tcflow -_tcflow = tcflow -tcflush -_tcflush = tcflush -tcgetattr -_tcgetattr = tcgetattr -tcgetpgrp -_tcgetpgrp = tcgetpgrp -tcsendbreak -_tcsendbreak = tcsendbreak -tcsetattr -_tcsetattr = tcsetattr -tcsetpgrp -_tcsetpgrp = tcsetpgrp -tdelete -tdestroy -telldir -_telldir = telldir -_telldir64 = telldir64 -tempnam -_tempnam = tempnam -tfind -tgamma -tgammaf -time -_time = time -times -_times = times -timezone -tmpfile -_tmpfile = tmpfile -_tmpfile64 = tmpfile64 -tmpnam -_tmpnam = tmpnam -toascii -_toascii = toascii -tolower -_tolower = tolower -toupper -_toupper = toupper -towctrans -towlower -towupper -truncate -_truncate = truncate -_truncate64 = truncate64 -truncf -tsearch -ttyname -_ttyname = ttyname -ttyslot -twalk -tzset -_tzset = tzset -ualarm -_ualarm = ualarm -umask -_umask = umask -umount -_umount = umount -uname -_uname = uname -ungetc -_ungetc = ungetc -unlink -_unlink = unlink -unlockpt -unsetenv -_unsetenv = unsetenv -usleep -_usleep = usleep -utime -_utime = utime -utimes -_utimes = utimes -utmpname -_utmpname = utmpname -valloc -vasprintf -_vasprintf = vasprintf -vfiprintf -_vfiprintf = vfiprintf -vfork -_vfork = vfork -vfprintf -_vfprintf = vfprintf -vfscanf -_vfscanf = vfscanf -vhangup -_vhangup = vhangup -vprintf -_vprintf = vprintf -vscanf -_vscanf = vscanf -vsnprintf -_vsnprintf = vsnprintf -vsprintf -_vsprintf = vsprintf -vsscanf -_vsscanf = vsscanf -wait -_wait = wait -wait3 -wait4 -waitpid -_waitpid = waitpid -wcrtomb -wcscat -wcschr -wcscmp -_wcscmp = wcscmp -wcscoll -wcscpy -wcscspn -wcslcat -wcslcpy -wcslen -_wcslen = wcslen -wcsncat -wcsncmp -wcsncpy -wcspbrk -wcsrchr -wcsrtombs -wcsspn -wcsstr -wcstombs -_wcstombs = wcstombs -wcswidth -wctob -wctomb -_wctomb = wctomb -wctrans -wctype -wcwidth -wmemchr -wmemcmp -wmemcpy -wmemmove -wmemset -wprintf -_wprintf = wprintf -write -_write = write -writev -_writev = writev -y0 -y0f -y1 -y1f -yn -ynf +opendir SIGFE +_opendir = opendir SIGFE +openlog SIGFE +_openlog = openlog SIGFE +openpty SIGFE +pathconf SIGFE +_pathconf = pathconf SIGFE +pause SIGFE +pclose SIGFE +_pclose = pclose SIGFE +perror SIGFE +_perror = perror SIGFE +pipe SIGFE +poll SIGFE +_poll = poll SIGFE +popen SIGFE +_popen = popen SIGFE +posix_regcomp SIGFE +posix_regerror SIGFE +posix_regexec SIGFE +posix_regfree SIGFE +pow NOSIGFE +_pow = pow NOSIGFE +powf NOSIGFE +_powf = powf NOSIGFE +printf SIGFE +_printf = printf SIGFE +pthread_atfork SIGFE +pthread_attr_destroy NOSIGFE +pthread_attr_getdetachstate NOSIGFE +pthread_attr_getinheritsched NOSIGFE +pthread_attr_getschedparam NOSIGFE +pthread_attr_getschedpolicy NOSIGFE +pthread_attr_getscope NOSIGFE +pthread_attr_getstacksize NOSIGFE +pthread_attr_init SIGFE +pthread_attr_setdetachstate NOSIGFE +pthread_attr_setinheritsched NOSIGFE +pthread_attr_setschedparam NOSIGFE +pthread_attr_setschedpolicy NOSIGFE +pthread_attr_setscope NOSIGFE +pthread_attr_setstacksize NOSIGFE +pthread_cancel NOSIGFE +pthread_cond_broadcast SIGFE +pthread_cond_destroy NOSIGFE +pthread_cond_init SIGFE +pthread_cond_signal SIGFE +pthread_cond_timedwait SIGFE +pthread_cond_wait SIGFE +pthread_condattr_destroy NOSIGFE +pthread_condattr_getpshared NOSIGFE +pthread_condattr_init SIGFE +pthread_condattr_setpshared NOSIGFE +pthread_continue SIGFE +pthread_create SIGFE +pthread_detach SIGFE +pthread_equal NOSIGFE +pthread_exit NOSIGFE +pthread_getconcurrency NOSIGFE +pthread_getschedparam NOSIGFE +pthread_getsequence_np NOSIGFE +pthread_getspecific NOSIGFE +pthread_join SIGFE +pthread_key_create SIGFE +pthread_key_delete NOSIGFE +pthread_kill SIGFE +pthread_mutex_destroy NOSIGFE +pthread_mutex_getprioceiling SIGFE +pthread_mutex_init SIGFE +pthread_mutex_lock SIGFE +pthread_mutex_setprioceiling SIGFE +pthread_mutex_trylock SIGFE +pthread_mutex_unlock SIGFE +pthread_mutexattr_destroy NOSIGFE +pthread_mutexattr_getprioceiling NOSIGFE +pthread_mutexattr_getprotocol NOSIGFE +pthread_mutexattr_getpshared NOSIGFE +pthread_mutexattr_gettype NOSIGFE +pthread_mutexattr_init SIGFE +pthread_mutexattr_setprioceiling NOSIGFE +pthread_mutexattr_setprotocol NOSIGFE +pthread_mutexattr_setpshared NOSIGFE +pthread_mutexattr_settype NOSIGFE +pthread_once SIGFE +pthread_rwlock_destroy NOSIGFE +pthread_rwlock_init SIGFE +pthread_rwlock_rdlock SIGFE +pthread_rwlock_tryrdlock SIGFE +pthread_rwlock_wrlock SIGFE +pthread_rwlock_trywrlock SIGFE +pthread_rwlock_unlock SIGFE +pthread_rwlockattr_init SIGFE +pthread_rwlockattr_getpshared NOSIGFE +pthread_rwlockattr_setpshared NOSIGFE +pthread_rwlockattr_destroy NOSIGFE +pthread_self NOSIGFE +pthread_setcancelstate NOSIGFE +pthread_setcanceltype NOSIGFE +pthread_setconcurrency NOSIGFE +pthread_setschedparam SIGFE +pthread_setspecific NOSIGFE +pthread_sigmask SIGFE +pthread_suspend SIGFE +pthread_testcancel NOSIGFE +ptsname SIGFE +putc SIGFE +_putc = putc SIGFE +putc_unlocked SIGFE +_putc_unlocked = putc_unlocked SIGFE +putchar NOSIGFE +_putchar = putchar NOSIGFE +putchar_unlocked NOSIGFE +_putchar_unlocked = putchar_unlocked NOSIGFE +putenv SIGFE +_putenv = putenv SIGFE +puts SIGFE +_puts = puts SIGFE +pututline SIGFE +_pututline = pututline SIGFE +putw SIGFE +_putw = putw SIGFE +qsort NOSIGFE +_qsort = qsort NOSIGFE +raise SIGFE +_raise = raise SIGFE +rand NOSIGFE +_rand = rand NOSIGFE +random NOSIGFE +read SIGFE +_read = read SIGFE +readdir SIGFE +_readdir = readdir SIGFE +readlink SIGFE +_readlink = readlink SIGFE +readv SIGFE +_readv = readv SIGFE +realloc SIGFE +_realloc = realloc SIGFE +realpath SIGFE +remainder NOSIGFE +_remainder = remainder NOSIGFE +remainderf NOSIGFE +_remainderf = remainderf NOSIGFE +remove SIGFE +_remove = remove SIGFE +remquo NOSIGFE +remquof NOSIGFE +rename SIGFE +_rename = rename SIGFE +revoke SIGFE +rewind SIGFE +_rewind = rewind SIGFE +rewinddir SIGFE +_rewinddir = rewinddir SIGFE +rindex NOSIGFE +_rindex = rindex NOSIGFE +rint NOSIGFE +_rint = rint NOSIGFE +rintf NOSIGFE +_rintf = rintf NOSIGFE +rmdir SIGFE +_rmdir = rmdir SIGFE +round NOSIGFE +roundf NOSIGFE +sbrk SIGFE +_sbrk = sbrk SIGFE +scalb NOSIGFE +_scalb = scalb NOSIGFE +scalbf NOSIGFE +_scalbf = scalbf NOSIGFE +scalbln NOSIGFE +scalblnf NOSIGFE +scalbn NOSIGFE +_scalbn = scalbn NOSIGFE +scalbnf NOSIGFE +_scalbnf = scalbnf NOSIGFE +scandir SIGFE +_scandir = scandir SIGFE +scanf SIGFE +_scanf = scanf SIGFE +sched_get_priority_max SIGFE +sched_get_priority_min SIGFE +sched_getparam SIGFE +sched_getscheduler NOSIGFE +sched_rr_get_interval SIGFE +sched_setparam SIGFE +sched_setscheduler SIGFE +sched_yield SIGFE +seed48 NOSIGFE +_seed48 = seed48 NOSIGFE +seekdir SIGFE +_seekdir = seekdir SIGFE +_seekdir64 = seekdir64 SIGFE +sem_destroy NOSIGFE +sem_init SIGFE +sem_post SIGFE +sem_trywait SIGFE +sem_wait SIGFE +setbuf SIGFE +_setbuf = setbuf SIGFE +setbuffer SIGFE +setdtablesize SIGFE +_setdtablesize = setdtablesize SIGFE +setegid SIGFE +_setegid = setegid SIGFE +_setegid32 = setegid32 SIGFE +setenv SIGFE +_setenv = setenv SIGFE +seteuid SIGFE +_seteuid = seteuid SIGFE +_seteuid32 = seteuid32 SIGFE +setgid SIGFE +_setgid = setgid SIGFE +_setgid32 = setgid32 SIGFE +setgrent NOSIGFE +_setgrent = setgrent NOSIGFE +setgroups SIGFE +_setgroups = setgroups SIGFE +_setgroups32 = setgroups32 SIGFE +sethostent NOSIGFE +setitimer SIGFE +setjmp NOSIGFE +_setjmp = setjmp NOSIGFE +setlinebuf SIGFE +setlocale NOSIGFE +_setlocale = setlocale NOSIGFE +setlogmask NOSIGFE +setmntent SIGFE +_setmntent = setmntent SIGFE +setmode SIGFE +_setmode = setmode SIGFE +setpassent NOSIGFE +_setpassent = setpassent NOSIGFE +setpgid SIGFE +_setpgid = setpgid SIGFE +setpgrp SIGFE +_setpgrp = setpgrp SIGFE +setpwent NOSIGFE +_setpwent = setpwent NOSIGFE +setregid SIGFE +_setregid = setregid SIGFE +setregid32 SIGFE +_setregid32 = setregid32 SIGFE +setreuid SIGFE +_setreuid = setreuid SIGFE +setreuid32 SIGFE +_setreuid32 = setreuid32 SIGFE +setrlimit SIGFE +_setrlimit = setrlimit SIGFE +setsid SIGFE +_setsid = setsid SIGFE +setstate NOSIGFE +settimeofday SIGFE +_settimeofday = settimeofday SIGFE +setuid SIGFE +_setuid = setuid SIGFE +_setuid32 = setuid32 SIGFE +setutent SIGFE +_setutent = setutent SIGFE +setvbuf SIGFE +_setvbuf = setvbuf SIGFE +sexecl = sexecve_is_bad SIGFE +sexecle = sexecve_is_bad SIGFE +sexeclp = sexecve_is_bad SIGFE +sexeclpe = sexecve_is_bad SIGFE +sexecp = sexecve_is_bad SIGFE +sexecv = sexecve_is_bad SIGFE +sexecve = sexecve_is_bad SIGFE +sexecvpe = sexecve_is_bad SIGFE +shmat SIGFE +shmctl SIGFE +shmdt SIGFE +shmget SIGFE +sigaction SIGFE +sigaddset SIGFE +sigdelset SIGFE +sigemptyset NOSIGFE +sigfillset NOSIGFE +siginterrupt SIGFE +sigismember SIGFE +signal SIGFE +significand NOSIGFE +significandf NOSIGFE +sigpause SIGFE +sigpending SIGFE +sigprocmask SIGFE +sigsuspend SIGFE +sigwait SIGFE +sin NOSIGFE +_sin = sin NOSIGFE +sincos NOSIGFE +sincosf NOSIGFE +sinf NOSIGFE +_sinf = sinf NOSIGFE +sinh NOSIGFE +_sinh = sinh NOSIGFE +sinhf NOSIGFE +_sinhf = sinhf NOSIGFE +siprintf SIGFE +_siprintf = siprintf SIGFE +sleep SIGFE +_sleep = sleep SIGFE +snprintf SIGFE +_snprintf = snprintf SIGFE +socketpair SIGFE +spawnl SIGFE +_spawnl = spawnl SIGFE +spawnle SIGFE +_spawnle = spawnle SIGFE +spawnlp SIGFE +_spawnlp = spawnlp SIGFE +spawnlpe SIGFE +_spawnlpe = spawnlpe SIGFE +spawnv SIGFE +_spawnv = spawnv SIGFE +spawnve SIGFE +_spawnve = spawnve SIGFE +spawnvp SIGFE +_spawnvp = spawnvp SIGFE +spawnvpe SIGFE +_spawnvpe = spawnvpe SIGFE +sprintf SIGFE +_sprintf = sprintf SIGFE +sqrt NOSIGFE +_sqrt = sqrt NOSIGFE +sqrtf NOSIGFE +_sqrtf = sqrtf NOSIGFE +srand NOSIGFE +_srand = srand NOSIGFE +srand48 NOSIGFE +_srand48 = srand48 NOSIGFE +srandom NOSIGFE +sscanf SIGFE +_sscanf = sscanf SIGFE +_stat64 = stat64 SIGFE +statfs SIGFE +_statfs = statfs SIGFE +strcasecmp NOSIGFE +_strcasecmp = strcasecmp NOSIGFE +strcat NOSIGFE +_strcat = strcat NOSIGFE +strchr NOSIGFE +_strchr = strchr NOSIGFE +strcmp NOSIGFE +_strcmp = strcmp NOSIGFE +strcoll NOSIGFE +_strcoll = strcoll NOSIGFE +strcpy NOSIGFE +_strcpy = strcpy NOSIGFE +strcspn NOSIGFE +_strcspn = strcspn NOSIGFE +strdup SIGFE +_strdup = strdup SIGFE +strerror NOSIGFE +_strerror = strerror NOSIGFE +strerror_r NOSIGFE +_strerror_r = strerror_r NOSIGFE +strftime SIGFE +_strftime = strftime SIGFE +strlcat NOSIGFE +_strlcat = strlcat NOSIGFE +strlcpy NOSIGFE +_strlcpy = strlcpy NOSIGFE +strlen NOSIGFE +_strlen = strlen NOSIGFE +strlwr NOSIGFE +_strlwr = strlwr NOSIGFE +strncasecmp NOSIGFE +_strncasecmp = strncasecmp NOSIGFE +strncat NOSIGFE +_strncat = strncat NOSIGFE +strncmp NOSIGFE +_strncmp = strncmp NOSIGFE +strncpy NOSIGFE +_strncpy = strncpy NOSIGFE +strndup SIGFE +strnlen NOSIGFE +strpbrk NOSIGFE +_strpbrk = strpbrk NOSIGFE +strptime SIGFE +_strptime = strptime SIGFE +strrchr NOSIGFE +_strrchr = strrchr NOSIGFE +strsep NOSIGFE +_strsep = strsep NOSIGFE +strsignal SIGFE +strspn NOSIGFE +_strspn = strspn NOSIGFE +strstr NOSIGFE +_strstr = strstr NOSIGFE +strtod SIGFE +_strtod = strtod SIGFE +strtof SIGFE +_strtodf = strtof SIGFE +strtodf = strtof SIGFE +strtok NOSIGFE +_strtok = strtok NOSIGFE +strtok_r NOSIGFE +_strtok_r = strtok_r NOSIGFE +strtol NOSIGFE +_strtol = strtol NOSIGFE +strtoll NOSIGFE +_strtoll = strtoll NOSIGFE +strtosigno SIGFE +strtoul NOSIGFE +_strtoul = strtoul NOSIGFE +strtoull NOSIGFE +_strtoull = strtoull NOSIGFE +strupr NOSIGFE +_strupr = strupr NOSIGFE +strxfrm NOSIGFE +_strxfrm = strxfrm NOSIGFE +swab NOSIGFE +_swab = swab NOSIGFE +symlink SIGFE +_symlink = symlink SIGFE +sync NOSIGFE +_sync = sync NOSIGFE +sysconf SIGFE +_sysconf = sysconf SIGFE +syslog SIGFE +_syslog = syslog SIGFE +vsyslog SIGFE +system SIGFE +_system = system SIGFE +tan NOSIGFE +_tan = tan NOSIGFE +tanf NOSIGFE +_tanf = tanf NOSIGFE +tanh NOSIGFE +_tanh = tanh NOSIGFE +tanhf NOSIGFE +_tanhf = tanhf NOSIGFE +tcdrain SIGFE +_tcdrain = tcdrain SIGFE +tcflow SIGFE +_tcflow = tcflow SIGFE +tcflush SIGFE +_tcflush = tcflush SIGFE +tcgetattr SIGFE +_tcgetattr = tcgetattr SIGFE +tcgetpgrp SIGFE +_tcgetpgrp = tcgetpgrp SIGFE +tcsendbreak SIGFE +_tcsendbreak = tcsendbreak SIGFE +tcsetattr SIGFE +_tcsetattr = tcsetattr SIGFE +tcsetpgrp SIGFE +_tcsetpgrp = tcsetpgrp SIGFE +tdelete SIGFE +tdestroy NOSIGFE +telldir SIGFE +_telldir = telldir SIGFE +_telldir64 = telldir64 SIGFE +tempnam SIGFE +_tempnam = tempnam SIGFE +tfind NOSIGFE +tgamma NOSIGFE +tgammaf NOSIGFE +time SIGFE +_time = time SIGFE +times SIGFE +_times = times SIGFE +timezone SIGFE +tmpfile SIGFE +_tmpfile = tmpfile SIGFE +_tmpfile64 = tmpfile64 SIGFE +tmpnam SIGFE +_tmpnam = tmpnam SIGFE +toascii NOSIGFE +_toascii = toascii NOSIGFE +tolower NOSIGFE +_tolower = tolower NOSIGFE +toupper NOSIGFE +_toupper = toupper NOSIGFE +towctrans NOSIGFE +towlower NOSIGFE +towupper NOSIGFE +truncate SIGFE +_truncate = truncate SIGFE +_truncate64 = truncate64 SIGFE +truncf NOSIGFE +tsearch SIGFE +ttyname SIGFE +_ttyname = ttyname SIGFE +ttyslot NOSIGFE +twalk NOSIGFE +tzset SIGFE +_tzset = tzset SIGFE +ualarm SIGFE +_ualarm = ualarm SIGFE +umask NOSIGFE +_umask = umask NOSIGFE +umount SIGFE +_umount = umount SIGFE +uname SIGFE +_uname = uname SIGFE +ungetc SIGFE +_ungetc = ungetc SIGFE +unlink SIGFE +_unlink = unlink SIGFE +unlockpt NOSIGFE +unsetenv NOSIGFE +_unsetenv = unsetenv NOSIGFE +usleep SIGFE +_usleep = usleep SIGFE +utime SIGFE +_utime = utime SIGFE +utimes SIGFE +_utimes = utimes SIGFE +utmpname SIGFE +_utmpname = utmpname SIGFE +valloc SIGFE +vasprintf SIGFE +_vasprintf = vasprintf SIGFE +verr SIGFE +verrx SIGFE +vwarn SIGFE +vwarnx SIGFE +vfiprintf SIGFE +_vfiprintf = vfiprintf SIGFE +vfork SIGFE +_vfork = vfork SIGFE +vfprintf SIGFE +_vfprintf = vfprintf SIGFE +vfscanf SIGFE +_vfscanf = vfscanf SIGFE +vhangup SIGFE +_vhangup = vhangup SIGFE +vprintf SIGFE +_vprintf = vprintf SIGFE +vscanf SIGFE +_vscanf = vscanf SIGFE +vsnprintf SIGFE +_vsnprintf = vsnprintf SIGFE +vsprintf SIGFE +_vsprintf = vsprintf SIGFE +vsscanf SIGFE +_vsscanf = vsscanf SIGFE +wait SIGFE +_wait = wait SIGFE +wait3 SIGFE +wait4 SIGFE +waitpid SIGFE +_waitpid = waitpid SIGFE +warn SIGFE +warnx SIGFE +wcrtomb NOSIGFE +wcscat NOSIGFE +wcschr NOSIGFE +wcscmp NOSIGFE +_wcscmp = wcscmp NOSIGFE +wcscoll NOSIGFE +wcscpy NOSIGFE +wcscspn NOSIGFE +wcslcat NOSIGFE +wcslcpy NOSIGFE +wcslen NOSIGFE +_wcslen = wcslen NOSIGFE +wcsncat NOSIGFE +wcsncmp NOSIGFE +wcsncpy NOSIGFE +wcspbrk NOSIGFE +wcsrchr NOSIGFE +wcsrtombs NOSIGFE +wcsspn NOSIGFE +wcsstr NOSIGFE +wcstombs NOSIGFE +_wcstombs = wcstombs NOSIGFE +wcswidth NOSIGFE +wctob NOSIGFE +wctomb NOSIGFE +_wctomb = wctomb NOSIGFE +wctrans NOSIGFE +wctype NOSIGFE +wcwidth NOSIGFE +wmemchr NOSIGFE +wmemcmp NOSIGFE +wmemcpy NOSIGFE +wmemmove NOSIGFE +wmemset NOSIGFE +wprintf SIGFE +_wprintf = wprintf SIGFE +write SIGFE +_write = write SIGFE +writev SIGFE +_writev = writev SIGFE +y0 NOSIGFE +y0f NOSIGFE +y1 NOSIGFE +y1f NOSIGFE +yn NOSIGFE +ynf NOSIGFE diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 2418e8bb9..1ca549ec2 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -42,15 +42,11 @@ details. */ HANDLE NO_COPY hMainProc = (HANDLE) -1; HANDLE NO_COPY hMainThread; -sigthread NO_COPY mainthread; // ID of the main thread - per_thread_waitq NO_COPY waitq_storage; per_thread_vfork NO_COPY vfork_storage; -per_thread_signal_dispatch NO_COPY signal_dispatch_storage; per_thread NO_COPY *threadstuff[] = {&waitq_storage, &vfork_storage, - &signal_dispatch_storage, NULL}; bool display_title; @@ -72,7 +68,6 @@ ResourceLocks _reslock NO_COPY; MTinterface _mtinterf; bool NO_COPY _cygwin_testing; -unsigned NO_COPY _cygwin_testing_magic; char NO_COPY almost_null[1]; @@ -526,15 +521,10 @@ int _declspec(dllexport) __argc; char _declspec(dllexport) **__argv; vfork_save NO_COPY *main_vfork = NULL; -void -sigthread::init (const char *s) -{ - InitializeCriticalSection (&lock); - id = GetCurrentThreadId (); -} - extern "C" void __sinit (_reent *); +_threadinfo NO_COPY *_main_tls; + /* Take over from libc's crt0.o and start the application. Note the various special cases when Cygwin DLL is being runtime loaded (as opposed to being link-time loaded by Cygwin apps) from a non @@ -542,6 +532,9 @@ extern "C" void __sinit (_reent *); static void dll_crt0_1 () { + __uint64_t padding[CYGTLS_PADSIZE]; + _main_tls = _my_tls.init (padding); + /* According to onno@stack.urc.tue.nl, the exception handler record must be on the stack. */ /* FIXME: Verify forked children get their exception handler set up ok. */ @@ -568,9 +561,6 @@ dll_crt0_1 () user_data->resourcelocks->Init (); user_data->threadinterface->Init (); - mainthread.init ("mainthread"); // For use in determining if signals - // should be blocked. - winpids::init (); int envc = 0; @@ -632,7 +622,7 @@ dll_crt0_1 () ProtectHandle (hMainThread); cygthread::init (); - /* Initialize pthread mainthread when not forked and it is save to call new, + /* Initialize pthread mainthread when not forked and it is safe to call new, otherwise it is reinitalized in fixup_after_fork */ if (!user_data->forkee) { @@ -804,9 +794,9 @@ break_here () void initial_env () { - DWORD len; char buf[CYG_MAX_PATH + 1]; #ifdef DEBUGGING + DWORD len; if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf) - 1)) { DWORD ms = atoi (buf); @@ -836,14 +826,7 @@ initial_env () #endif if (GetEnvironmentVariable ("CYGWIN_TESTING", buf, sizeof (buf) - 1)) - { - _cygwin_testing = 1; - if ((len = GetModuleFileName (cygwin_hmodule, buf, CYG_MAX_PATH)) - && len > sizeof ("new-cygwin1.dll") - && strcasematch (buf + len - sizeof ("new-cygwin1.dll"), - "\\new-cygwin1.dll")) - _cygwin_testing_magic = 0x10; - } + _cygwin_testing = 1; } /* Wrap the real one, otherwise gdb gets confused about diff --git a/winsup/cygwin/debug.h b/winsup/cygwin/debug.h index 09a74e917..91f13d121 100644 --- a/winsup/cygwin/debug.h +++ b/winsup/cygwin/debug.h @@ -17,14 +17,6 @@ details. */ }) #endif -extern "C" { -DWORD __stdcall WFSO (HANDLE, DWORD) __attribute__ ((regparm(2))); -DWORD __stdcall WFMO (DWORD, CONST HANDLE *, BOOL, DWORD) __attribute__ ((regparm(3))); -} - -#define WaitForSingleObject WFSO -#define WaitForMultipleObjects WFMO - #if !defined(_DEBUG_H_) #define _DEBUG_H_ diff --git a/winsup/cygwin/devices.cc b/winsup/cygwin/devices.cc index 73b308949..e2819c1c9 100644 --- a/winsup/cygwin/devices.cc +++ b/winsup/cygwin/devices.cc @@ -34,8 +34,20 @@ const device dev_piper_storage = const device dev_pipew_storage = {"", FH_PIPEW, ""}; +const device dev_tcp_storage = + {"", FH_TCP, ""}; + +const device dev_udp_storage = + {"", FH_UDP, ""}; + +const device dev_stream_storage = + {"", FH_STREAM, ""}; + +const device dev_dgram_storage = + {"", FH_DGRAM, ""}; + const device dev_bad_storage = - {":bad:", FH_BAD, ""}; + {"", FH_BAD, ""}; static const device dev_storage[] = { @@ -78,12 +90,6 @@ static const device dev_storage[] = {"/dev/fd14", FHDEV(DEV_FLOPPY_MAJOR, 14), "\\Device\\Floppy14"}, {"/dev/fd15", FHDEV(DEV_FLOPPY_MAJOR, 15), "\\Device\\Floppy15"}, {"/dev/fifo", FH_FIFO, "\\dev\\fifo"}, - {"/dev/inet/dgram", FH_DGRAM, ""}, - {"/dev/inet/icmp", FH_ICMP, ""}, - {"/dev/inet/stream", FH_STREAM, ""}, - {"/dev/inet/tcp", FH_TCP, ""}, - {"/dev/inet/udp", FH_UDP, ""}, - {"/dev/inet/unix", FH_UNIX, ""}, {"/dev/kmem", FH_KMEM, "\\dev\\mem"}, {"/dev/mem", FH_MEM, "\\dev\\mem"}, {"/dev/nst0", FHDEV(DEV_TAPE_MAJOR, 128), "\\Device\\Tape0"}, @@ -883,15 +889,9 @@ static const device dev_storage[] = }; const device *console_dev = dev_storage + 20; -const device *dgram_dev = dev_storage + 39; -const device *icmp_dev = dev_storage + 40; -const device *stream_dev = dev_storage + 41; -const device *tcp_dev = dev_storage + 42; -const device *ttym_dev = dev_storage + 837; -const device *ttys_dev = dev_storage + 757; -const device *udp_dev = dev_storage + 43; -const device *unix_dev = dev_storage + 44; -const device *urandom_dev = dev_storage + 838; +const device *ttym_dev = dev_storage + 831; +const device *ttys_dev = dev_storage + 751; +const device *urandom_dev = dev_storage + 832; static KR_device_t KR_find_keyword (const char *KR_keyword, int KR_length) @@ -906,7 +906,7 @@ static KR_device_t KR_find_keyword (const char *KR_keyword, int KR_length) if (strncmp (KR_keyword, "/dev/sdz", 8) == 0) { { -return dev_storage + 221; +return dev_storage + 215; } } @@ -924,7 +924,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty", 8) == 0) { { -return dev_storage + 756; +return dev_storage + 750; } } @@ -939,7 +939,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy", 8) == 0) { { -return dev_storage + 220; +return dev_storage + 214; } } @@ -960,7 +960,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx", 8) == 0) { { -return dev_storage + 219; +return dev_storage + 213; } } @@ -975,7 +975,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw", 8) == 0) { { -return dev_storage + 218; +return dev_storage + 212; } } @@ -990,7 +990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv", 8) == 0) { { -return dev_storage + 217; +return dev_storage + 211; } } @@ -1005,7 +1005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu", 8) == 0) { { -return dev_storage + 216; +return dev_storage + 210; } } @@ -1020,7 +1020,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt", 8) == 0) { { -return dev_storage + 215; +return dev_storage + 209; } } @@ -1035,7 +1035,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds", 8) == 0) { { -return dev_storage + 214; +return dev_storage + 208; } } @@ -1050,7 +1050,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr", 8) == 0) { { -return dev_storage + 213; +return dev_storage + 207; } } @@ -1065,7 +1065,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq", 8) == 0) { { -return dev_storage + 212; +return dev_storage + 206; } } @@ -1083,7 +1083,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp", 8) == 0) { { -return dev_storage + 211; +return dev_storage + 205; } } @@ -1119,7 +1119,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo", 8) == 0) { { -return dev_storage + 210; +return dev_storage + 204; } } @@ -1134,7 +1134,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn", 8) == 0) { { -return dev_storage + 209; +return dev_storage + 203; } } @@ -1152,7 +1152,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm", 8) == 0) { { -return dev_storage + 208; +return dev_storage + 202; } } @@ -1167,7 +1167,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/mem", 8) == 0) { { -return dev_storage + 46; +return dev_storage + 40; } } @@ -1188,7 +1188,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl", 8) == 0) { { -return dev_storage + 207; +return dev_storage + 201; } } @@ -1203,7 +1203,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk", 8) == 0) { { -return dev_storage + 206; +return dev_storage + 200; } } @@ -1218,7 +1218,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj", 8) == 0) { { -return dev_storage + 205; +return dev_storage + 199; } } @@ -1233,7 +1233,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi", 8) == 0) { { -return dev_storage + 204; +return dev_storage + 198; } } @@ -1248,7 +1248,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh", 8) == 0) { { -return dev_storage + 203; +return dev_storage + 197; } } @@ -1263,7 +1263,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg", 8) == 0) { { -return dev_storage + 202; +return dev_storage + 196; } } @@ -1278,7 +1278,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf", 8) == 0) { { -return dev_storage + 201; +return dev_storage + 195; } } @@ -1293,7 +1293,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde", 8) == 0) { { -return dev_storage + 200; +return dev_storage + 194; } } @@ -1308,7 +1308,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd", 8) == 0) { { -return dev_storage + 199; +return dev_storage + 193; } } @@ -1323,7 +1323,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc", 8) == 0) { { -return dev_storage + 198; +return dev_storage + 192; } } @@ -1338,7 +1338,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb", 8) == 0) { { -return dev_storage + 197; +return dev_storage + 191; } } @@ -1353,7 +1353,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda", 8) == 0) { { -return dev_storage + 196; +return dev_storage + 190; } } @@ -1371,7 +1371,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st9", 8) == 0) { { -return dev_storage + 637; +return dev_storage + 631; } } @@ -1386,7 +1386,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr9", 8) == 0) { { -return dev_storage + 621; +return dev_storage + 615; } } @@ -1425,7 +1425,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st8", 8) == 0) { { -return dev_storage + 636; +return dev_storage + 630; } } @@ -1440,7 +1440,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr8", 8) == 0) { { -return dev_storage + 620; +return dev_storage + 614; } } @@ -1479,7 +1479,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st7", 8) == 0) { { -return dev_storage + 635; +return dev_storage + 629; } } @@ -1494,7 +1494,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr7", 8) == 0) { { -return dev_storage + 619; +return dev_storage + 613; } } @@ -1533,7 +1533,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st6", 8) == 0) { { -return dev_storage + 634; +return dev_storage + 628; } } @@ -1548,7 +1548,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr6", 8) == 0) { { -return dev_storage + 618; +return dev_storage + 612; } } @@ -1587,7 +1587,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st5", 8) == 0) { { -return dev_storage + 633; +return dev_storage + 627; } } @@ -1602,7 +1602,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr5", 8) == 0) { { -return dev_storage + 617; +return dev_storage + 611; } } @@ -1641,7 +1641,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st4", 8) == 0) { { -return dev_storage + 632; +return dev_storage + 626; } } @@ -1656,7 +1656,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr4", 8) == 0) { { -return dev_storage + 616; +return dev_storage + 610; } } @@ -1695,7 +1695,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st3", 8) == 0) { { -return dev_storage + 631; +return dev_storage + 625; } } @@ -1710,7 +1710,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr3", 8) == 0) { { -return dev_storage + 615; +return dev_storage + 609; } } @@ -1749,7 +1749,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st2", 8) == 0) { { -return dev_storage + 630; +return dev_storage + 624; } } @@ -1764,7 +1764,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr2", 8) == 0) { { -return dev_storage + 614; +return dev_storage + 608; } } @@ -1803,7 +1803,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st1", 8) == 0) { { -return dev_storage + 629; +return dev_storage + 623; } } @@ -1818,7 +1818,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr1", 8) == 0) { { -return dev_storage + 613; +return dev_storage + 607; } } @@ -1857,7 +1857,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st0", 8) == 0) { { -return dev_storage + 628; +return dev_storage + 622; } } @@ -1872,7 +1872,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr0", 8) == 0) { { -return dev_storage + 612; +return dev_storage + 606; } } @@ -1917,7 +1917,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ptmx", 9) == 0) { { -return dev_storage + 178; +return dev_storage + 172; } } @@ -1932,7 +1932,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/port", 9) == 0) { { -return dev_storage + 177; +return dev_storage + 171; } } @@ -1950,7 +1950,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/zero", 9) == 0) { { -return dev_storage + 840; +return dev_storage + 834; } } @@ -1989,7 +1989,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttym", 9) == 0) { { -return dev_storage + 837; +return dev_storage + 831; } } @@ -2004,7 +2004,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/kmem", 9) == 0) { { -return dev_storage + 45; +return dev_storage + 39; } } @@ -2025,7 +2025,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/null", 9) == 0) { { -return dev_storage + 175; +return dev_storage + 169; } } @@ -2040,7 +2040,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/pipe", 9) == 0) { { -return dev_storage + 176; +return dev_storage + 170; } } @@ -2058,7 +2058,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz9", 9) == 0) { { -return dev_storage + 605; +return dev_storage + 599; } } @@ -2076,7 +2076,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty9", 9) == 0) { { -return dev_storage + 766; +return dev_storage + 760; } } @@ -2091,7 +2091,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy9", 9) == 0) { { -return dev_storage + 590; +return dev_storage + 584; } } @@ -2112,7 +2112,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx9", 9) == 0) { { -return dev_storage + 575; +return dev_storage + 569; } } @@ -2127,7 +2127,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw9", 9) == 0) { { -return dev_storage + 560; +return dev_storage + 554; } } @@ -2142,7 +2142,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv9", 9) == 0) { { -return dev_storage + 545; +return dev_storage + 539; } } @@ -2157,7 +2157,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu9", 9) == 0) { { -return dev_storage + 530; +return dev_storage + 524; } } @@ -2175,7 +2175,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt9", 9) == 0) { { -return dev_storage + 515; +return dev_storage + 509; } } @@ -2190,7 +2190,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst9", 9) == 0) { { -return dev_storage + 56; +return dev_storage + 50; } } @@ -2211,7 +2211,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds9", 9) == 0) { { -return dev_storage + 500; +return dev_storage + 494; } } @@ -2226,7 +2226,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr9", 9) == 0) { { -return dev_storage + 485; +return dev_storage + 479; } } @@ -2241,7 +2241,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq9", 9) == 0) { { -return dev_storage + 470; +return dev_storage + 464; } } @@ -2256,7 +2256,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp9", 9) == 0) { { -return dev_storage + 455; +return dev_storage + 449; } } @@ -2271,7 +2271,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo9", 9) == 0) { { -return dev_storage + 440; +return dev_storage + 434; } } @@ -2286,7 +2286,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn9", 9) == 0) { { -return dev_storage + 425; +return dev_storage + 419; } } @@ -2304,7 +2304,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm9", 9) == 0) { { -return dev_storage + 410; +return dev_storage + 404; } } @@ -2340,7 +2340,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl9", 9) == 0) { { -return dev_storage + 395; +return dev_storage + 389; } } @@ -2355,7 +2355,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk9", 9) == 0) { { -return dev_storage + 380; +return dev_storage + 374; } } @@ -2370,7 +2370,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj9", 9) == 0) { { -return dev_storage + 365; +return dev_storage + 359; } } @@ -2385,7 +2385,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi9", 9) == 0) { { -return dev_storage + 350; +return dev_storage + 344; } } @@ -2400,7 +2400,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh9", 9) == 0) { { -return dev_storage + 335; +return dev_storage + 329; } } @@ -2415,7 +2415,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg9", 9) == 0) { { -return dev_storage + 320; +return dev_storage + 314; } } @@ -2430,7 +2430,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf9", 9) == 0) { { -return dev_storage + 305; +return dev_storage + 299; } } @@ -2445,7 +2445,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde9", 9) == 0) { { -return dev_storage + 290; +return dev_storage + 284; } } @@ -2463,7 +2463,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd9", 9) == 0) { { -return dev_storage + 275; +return dev_storage + 269; } } @@ -2478,7 +2478,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd9", 9) == 0) { { -return dev_storage + 189; +return dev_storage + 183; } } @@ -2499,7 +2499,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc9", 9) == 0) { { -return dev_storage + 260; +return dev_storage + 254; } } @@ -2514,7 +2514,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb9", 9) == 0) { { -return dev_storage + 245; +return dev_storage + 239; } } @@ -2529,7 +2529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda9", 9) == 0) { { -return dev_storage + 230; +return dev_storage + 224; } } @@ -2544,7 +2544,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st99", 9) == 0) { { -return dev_storage + 727; +return dev_storage + 721; } } @@ -2559,7 +2559,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st89", 9) == 0) { { -return dev_storage + 717; +return dev_storage + 711; } } @@ -2574,7 +2574,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st79", 9) == 0) { { -return dev_storage + 707; +return dev_storage + 701; } } @@ -2589,7 +2589,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st69", 9) == 0) { { -return dev_storage + 697; +return dev_storage + 691; } } @@ -2604,7 +2604,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st59", 9) == 0) { { -return dev_storage + 687; +return dev_storage + 681; } } @@ -2619,7 +2619,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st49", 9) == 0) { { -return dev_storage + 677; +return dev_storage + 671; } } @@ -2634,7 +2634,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st39", 9) == 0) { { -return dev_storage + 667; +return dev_storage + 661; } } @@ -2649,7 +2649,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st29", 9) == 0) { { -return dev_storage + 657; +return dev_storage + 651; } } @@ -2664,7 +2664,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st19", 9) == 0) { { -return dev_storage + 647; +return dev_storage + 641; } } @@ -2688,7 +2688,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz8", 9) == 0) { { -return dev_storage + 604; +return dev_storage + 598; } } @@ -2706,7 +2706,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty8", 9) == 0) { { -return dev_storage + 765; +return dev_storage + 759; } } @@ -2721,7 +2721,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy8", 9) == 0) { { -return dev_storage + 589; +return dev_storage + 583; } } @@ -2742,7 +2742,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx8", 9) == 0) { { -return dev_storage + 574; +return dev_storage + 568; } } @@ -2757,7 +2757,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw8", 9) == 0) { { -return dev_storage + 559; +return dev_storage + 553; } } @@ -2772,7 +2772,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv8", 9) == 0) { { -return dev_storage + 544; +return dev_storage + 538; } } @@ -2787,7 +2787,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu8", 9) == 0) { { -return dev_storage + 529; +return dev_storage + 523; } } @@ -2805,7 +2805,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt8", 9) == 0) { { -return dev_storage + 514; +return dev_storage + 508; } } @@ -2820,7 +2820,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst8", 9) == 0) { { -return dev_storage + 55; +return dev_storage + 49; } } @@ -2841,7 +2841,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds8", 9) == 0) { { -return dev_storage + 499; +return dev_storage + 493; } } @@ -2856,7 +2856,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr8", 9) == 0) { { -return dev_storage + 484; +return dev_storage + 478; } } @@ -2871,7 +2871,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq8", 9) == 0) { { -return dev_storage + 469; +return dev_storage + 463; } } @@ -2886,7 +2886,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp8", 9) == 0) { { -return dev_storage + 454; +return dev_storage + 448; } } @@ -2901,7 +2901,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo8", 9) == 0) { { -return dev_storage + 439; +return dev_storage + 433; } } @@ -2916,7 +2916,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn8", 9) == 0) { { -return dev_storage + 424; +return dev_storage + 418; } } @@ -2934,7 +2934,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm8", 9) == 0) { { -return dev_storage + 409; +return dev_storage + 403; } } @@ -2970,7 +2970,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl8", 9) == 0) { { -return dev_storage + 394; +return dev_storage + 388; } } @@ -2985,7 +2985,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk8", 9) == 0) { { -return dev_storage + 379; +return dev_storage + 373; } } @@ -3000,7 +3000,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj8", 9) == 0) { { -return dev_storage + 364; +return dev_storage + 358; } } @@ -3015,7 +3015,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi8", 9) == 0) { { -return dev_storage + 349; +return dev_storage + 343; } } @@ -3030,7 +3030,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh8", 9) == 0) { { -return dev_storage + 334; +return dev_storage + 328; } } @@ -3045,7 +3045,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg8", 9) == 0) { { -return dev_storage + 319; +return dev_storage + 313; } } @@ -3060,7 +3060,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf8", 9) == 0) { { -return dev_storage + 304; +return dev_storage + 298; } } @@ -3075,7 +3075,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde8", 9) == 0) { { -return dev_storage + 289; +return dev_storage + 283; } } @@ -3093,7 +3093,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd8", 9) == 0) { { -return dev_storage + 274; +return dev_storage + 268; } } @@ -3108,7 +3108,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd8", 9) == 0) { { -return dev_storage + 188; +return dev_storage + 182; } } @@ -3129,7 +3129,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc8", 9) == 0) { { -return dev_storage + 259; +return dev_storage + 253; } } @@ -3144,7 +3144,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb8", 9) == 0) { { -return dev_storage + 244; +return dev_storage + 238; } } @@ -3159,7 +3159,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda8", 9) == 0) { { -return dev_storage + 229; +return dev_storage + 223; } } @@ -3174,7 +3174,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st98", 9) == 0) { { -return dev_storage + 726; +return dev_storage + 720; } } @@ -3189,7 +3189,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st88", 9) == 0) { { -return dev_storage + 716; +return dev_storage + 710; } } @@ -3204,7 +3204,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st78", 9) == 0) { { -return dev_storage + 706; +return dev_storage + 700; } } @@ -3219,7 +3219,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st68", 9) == 0) { { -return dev_storage + 696; +return dev_storage + 690; } } @@ -3234,7 +3234,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st58", 9) == 0) { { -return dev_storage + 686; +return dev_storage + 680; } } @@ -3249,7 +3249,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st48", 9) == 0) { { -return dev_storage + 676; +return dev_storage + 670; } } @@ -3264,7 +3264,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st38", 9) == 0) { { -return dev_storage + 666; +return dev_storage + 660; } } @@ -3279,7 +3279,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st28", 9) == 0) { { -return dev_storage + 656; +return dev_storage + 650; } } @@ -3294,7 +3294,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st18", 9) == 0) { { -return dev_storage + 646; +return dev_storage + 640; } } @@ -3318,7 +3318,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz7", 9) == 0) { { -return dev_storage + 603; +return dev_storage + 597; } } @@ -3336,7 +3336,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty7", 9) == 0) { { -return dev_storage + 764; +return dev_storage + 758; } } @@ -3351,7 +3351,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy7", 9) == 0) { { -return dev_storage + 588; +return dev_storage + 582; } } @@ -3372,7 +3372,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx7", 9) == 0) { { -return dev_storage + 573; +return dev_storage + 567; } } @@ -3387,7 +3387,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw7", 9) == 0) { { -return dev_storage + 558; +return dev_storage + 552; } } @@ -3402,7 +3402,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv7", 9) == 0) { { -return dev_storage + 543; +return dev_storage + 537; } } @@ -3417,7 +3417,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu7", 9) == 0) { { -return dev_storage + 528; +return dev_storage + 522; } } @@ -3435,7 +3435,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt7", 9) == 0) { { -return dev_storage + 513; +return dev_storage + 507; } } @@ -3450,7 +3450,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst7", 9) == 0) { { -return dev_storage + 54; +return dev_storage + 48; } } @@ -3471,7 +3471,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds7", 9) == 0) { { -return dev_storage + 498; +return dev_storage + 492; } } @@ -3486,7 +3486,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr7", 9) == 0) { { -return dev_storage + 483; +return dev_storage + 477; } } @@ -3501,7 +3501,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq7", 9) == 0) { { -return dev_storage + 468; +return dev_storage + 462; } } @@ -3516,7 +3516,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp7", 9) == 0) { { -return dev_storage + 453; +return dev_storage + 447; } } @@ -3531,7 +3531,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo7", 9) == 0) { { -return dev_storage + 438; +return dev_storage + 432; } } @@ -3546,7 +3546,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn7", 9) == 0) { { -return dev_storage + 423; +return dev_storage + 417; } } @@ -3564,7 +3564,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm7", 9) == 0) { { -return dev_storage + 408; +return dev_storage + 402; } } @@ -3600,7 +3600,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl7", 9) == 0) { { -return dev_storage + 393; +return dev_storage + 387; } } @@ -3615,7 +3615,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk7", 9) == 0) { { -return dev_storage + 378; +return dev_storage + 372; } } @@ -3630,7 +3630,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj7", 9) == 0) { { -return dev_storage + 363; +return dev_storage + 357; } } @@ -3645,7 +3645,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi7", 9) == 0) { { -return dev_storage + 348; +return dev_storage + 342; } } @@ -3660,7 +3660,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh7", 9) == 0) { { -return dev_storage + 333; +return dev_storage + 327; } } @@ -3675,7 +3675,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg7", 9) == 0) { { -return dev_storage + 318; +return dev_storage + 312; } } @@ -3690,7 +3690,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf7", 9) == 0) { { -return dev_storage + 303; +return dev_storage + 297; } } @@ -3705,7 +3705,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde7", 9) == 0) { { -return dev_storage + 288; +return dev_storage + 282; } } @@ -3723,7 +3723,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd7", 9) == 0) { { -return dev_storage + 273; +return dev_storage + 267; } } @@ -3738,7 +3738,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd7", 9) == 0) { { -return dev_storage + 187; +return dev_storage + 181; } } @@ -3759,7 +3759,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc7", 9) == 0) { { -return dev_storage + 258; +return dev_storage + 252; } } @@ -3774,7 +3774,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb7", 9) == 0) { { -return dev_storage + 243; +return dev_storage + 237; } } @@ -3789,7 +3789,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda7", 9) == 0) { { -return dev_storage + 228; +return dev_storage + 222; } } @@ -3804,7 +3804,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st97", 9) == 0) { { -return dev_storage + 725; +return dev_storage + 719; } } @@ -3819,7 +3819,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st87", 9) == 0) { { -return dev_storage + 715; +return dev_storage + 709; } } @@ -3834,7 +3834,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st77", 9) == 0) { { -return dev_storage + 705; +return dev_storage + 699; } } @@ -3849,7 +3849,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st67", 9) == 0) { { -return dev_storage + 695; +return dev_storage + 689; } } @@ -3864,7 +3864,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st57", 9) == 0) { { -return dev_storage + 685; +return dev_storage + 679; } } @@ -3879,7 +3879,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st47", 9) == 0) { { -return dev_storage + 675; +return dev_storage + 669; } } @@ -3894,7 +3894,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st37", 9) == 0) { { -return dev_storage + 665; +return dev_storage + 659; } } @@ -3909,7 +3909,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st27", 9) == 0) { { -return dev_storage + 655; +return dev_storage + 649; } } @@ -3924,7 +3924,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st17", 9) == 0) { { -return dev_storage + 645; +return dev_storage + 639; } } @@ -3948,7 +3948,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz6", 9) == 0) { { -return dev_storage + 602; +return dev_storage + 596; } } @@ -3966,7 +3966,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty6", 9) == 0) { { -return dev_storage + 763; +return dev_storage + 757; } } @@ -3981,7 +3981,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy6", 9) == 0) { { -return dev_storage + 587; +return dev_storage + 581; } } @@ -4002,7 +4002,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx6", 9) == 0) { { -return dev_storage + 572; +return dev_storage + 566; } } @@ -4017,7 +4017,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw6", 9) == 0) { { -return dev_storage + 557; +return dev_storage + 551; } } @@ -4032,7 +4032,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv6", 9) == 0) { { -return dev_storage + 542; +return dev_storage + 536; } } @@ -4047,7 +4047,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu6", 9) == 0) { { -return dev_storage + 527; +return dev_storage + 521; } } @@ -4065,7 +4065,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt6", 9) == 0) { { -return dev_storage + 512; +return dev_storage + 506; } } @@ -4080,7 +4080,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst6", 9) == 0) { { -return dev_storage + 53; +return dev_storage + 47; } } @@ -4101,7 +4101,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds6", 9) == 0) { { -return dev_storage + 497; +return dev_storage + 491; } } @@ -4116,7 +4116,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr6", 9) == 0) { { -return dev_storage + 482; +return dev_storage + 476; } } @@ -4131,7 +4131,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq6", 9) == 0) { { -return dev_storage + 467; +return dev_storage + 461; } } @@ -4146,7 +4146,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp6", 9) == 0) { { -return dev_storage + 452; +return dev_storage + 446; } } @@ -4161,7 +4161,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo6", 9) == 0) { { -return dev_storage + 437; +return dev_storage + 431; } } @@ -4176,7 +4176,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn6", 9) == 0) { { -return dev_storage + 422; +return dev_storage + 416; } } @@ -4194,7 +4194,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm6", 9) == 0) { { -return dev_storage + 407; +return dev_storage + 401; } } @@ -4230,7 +4230,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl6", 9) == 0) { { -return dev_storage + 392; +return dev_storage + 386; } } @@ -4245,7 +4245,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk6", 9) == 0) { { -return dev_storage + 377; +return dev_storage + 371; } } @@ -4260,7 +4260,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj6", 9) == 0) { { -return dev_storage + 362; +return dev_storage + 356; } } @@ -4275,7 +4275,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi6", 9) == 0) { { -return dev_storage + 347; +return dev_storage + 341; } } @@ -4290,7 +4290,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh6", 9) == 0) { { -return dev_storage + 332; +return dev_storage + 326; } } @@ -4305,7 +4305,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg6", 9) == 0) { { -return dev_storage + 317; +return dev_storage + 311; } } @@ -4320,7 +4320,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf6", 9) == 0) { { -return dev_storage + 302; +return dev_storage + 296; } } @@ -4335,7 +4335,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde6", 9) == 0) { { -return dev_storage + 287; +return dev_storage + 281; } } @@ -4353,7 +4353,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd6", 9) == 0) { { -return dev_storage + 272; +return dev_storage + 266; } } @@ -4368,7 +4368,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd6", 9) == 0) { { -return dev_storage + 186; +return dev_storage + 180; } } @@ -4389,7 +4389,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc6", 9) == 0) { { -return dev_storage + 257; +return dev_storage + 251; } } @@ -4404,7 +4404,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb6", 9) == 0) { { -return dev_storage + 242; +return dev_storage + 236; } } @@ -4419,7 +4419,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda6", 9) == 0) { { -return dev_storage + 227; +return dev_storage + 221; } } @@ -4434,7 +4434,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st96", 9) == 0) { { -return dev_storage + 724; +return dev_storage + 718; } } @@ -4449,7 +4449,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st86", 9) == 0) { { -return dev_storage + 714; +return dev_storage + 708; } } @@ -4464,7 +4464,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st76", 9) == 0) { { -return dev_storage + 704; +return dev_storage + 698; } } @@ -4479,7 +4479,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st66", 9) == 0) { { -return dev_storage + 694; +return dev_storage + 688; } } @@ -4494,7 +4494,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st56", 9) == 0) { { -return dev_storage + 684; +return dev_storage + 678; } } @@ -4509,7 +4509,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st46", 9) == 0) { { -return dev_storage + 674; +return dev_storage + 668; } } @@ -4524,7 +4524,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st36", 9) == 0) { { -return dev_storage + 664; +return dev_storage + 658; } } @@ -4539,7 +4539,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st26", 9) == 0) { { -return dev_storage + 654; +return dev_storage + 648; } } @@ -4554,7 +4554,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st16", 9) == 0) { { -return dev_storage + 644; +return dev_storage + 638; } } @@ -4578,7 +4578,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz5", 9) == 0) { { -return dev_storage + 601; +return dev_storage + 595; } } @@ -4596,7 +4596,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty5", 9) == 0) { { -return dev_storage + 762; +return dev_storage + 756; } } @@ -4611,7 +4611,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy5", 9) == 0) { { -return dev_storage + 586; +return dev_storage + 580; } } @@ -4632,7 +4632,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx5", 9) == 0) { { -return dev_storage + 571; +return dev_storage + 565; } } @@ -4647,7 +4647,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw5", 9) == 0) { { -return dev_storage + 556; +return dev_storage + 550; } } @@ -4662,7 +4662,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv5", 9) == 0) { { -return dev_storage + 541; +return dev_storage + 535; } } @@ -4677,7 +4677,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu5", 9) == 0) { { -return dev_storage + 526; +return dev_storage + 520; } } @@ -4695,7 +4695,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt5", 9) == 0) { { -return dev_storage + 511; +return dev_storage + 505; } } @@ -4710,7 +4710,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst5", 9) == 0) { { -return dev_storage + 52; +return dev_storage + 46; } } @@ -4731,7 +4731,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds5", 9) == 0) { { -return dev_storage + 496; +return dev_storage + 490; } } @@ -4746,7 +4746,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr5", 9) == 0) { { -return dev_storage + 481; +return dev_storage + 475; } } @@ -4761,7 +4761,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq5", 9) == 0) { { -return dev_storage + 466; +return dev_storage + 460; } } @@ -4776,7 +4776,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp5", 9) == 0) { { -return dev_storage + 451; +return dev_storage + 445; } } @@ -4791,7 +4791,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo5", 9) == 0) { { -return dev_storage + 436; +return dev_storage + 430; } } @@ -4806,7 +4806,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn5", 9) == 0) { { -return dev_storage + 421; +return dev_storage + 415; } } @@ -4824,7 +4824,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm5", 9) == 0) { { -return dev_storage + 406; +return dev_storage + 400; } } @@ -4860,7 +4860,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl5", 9) == 0) { { -return dev_storage + 391; +return dev_storage + 385; } } @@ -4875,7 +4875,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk5", 9) == 0) { { -return dev_storage + 376; +return dev_storage + 370; } } @@ -4890,7 +4890,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj5", 9) == 0) { { -return dev_storage + 361; +return dev_storage + 355; } } @@ -4905,7 +4905,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi5", 9) == 0) { { -return dev_storage + 346; +return dev_storage + 340; } } @@ -4920,7 +4920,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh5", 9) == 0) { { -return dev_storage + 331; +return dev_storage + 325; } } @@ -4935,7 +4935,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg5", 9) == 0) { { -return dev_storage + 316; +return dev_storage + 310; } } @@ -4950,7 +4950,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf5", 9) == 0) { { -return dev_storage + 301; +return dev_storage + 295; } } @@ -4965,7 +4965,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde5", 9) == 0) { { -return dev_storage + 286; +return dev_storage + 280; } } @@ -4983,7 +4983,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd5", 9) == 0) { { -return dev_storage + 271; +return dev_storage + 265; } } @@ -4998,7 +4998,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd5", 9) == 0) { { -return dev_storage + 185; +return dev_storage + 179; } } @@ -5019,7 +5019,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc5", 9) == 0) { { -return dev_storage + 256; +return dev_storage + 250; } } @@ -5034,7 +5034,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb5", 9) == 0) { { -return dev_storage + 241; +return dev_storage + 235; } } @@ -5049,7 +5049,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda5", 9) == 0) { { -return dev_storage + 226; +return dev_storage + 220; } } @@ -5064,7 +5064,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st95", 9) == 0) { { -return dev_storage + 723; +return dev_storage + 717; } } @@ -5079,7 +5079,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st85", 9) == 0) { { -return dev_storage + 713; +return dev_storage + 707; } } @@ -5094,7 +5094,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st75", 9) == 0) { { -return dev_storage + 703; +return dev_storage + 697; } } @@ -5109,7 +5109,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st65", 9) == 0) { { -return dev_storage + 693; +return dev_storage + 687; } } @@ -5124,7 +5124,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st55", 9) == 0) { { -return dev_storage + 683; +return dev_storage + 677; } } @@ -5139,7 +5139,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st45", 9) == 0) { { -return dev_storage + 673; +return dev_storage + 667; } } @@ -5154,7 +5154,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st35", 9) == 0) { { -return dev_storage + 663; +return dev_storage + 657; } } @@ -5169,7 +5169,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st25", 9) == 0) { { -return dev_storage + 653; +return dev_storage + 647; } } @@ -5187,7 +5187,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st15", 9) == 0) { { -return dev_storage + 643; +return dev_storage + 637; } } @@ -5202,7 +5202,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr15", 9) == 0) { { -return dev_storage + 627; +return dev_storage + 621; } } @@ -5247,7 +5247,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz4", 9) == 0) { { -return dev_storage + 600; +return dev_storage + 594; } } @@ -5265,7 +5265,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty4", 9) == 0) { { -return dev_storage + 761; +return dev_storage + 755; } } @@ -5280,7 +5280,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy4", 9) == 0) { { -return dev_storage + 585; +return dev_storage + 579; } } @@ -5301,7 +5301,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx4", 9) == 0) { { -return dev_storage + 570; +return dev_storage + 564; } } @@ -5316,7 +5316,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw4", 9) == 0) { { -return dev_storage + 555; +return dev_storage + 549; } } @@ -5331,7 +5331,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv4", 9) == 0) { { -return dev_storage + 540; +return dev_storage + 534; } } @@ -5346,7 +5346,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu4", 9) == 0) { { -return dev_storage + 525; +return dev_storage + 519; } } @@ -5364,7 +5364,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt4", 9) == 0) { { -return dev_storage + 510; +return dev_storage + 504; } } @@ -5379,7 +5379,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst4", 9) == 0) { { -return dev_storage + 51; +return dev_storage + 45; } } @@ -5400,7 +5400,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds4", 9) == 0) { { -return dev_storage + 495; +return dev_storage + 489; } } @@ -5415,7 +5415,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr4", 9) == 0) { { -return dev_storage + 480; +return dev_storage + 474; } } @@ -5430,7 +5430,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq4", 9) == 0) { { -return dev_storage + 465; +return dev_storage + 459; } } @@ -5445,7 +5445,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp4", 9) == 0) { { -return dev_storage + 450; +return dev_storage + 444; } } @@ -5460,7 +5460,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo4", 9) == 0) { { -return dev_storage + 435; +return dev_storage + 429; } } @@ -5475,7 +5475,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn4", 9) == 0) { { -return dev_storage + 420; +return dev_storage + 414; } } @@ -5493,7 +5493,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm4", 9) == 0) { { -return dev_storage + 405; +return dev_storage + 399; } } @@ -5529,7 +5529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl4", 9) == 0) { { -return dev_storage + 390; +return dev_storage + 384; } } @@ -5544,7 +5544,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk4", 9) == 0) { { -return dev_storage + 375; +return dev_storage + 369; } } @@ -5559,7 +5559,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj4", 9) == 0) { { -return dev_storage + 360; +return dev_storage + 354; } } @@ -5574,7 +5574,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi4", 9) == 0) { { -return dev_storage + 345; +return dev_storage + 339; } } @@ -5589,7 +5589,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh4", 9) == 0) { { -return dev_storage + 330; +return dev_storage + 324; } } @@ -5604,7 +5604,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg4", 9) == 0) { { -return dev_storage + 315; +return dev_storage + 309; } } @@ -5619,7 +5619,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf4", 9) == 0) { { -return dev_storage + 300; +return dev_storage + 294; } } @@ -5634,7 +5634,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde4", 9) == 0) { { -return dev_storage + 285; +return dev_storage + 279; } } @@ -5652,7 +5652,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd4", 9) == 0) { { -return dev_storage + 270; +return dev_storage + 264; } } @@ -5667,7 +5667,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd4", 9) == 0) { { -return dev_storage + 184; +return dev_storage + 178; } } @@ -5688,7 +5688,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc4", 9) == 0) { { -return dev_storage + 255; +return dev_storage + 249; } } @@ -5703,7 +5703,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb4", 9) == 0) { { -return dev_storage + 240; +return dev_storage + 234; } } @@ -5718,7 +5718,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda4", 9) == 0) { { -return dev_storage + 225; +return dev_storage + 219; } } @@ -5733,7 +5733,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st94", 9) == 0) { { -return dev_storage + 722; +return dev_storage + 716; } } @@ -5748,7 +5748,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st84", 9) == 0) { { -return dev_storage + 712; +return dev_storage + 706; } } @@ -5763,7 +5763,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st74", 9) == 0) { { -return dev_storage + 702; +return dev_storage + 696; } } @@ -5778,7 +5778,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st64", 9) == 0) { { -return dev_storage + 692; +return dev_storage + 686; } } @@ -5793,7 +5793,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st54", 9) == 0) { { -return dev_storage + 682; +return dev_storage + 676; } } @@ -5808,7 +5808,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st44", 9) == 0) { { -return dev_storage + 672; +return dev_storage + 666; } } @@ -5823,7 +5823,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st34", 9) == 0) { { -return dev_storage + 662; +return dev_storage + 656; } } @@ -5838,7 +5838,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st24", 9) == 0) { { -return dev_storage + 652; +return dev_storage + 646; } } @@ -5856,7 +5856,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st14", 9) == 0) { { -return dev_storage + 642; +return dev_storage + 636; } } @@ -5871,7 +5871,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr14", 9) == 0) { { -return dev_storage + 626; +return dev_storage + 620; } } @@ -5916,7 +5916,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz3", 9) == 0) { { -return dev_storage + 599; +return dev_storage + 593; } } @@ -5934,7 +5934,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty3", 9) == 0) { { -return dev_storage + 760; +return dev_storage + 754; } } @@ -5949,7 +5949,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy3", 9) == 0) { { -return dev_storage + 584; +return dev_storage + 578; } } @@ -5970,7 +5970,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx3", 9) == 0) { { -return dev_storage + 569; +return dev_storage + 563; } } @@ -5985,7 +5985,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw3", 9) == 0) { { -return dev_storage + 554; +return dev_storage + 548; } } @@ -6000,7 +6000,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv3", 9) == 0) { { -return dev_storage + 539; +return dev_storage + 533; } } @@ -6015,7 +6015,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu3", 9) == 0) { { -return dev_storage + 524; +return dev_storage + 518; } } @@ -6033,7 +6033,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt3", 9) == 0) { { -return dev_storage + 509; +return dev_storage + 503; } } @@ -6048,7 +6048,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst3", 9) == 0) { { -return dev_storage + 50; +return dev_storage + 44; } } @@ -6069,7 +6069,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds3", 9) == 0) { { -return dev_storage + 494; +return dev_storage + 488; } } @@ -6084,7 +6084,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr3", 9) == 0) { { -return dev_storage + 479; +return dev_storage + 473; } } @@ -6099,7 +6099,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq3", 9) == 0) { { -return dev_storage + 464; +return dev_storage + 458; } } @@ -6114,7 +6114,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp3", 9) == 0) { { -return dev_storage + 449; +return dev_storage + 443; } } @@ -6129,7 +6129,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo3", 9) == 0) { { -return dev_storage + 434; +return dev_storage + 428; } } @@ -6144,7 +6144,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn3", 9) == 0) { { -return dev_storage + 419; +return dev_storage + 413; } } @@ -6162,7 +6162,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm3", 9) == 0) { { -return dev_storage + 404; +return dev_storage + 398; } } @@ -6198,7 +6198,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl3", 9) == 0) { { -return dev_storage + 389; +return dev_storage + 383; } } @@ -6213,7 +6213,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk3", 9) == 0) { { -return dev_storage + 374; +return dev_storage + 368; } } @@ -6228,7 +6228,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj3", 9) == 0) { { -return dev_storage + 359; +return dev_storage + 353; } } @@ -6243,7 +6243,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi3", 9) == 0) { { -return dev_storage + 344; +return dev_storage + 338; } } @@ -6258,7 +6258,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh3", 9) == 0) { { -return dev_storage + 329; +return dev_storage + 323; } } @@ -6273,7 +6273,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg3", 9) == 0) { { -return dev_storage + 314; +return dev_storage + 308; } } @@ -6288,7 +6288,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf3", 9) == 0) { { -return dev_storage + 299; +return dev_storage + 293; } } @@ -6303,7 +6303,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde3", 9) == 0) { { -return dev_storage + 284; +return dev_storage + 278; } } @@ -6321,7 +6321,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd3", 9) == 0) { { -return dev_storage + 269; +return dev_storage + 263; } } @@ -6336,7 +6336,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd3", 9) == 0) { { -return dev_storage + 183; +return dev_storage + 177; } } @@ -6357,7 +6357,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc3", 9) == 0) { { -return dev_storage + 254; +return dev_storage + 248; } } @@ -6372,7 +6372,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb3", 9) == 0) { { -return dev_storage + 239; +return dev_storage + 233; } } @@ -6387,7 +6387,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda3", 9) == 0) { { -return dev_storage + 224; +return dev_storage + 218; } } @@ -6402,7 +6402,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st93", 9) == 0) { { -return dev_storage + 721; +return dev_storage + 715; } } @@ -6417,7 +6417,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st83", 9) == 0) { { -return dev_storage + 711; +return dev_storage + 705; } } @@ -6432,7 +6432,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st73", 9) == 0) { { -return dev_storage + 701; +return dev_storage + 695; } } @@ -6447,7 +6447,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st63", 9) == 0) { { -return dev_storage + 691; +return dev_storage + 685; } } @@ -6462,7 +6462,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st53", 9) == 0) { { -return dev_storage + 681; +return dev_storage + 675; } } @@ -6477,7 +6477,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st43", 9) == 0) { { -return dev_storage + 671; +return dev_storage + 665; } } @@ -6492,7 +6492,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st33", 9) == 0) { { -return dev_storage + 661; +return dev_storage + 655; } } @@ -6507,7 +6507,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st23", 9) == 0) { { -return dev_storage + 651; +return dev_storage + 645; } } @@ -6525,7 +6525,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st13", 9) == 0) { { -return dev_storage + 641; +return dev_storage + 635; } } @@ -6540,7 +6540,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr13", 9) == 0) { { -return dev_storage + 625; +return dev_storage + 619; } } @@ -6585,7 +6585,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz2", 9) == 0) { { -return dev_storage + 598; +return dev_storage + 592; } } @@ -6603,7 +6603,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty2", 9) == 0) { { -return dev_storage + 759; +return dev_storage + 753; } } @@ -6618,7 +6618,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy2", 9) == 0) { { -return dev_storage + 583; +return dev_storage + 577; } } @@ -6639,7 +6639,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx2", 9) == 0) { { -return dev_storage + 568; +return dev_storage + 562; } } @@ -6654,7 +6654,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw2", 9) == 0) { { -return dev_storage + 553; +return dev_storage + 547; } } @@ -6669,7 +6669,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv2", 9) == 0) { { -return dev_storage + 538; +return dev_storage + 532; } } @@ -6684,7 +6684,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu2", 9) == 0) { { -return dev_storage + 523; +return dev_storage + 517; } } @@ -6702,7 +6702,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt2", 9) == 0) { { -return dev_storage + 508; +return dev_storage + 502; } } @@ -6717,7 +6717,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst2", 9) == 0) { { -return dev_storage + 49; +return dev_storage + 43; } } @@ -6738,7 +6738,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds2", 9) == 0) { { -return dev_storage + 493; +return dev_storage + 487; } } @@ -6753,7 +6753,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr2", 9) == 0) { { -return dev_storage + 478; +return dev_storage + 472; } } @@ -6768,7 +6768,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq2", 9) == 0) { { -return dev_storage + 463; +return dev_storage + 457; } } @@ -6783,7 +6783,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp2", 9) == 0) { { -return dev_storage + 448; +return dev_storage + 442; } } @@ -6798,7 +6798,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo2", 9) == 0) { { -return dev_storage + 433; +return dev_storage + 427; } } @@ -6813,7 +6813,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn2", 9) == 0) { { -return dev_storage + 418; +return dev_storage + 412; } } @@ -6831,7 +6831,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm2", 9) == 0) { { -return dev_storage + 403; +return dev_storage + 397; } } @@ -6867,7 +6867,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl2", 9) == 0) { { -return dev_storage + 388; +return dev_storage + 382; } } @@ -6882,7 +6882,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk2", 9) == 0) { { -return dev_storage + 373; +return dev_storage + 367; } } @@ -6897,7 +6897,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj2", 9) == 0) { { -return dev_storage + 358; +return dev_storage + 352; } } @@ -6912,7 +6912,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi2", 9) == 0) { { -return dev_storage + 343; +return dev_storage + 337; } } @@ -6927,7 +6927,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh2", 9) == 0) { { -return dev_storage + 328; +return dev_storage + 322; } } @@ -6942,7 +6942,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg2", 9) == 0) { { -return dev_storage + 313; +return dev_storage + 307; } } @@ -6957,7 +6957,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf2", 9) == 0) { { -return dev_storage + 298; +return dev_storage + 292; } } @@ -6972,7 +6972,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde2", 9) == 0) { { -return dev_storage + 283; +return dev_storage + 277; } } @@ -6990,7 +6990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd2", 9) == 0) { { -return dev_storage + 268; +return dev_storage + 262; } } @@ -7005,7 +7005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd2", 9) == 0) { { -return dev_storage + 182; +return dev_storage + 176; } } @@ -7026,7 +7026,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc2", 9) == 0) { { -return dev_storage + 253; +return dev_storage + 247; } } @@ -7041,7 +7041,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb2", 9) == 0) { { -return dev_storage + 238; +return dev_storage + 232; } } @@ -7056,7 +7056,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda2", 9) == 0) { { -return dev_storage + 223; +return dev_storage + 217; } } @@ -7071,7 +7071,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st92", 9) == 0) { { -return dev_storage + 720; +return dev_storage + 714; } } @@ -7086,7 +7086,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st82", 9) == 0) { { -return dev_storage + 710; +return dev_storage + 704; } } @@ -7101,7 +7101,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st72", 9) == 0) { { -return dev_storage + 700; +return dev_storage + 694; } } @@ -7116,7 +7116,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st62", 9) == 0) { { -return dev_storage + 690; +return dev_storage + 684; } } @@ -7131,7 +7131,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st52", 9) == 0) { { -return dev_storage + 680; +return dev_storage + 674; } } @@ -7146,7 +7146,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st42", 9) == 0) { { -return dev_storage + 670; +return dev_storage + 664; } } @@ -7161,7 +7161,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st32", 9) == 0) { { -return dev_storage + 660; +return dev_storage + 654; } } @@ -7176,7 +7176,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st22", 9) == 0) { { -return dev_storage + 650; +return dev_storage + 644; } } @@ -7194,7 +7194,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st12", 9) == 0) { { -return dev_storage + 640; +return dev_storage + 634; } } @@ -7209,7 +7209,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr12", 9) == 0) { { -return dev_storage + 624; +return dev_storage + 618; } } @@ -7254,7 +7254,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz1", 9) == 0) { { -return dev_storage + 597; +return dev_storage + 591; } } @@ -7272,7 +7272,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty1", 9) == 0) { { -return dev_storage + 758; +return dev_storage + 752; } } @@ -7287,7 +7287,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy1", 9) == 0) { { -return dev_storage + 582; +return dev_storage + 576; } } @@ -7308,7 +7308,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx1", 9) == 0) { { -return dev_storage + 567; +return dev_storage + 561; } } @@ -7323,7 +7323,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw1", 9) == 0) { { -return dev_storage + 552; +return dev_storage + 546; } } @@ -7338,7 +7338,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv1", 9) == 0) { { -return dev_storage + 537; +return dev_storage + 531; } } @@ -7353,7 +7353,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu1", 9) == 0) { { -return dev_storage + 522; +return dev_storage + 516; } } @@ -7371,7 +7371,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt1", 9) == 0) { { -return dev_storage + 507; +return dev_storage + 501; } } @@ -7386,7 +7386,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst1", 9) == 0) { { -return dev_storage + 48; +return dev_storage + 42; } } @@ -7407,7 +7407,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds1", 9) == 0) { { -return dev_storage + 492; +return dev_storage + 486; } } @@ -7422,7 +7422,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr1", 9) == 0) { { -return dev_storage + 477; +return dev_storage + 471; } } @@ -7437,7 +7437,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq1", 9) == 0) { { -return dev_storage + 462; +return dev_storage + 456; } } @@ -7452,7 +7452,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp1", 9) == 0) { { -return dev_storage + 447; +return dev_storage + 441; } } @@ -7467,7 +7467,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo1", 9) == 0) { { -return dev_storage + 432; +return dev_storage + 426; } } @@ -7482,7 +7482,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn1", 9) == 0) { { -return dev_storage + 417; +return dev_storage + 411; } } @@ -7500,7 +7500,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm1", 9) == 0) { { -return dev_storage + 402; +return dev_storage + 396; } } @@ -7536,7 +7536,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl1", 9) == 0) { { -return dev_storage + 387; +return dev_storage + 381; } } @@ -7551,7 +7551,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk1", 9) == 0) { { -return dev_storage + 372; +return dev_storage + 366; } } @@ -7566,7 +7566,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj1", 9) == 0) { { -return dev_storage + 357; +return dev_storage + 351; } } @@ -7581,7 +7581,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi1", 9) == 0) { { -return dev_storage + 342; +return dev_storage + 336; } } @@ -7596,7 +7596,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh1", 9) == 0) { { -return dev_storage + 327; +return dev_storage + 321; } } @@ -7611,7 +7611,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg1", 9) == 0) { { -return dev_storage + 312; +return dev_storage + 306; } } @@ -7626,7 +7626,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf1", 9) == 0) { { -return dev_storage + 297; +return dev_storage + 291; } } @@ -7641,7 +7641,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde1", 9) == 0) { { -return dev_storage + 282; +return dev_storage + 276; } } @@ -7659,7 +7659,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd1", 9) == 0) { { -return dev_storage + 267; +return dev_storage + 261; } } @@ -7674,7 +7674,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd1", 9) == 0) { { -return dev_storage + 181; +return dev_storage + 175; } } @@ -7695,7 +7695,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc1", 9) == 0) { { -return dev_storage + 252; +return dev_storage + 246; } } @@ -7710,7 +7710,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb1", 9) == 0) { { -return dev_storage + 237; +return dev_storage + 231; } } @@ -7725,7 +7725,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda1", 9) == 0) { { -return dev_storage + 222; +return dev_storage + 216; } } @@ -7740,7 +7740,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st91", 9) == 0) { { -return dev_storage + 719; +return dev_storage + 713; } } @@ -7755,7 +7755,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st81", 9) == 0) { { -return dev_storage + 709; +return dev_storage + 703; } } @@ -7770,7 +7770,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st71", 9) == 0) { { -return dev_storage + 699; +return dev_storage + 693; } } @@ -7785,7 +7785,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st61", 9) == 0) { { -return dev_storage + 689; +return dev_storage + 683; } } @@ -7800,7 +7800,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st51", 9) == 0) { { -return dev_storage + 679; +return dev_storage + 673; } } @@ -7815,7 +7815,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st41", 9) == 0) { { -return dev_storage + 669; +return dev_storage + 663; } } @@ -7830,7 +7830,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st31", 9) == 0) { { -return dev_storage + 659; +return dev_storage + 653; } } @@ -7845,7 +7845,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st21", 9) == 0) { { -return dev_storage + 649; +return dev_storage + 643; } } @@ -7863,7 +7863,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st11", 9) == 0) { { -return dev_storage + 639; +return dev_storage + 633; } } @@ -7878,7 +7878,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr11", 9) == 0) { { -return dev_storage + 623; +return dev_storage + 617; } } @@ -7923,7 +7923,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty0", 9) == 0) { { -return dev_storage + 757; +return dev_storage + 751; } } @@ -7938,7 +7938,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst0", 9) == 0) { { -return dev_storage + 47; +return dev_storage + 41; } } @@ -7968,7 +7968,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd0", 9) == 0) { { -return dev_storage + 180; +return dev_storage + 174; } } @@ -7983,7 +7983,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st90", 9) == 0) { { -return dev_storage + 718; +return dev_storage + 712; } } @@ -7998,7 +7998,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st80", 9) == 0) { { -return dev_storage + 708; +return dev_storage + 702; } } @@ -8013,7 +8013,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st70", 9) == 0) { { -return dev_storage + 698; +return dev_storage + 692; } } @@ -8028,7 +8028,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st60", 9) == 0) { { -return dev_storage + 688; +return dev_storage + 682; } } @@ -8043,7 +8043,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st50", 9) == 0) { { -return dev_storage + 678; +return dev_storage + 672; } } @@ -8058,7 +8058,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st40", 9) == 0) { { -return dev_storage + 668; +return dev_storage + 662; } } @@ -8073,7 +8073,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st30", 9) == 0) { { -return dev_storage + 658; +return dev_storage + 652; } } @@ -8088,7 +8088,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st20", 9) == 0) { { -return dev_storage + 648; +return dev_storage + 642; } } @@ -8106,7 +8106,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st10", 9) == 0) { { -return dev_storage + 638; +return dev_storage + 632; } } @@ -8121,7 +8121,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sr10", 9) == 0) { { -return dev_storage + 622; +return dev_storage + 616; } } @@ -8190,7 +8190,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS9", 10) == 0) { { -return dev_storage + 830; +return dev_storage + 824; } } @@ -8205,7 +8205,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst99", 10) == 0) { { -return dev_storage + 146; +return dev_storage + 140; } } @@ -8220,7 +8220,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst89", 10) == 0) { { -return dev_storage + 136; +return dev_storage + 130; } } @@ -8235,7 +8235,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst79", 10) == 0) { { -return dev_storage + 126; +return dev_storage + 120; } } @@ -8250,7 +8250,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst69", 10) == 0) { { -return dev_storage + 116; +return dev_storage + 110; } } @@ -8268,7 +8268,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty59", 10) == 0) { { -return dev_storage + 816; +return dev_storage + 810; } } @@ -8283,7 +8283,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst59", 10) == 0) { { -return dev_storage + 106; +return dev_storage + 100; } } @@ -8307,7 +8307,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty49", 10) == 0) { { -return dev_storage + 806; +return dev_storage + 800; } } @@ -8322,7 +8322,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst49", 10) == 0) { { -return dev_storage + 96; +return dev_storage + 90; } } @@ -8346,7 +8346,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty39", 10) == 0) { { -return dev_storage + 796; +return dev_storage + 790; } } @@ -8361,7 +8361,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst39", 10) == 0) { { -return dev_storage + 86; +return dev_storage + 80; } } @@ -8385,7 +8385,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty29", 10) == 0) { { -return dev_storage + 786; +return dev_storage + 780; } } @@ -8400,7 +8400,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst29", 10) == 0) { { -return dev_storage + 76; +return dev_storage + 70; } } @@ -8424,7 +8424,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty19", 10) == 0) { { -return dev_storage + 776; +return dev_storage + 770; } } @@ -8439,7 +8439,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st119", 10) == 0) { { -return dev_storage + 747; +return dev_storage + 741; } } @@ -8454,7 +8454,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst19", 10) == 0) { { -return dev_storage + 66; +return dev_storage + 60; } } @@ -8475,7 +8475,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st109", 10) == 0) { { -return dev_storage + 737; +return dev_storage + 731; } } @@ -8499,7 +8499,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS8", 10) == 0) { { -return dev_storage + 829; +return dev_storage + 823; } } @@ -8514,7 +8514,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst98", 10) == 0) { { -return dev_storage + 145; +return dev_storage + 139; } } @@ -8529,7 +8529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst88", 10) == 0) { { -return dev_storage + 135; +return dev_storage + 129; } } @@ -8544,7 +8544,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst78", 10) == 0) { { -return dev_storage + 125; +return dev_storage + 119; } } @@ -8559,7 +8559,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst68", 10) == 0) { { -return dev_storage + 115; +return dev_storage + 109; } } @@ -8577,7 +8577,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty58", 10) == 0) { { -return dev_storage + 815; +return dev_storage + 809; } } @@ -8592,7 +8592,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst58", 10) == 0) { { -return dev_storage + 105; +return dev_storage + 99; } } @@ -8616,7 +8616,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty48", 10) == 0) { { -return dev_storage + 805; +return dev_storage + 799; } } @@ -8631,7 +8631,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst48", 10) == 0) { { -return dev_storage + 95; +return dev_storage + 89; } } @@ -8655,7 +8655,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty38", 10) == 0) { { -return dev_storage + 795; +return dev_storage + 789; } } @@ -8670,7 +8670,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst38", 10) == 0) { { -return dev_storage + 85; +return dev_storage + 79; } } @@ -8694,7 +8694,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty28", 10) == 0) { { -return dev_storage + 785; +return dev_storage + 779; } } @@ -8709,7 +8709,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst28", 10) == 0) { { -return dev_storage + 75; +return dev_storage + 69; } } @@ -8733,7 +8733,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty18", 10) == 0) { { -return dev_storage + 775; +return dev_storage + 769; } } @@ -8748,7 +8748,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st118", 10) == 0) { { -return dev_storage + 746; +return dev_storage + 740; } } @@ -8763,7 +8763,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst18", 10) == 0) { { -return dev_storage + 65; +return dev_storage + 59; } } @@ -8784,7 +8784,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st108", 10) == 0) { { -return dev_storage + 736; +return dev_storage + 730; } } @@ -8808,7 +8808,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS7", 10) == 0) { { -return dev_storage + 828; +return dev_storage + 822; } } @@ -8823,7 +8823,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst97", 10) == 0) { { -return dev_storage + 144; +return dev_storage + 138; } } @@ -8838,7 +8838,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst87", 10) == 0) { { -return dev_storage + 134; +return dev_storage + 128; } } @@ -8853,7 +8853,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst77", 10) == 0) { { -return dev_storage + 124; +return dev_storage + 118; } } @@ -8868,7 +8868,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst67", 10) == 0) { { -return dev_storage + 114; +return dev_storage + 108; } } @@ -8886,7 +8886,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty57", 10) == 0) { { -return dev_storage + 814; +return dev_storage + 808; } } @@ -8901,7 +8901,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst57", 10) == 0) { { -return dev_storage + 104; +return dev_storage + 98; } } @@ -8925,7 +8925,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty47", 10) == 0) { { -return dev_storage + 804; +return dev_storage + 798; } } @@ -8940,7 +8940,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst47", 10) == 0) { { -return dev_storage + 94; +return dev_storage + 88; } } @@ -8964,7 +8964,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty37", 10) == 0) { { -return dev_storage + 794; +return dev_storage + 788; } } @@ -8979,7 +8979,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst37", 10) == 0) { { -return dev_storage + 84; +return dev_storage + 78; } } @@ -9003,7 +9003,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty27", 10) == 0) { { -return dev_storage + 784; +return dev_storage + 778; } } @@ -9018,7 +9018,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st127", 10) == 0) { { -return dev_storage + 755; +return dev_storage + 749; } } @@ -9033,7 +9033,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst27", 10) == 0) { { -return dev_storage + 74; +return dev_storage + 68; } } @@ -9057,7 +9057,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty17", 10) == 0) { { -return dev_storage + 774; +return dev_storage + 768; } } @@ -9072,7 +9072,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st117", 10) == 0) { { -return dev_storage + 745; +return dev_storage + 739; } } @@ -9087,7 +9087,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst17", 10) == 0) { { -return dev_storage + 64; +return dev_storage + 58; } } @@ -9108,7 +9108,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st107", 10) == 0) { { -return dev_storage + 735; +return dev_storage + 729; } } @@ -9132,7 +9132,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS6", 10) == 0) { { -return dev_storage + 827; +return dev_storage + 821; } } @@ -9147,7 +9147,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst96", 10) == 0) { { -return dev_storage + 143; +return dev_storage + 137; } } @@ -9162,7 +9162,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst86", 10) == 0) { { -return dev_storage + 133; +return dev_storage + 127; } } @@ -9177,7 +9177,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst76", 10) == 0) { { -return dev_storage + 123; +return dev_storage + 117; } } @@ -9192,7 +9192,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst66", 10) == 0) { { -return dev_storage + 113; +return dev_storage + 107; } } @@ -9210,7 +9210,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty56", 10) == 0) { { -return dev_storage + 813; +return dev_storage + 807; } } @@ -9225,7 +9225,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst56", 10) == 0) { { -return dev_storage + 103; +return dev_storage + 97; } } @@ -9249,7 +9249,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty46", 10) == 0) { { -return dev_storage + 803; +return dev_storage + 797; } } @@ -9264,7 +9264,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst46", 10) == 0) { { -return dev_storage + 93; +return dev_storage + 87; } } @@ -9288,7 +9288,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty36", 10) == 0) { { -return dev_storage + 793; +return dev_storage + 787; } } @@ -9303,7 +9303,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst36", 10) == 0) { { -return dev_storage + 83; +return dev_storage + 77; } } @@ -9327,7 +9327,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty26", 10) == 0) { { -return dev_storage + 783; +return dev_storage + 777; } } @@ -9342,7 +9342,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st126", 10) == 0) { { -return dev_storage + 754; +return dev_storage + 748; } } @@ -9357,7 +9357,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst26", 10) == 0) { { -return dev_storage + 73; +return dev_storage + 67; } } @@ -9381,7 +9381,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty16", 10) == 0) { { -return dev_storage + 773; +return dev_storage + 767; } } @@ -9396,7 +9396,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st116", 10) == 0) { { -return dev_storage + 744; +return dev_storage + 738; } } @@ -9411,7 +9411,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst16", 10) == 0) { { -return dev_storage + 63; +return dev_storage + 57; } } @@ -9447,7 +9447,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st106", 10) == 0) { { -return dev_storage + 734; +return dev_storage + 728; } } @@ -9471,7 +9471,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz15", 10) == 0) { { -return dev_storage + 611; +return dev_storage + 605; } } @@ -9489,7 +9489,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS5", 10) == 0) { { -return dev_storage + 826; +return dev_storage + 820; } } @@ -9504,7 +9504,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty55", 10) == 0) { { -return dev_storage + 812; +return dev_storage + 806; } } @@ -9519,7 +9519,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty45", 10) == 0) { { -return dev_storage + 802; +return dev_storage + 796; } } @@ -9534,7 +9534,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty35", 10) == 0) { { -return dev_storage + 792; +return dev_storage + 786; } } @@ -9549,7 +9549,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty25", 10) == 0) { { -return dev_storage + 782; +return dev_storage + 776; } } @@ -9567,7 +9567,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty15", 10) == 0) { { -return dev_storage + 772; +return dev_storage + 766; } } @@ -9582,7 +9582,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy15", 10) == 0) { { -return dev_storage + 596; +return dev_storage + 590; } } @@ -9609,7 +9609,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx15", 10) == 0) { { -return dev_storage + 581; +return dev_storage + 575; } } @@ -9624,7 +9624,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw15", 10) == 0) { { -return dev_storage + 566; +return dev_storage + 560; } } @@ -9639,7 +9639,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv15", 10) == 0) { { -return dev_storage + 551; +return dev_storage + 545; } } @@ -9654,7 +9654,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu15", 10) == 0) { { -return dev_storage + 536; +return dev_storage + 530; } } @@ -9672,7 +9672,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst95", 10) == 0) { { -return dev_storage + 142; +return dev_storage + 136; } } @@ -9687,7 +9687,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst85", 10) == 0) { { -return dev_storage + 132; +return dev_storage + 126; } } @@ -9702,7 +9702,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst75", 10) == 0) { { -return dev_storage + 122; +return dev_storage + 116; } } @@ -9717,7 +9717,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst65", 10) == 0) { { -return dev_storage + 112; +return dev_storage + 106; } } @@ -9732,7 +9732,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst55", 10) == 0) { { -return dev_storage + 102; +return dev_storage + 96; } } @@ -9747,7 +9747,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst45", 10) == 0) { { -return dev_storage + 92; +return dev_storage + 86; } } @@ -9762,7 +9762,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst35", 10) == 0) { { -return dev_storage + 82; +return dev_storage + 76; } } @@ -9777,7 +9777,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst25", 10) == 0) { { -return dev_storage + 72; +return dev_storage + 66; } } @@ -9795,7 +9795,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt15", 10) == 0) { { -return dev_storage + 521; +return dev_storage + 515; } } @@ -9810,7 +9810,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst15", 10) == 0) { { -return dev_storage + 62; +return dev_storage + 56; } } @@ -9837,7 +9837,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds15", 10) == 0) { { -return dev_storage + 506; +return dev_storage + 500; } } @@ -9852,7 +9852,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr15", 10) == 0) { { -return dev_storage + 491; +return dev_storage + 485; } } @@ -9867,7 +9867,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq15", 10) == 0) { { -return dev_storage + 476; +return dev_storage + 470; } } @@ -9882,7 +9882,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp15", 10) == 0) { { -return dev_storage + 461; +return dev_storage + 455; } } @@ -9897,7 +9897,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo15", 10) == 0) { { -return dev_storage + 446; +return dev_storage + 440; } } @@ -9912,7 +9912,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn15", 10) == 0) { { -return dev_storage + 431; +return dev_storage + 425; } } @@ -9930,7 +9930,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm15", 10) == 0) { { -return dev_storage + 416; +return dev_storage + 410; } } @@ -9966,7 +9966,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl15", 10) == 0) { { -return dev_storage + 401; +return dev_storage + 395; } } @@ -9981,7 +9981,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk15", 10) == 0) { { -return dev_storage + 386; +return dev_storage + 380; } } @@ -9996,7 +9996,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj15", 10) == 0) { { -return dev_storage + 371; +return dev_storage + 365; } } @@ -10011,7 +10011,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi15", 10) == 0) { { -return dev_storage + 356; +return dev_storage + 350; } } @@ -10026,7 +10026,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh15", 10) == 0) { { -return dev_storage + 341; +return dev_storage + 335; } } @@ -10041,7 +10041,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg15", 10) == 0) { { -return dev_storage + 326; +return dev_storage + 320; } } @@ -10056,7 +10056,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf15", 10) == 0) { { -return dev_storage + 311; +return dev_storage + 305; } } @@ -10071,7 +10071,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde15", 10) == 0) { { -return dev_storage + 296; +return dev_storage + 290; } } @@ -10089,7 +10089,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd15", 10) == 0) { { -return dev_storage + 281; +return dev_storage + 275; } } @@ -10104,7 +10104,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd15", 10) == 0) { { -return dev_storage + 195; +return dev_storage + 189; } } @@ -10125,7 +10125,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc15", 10) == 0) { { -return dev_storage + 266; +return dev_storage + 260; } } @@ -10140,7 +10140,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb15", 10) == 0) { { -return dev_storage + 251; +return dev_storage + 245; } } @@ -10155,7 +10155,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda15", 10) == 0) { { -return dev_storage + 236; +return dev_storage + 230; } } @@ -10173,7 +10173,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st125", 10) == 0) { { -return dev_storage + 753; +return dev_storage + 747; } } @@ -10188,7 +10188,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st115", 10) == 0) { { -return dev_storage + 743; +return dev_storage + 737; } } @@ -10203,7 +10203,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st105", 10) == 0) { { -return dev_storage + 733; +return dev_storage + 727; } } @@ -10233,7 +10233,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz14", 10) == 0) { { -return dev_storage + 610; +return dev_storage + 604; } } @@ -10251,7 +10251,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS4", 10) == 0) { { -return dev_storage + 825; +return dev_storage + 819; } } @@ -10266,7 +10266,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty54", 10) == 0) { { -return dev_storage + 811; +return dev_storage + 805; } } @@ -10281,7 +10281,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty44", 10) == 0) { { -return dev_storage + 801; +return dev_storage + 795; } } @@ -10296,7 +10296,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty34", 10) == 0) { { -return dev_storage + 791; +return dev_storage + 785; } } @@ -10311,7 +10311,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty24", 10) == 0) { { -return dev_storage + 781; +return dev_storage + 775; } } @@ -10329,7 +10329,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty14", 10) == 0) { { -return dev_storage + 771; +return dev_storage + 765; } } @@ -10344,7 +10344,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy14", 10) == 0) { { -return dev_storage + 595; +return dev_storage + 589; } } @@ -10371,7 +10371,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx14", 10) == 0) { { -return dev_storage + 580; +return dev_storage + 574; } } @@ -10386,7 +10386,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw14", 10) == 0) { { -return dev_storage + 565; +return dev_storage + 559; } } @@ -10401,7 +10401,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv14", 10) == 0) { { -return dev_storage + 550; +return dev_storage + 544; } } @@ -10416,7 +10416,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu14", 10) == 0) { { -return dev_storage + 535; +return dev_storage + 529; } } @@ -10434,7 +10434,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst94", 10) == 0) { { -return dev_storage + 141; +return dev_storage + 135; } } @@ -10449,7 +10449,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst84", 10) == 0) { { -return dev_storage + 131; +return dev_storage + 125; } } @@ -10464,7 +10464,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst74", 10) == 0) { { -return dev_storage + 121; +return dev_storage + 115; } } @@ -10479,7 +10479,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst64", 10) == 0) { { -return dev_storage + 111; +return dev_storage + 105; } } @@ -10494,7 +10494,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst54", 10) == 0) { { -return dev_storage + 101; +return dev_storage + 95; } } @@ -10509,7 +10509,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst44", 10) == 0) { { -return dev_storage + 91; +return dev_storage + 85; } } @@ -10524,7 +10524,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst34", 10) == 0) { { -return dev_storage + 81; +return dev_storage + 75; } } @@ -10539,7 +10539,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst24", 10) == 0) { { -return dev_storage + 71; +return dev_storage + 65; } } @@ -10557,7 +10557,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt14", 10) == 0) { { -return dev_storage + 520; +return dev_storage + 514; } } @@ -10572,7 +10572,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst14", 10) == 0) { { -return dev_storage + 61; +return dev_storage + 55; } } @@ -10599,7 +10599,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds14", 10) == 0) { { -return dev_storage + 505; +return dev_storage + 499; } } @@ -10614,7 +10614,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr14", 10) == 0) { { -return dev_storage + 490; +return dev_storage + 484; } } @@ -10629,7 +10629,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq14", 10) == 0) { { -return dev_storage + 475; +return dev_storage + 469; } } @@ -10644,7 +10644,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp14", 10) == 0) { { -return dev_storage + 460; +return dev_storage + 454; } } @@ -10659,7 +10659,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo14", 10) == 0) { { -return dev_storage + 445; +return dev_storage + 439; } } @@ -10674,7 +10674,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn14", 10) == 0) { { -return dev_storage + 430; +return dev_storage + 424; } } @@ -10692,7 +10692,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm14", 10) == 0) { { -return dev_storage + 415; +return dev_storage + 409; } } @@ -10728,7 +10728,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl14", 10) == 0) { { -return dev_storage + 400; +return dev_storage + 394; } } @@ -10743,7 +10743,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk14", 10) == 0) { { -return dev_storage + 385; +return dev_storage + 379; } } @@ -10758,7 +10758,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj14", 10) == 0) { { -return dev_storage + 370; +return dev_storage + 364; } } @@ -10773,7 +10773,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi14", 10) == 0) { { -return dev_storage + 355; +return dev_storage + 349; } } @@ -10788,7 +10788,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh14", 10) == 0) { { -return dev_storage + 340; +return dev_storage + 334; } } @@ -10803,7 +10803,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg14", 10) == 0) { { -return dev_storage + 325; +return dev_storage + 319; } } @@ -10818,7 +10818,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf14", 10) == 0) { { -return dev_storage + 310; +return dev_storage + 304; } } @@ -10833,7 +10833,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde14", 10) == 0) { { -return dev_storage + 295; +return dev_storage + 289; } } @@ -10851,7 +10851,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd14", 10) == 0) { { -return dev_storage + 280; +return dev_storage + 274; } } @@ -10866,7 +10866,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd14", 10) == 0) { { -return dev_storage + 194; +return dev_storage + 188; } } @@ -10887,7 +10887,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc14", 10) == 0) { { -return dev_storage + 265; +return dev_storage + 259; } } @@ -10902,7 +10902,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb14", 10) == 0) { { -return dev_storage + 250; +return dev_storage + 244; } } @@ -10917,7 +10917,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda14", 10) == 0) { { -return dev_storage + 235; +return dev_storage + 229; } } @@ -10935,7 +10935,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st124", 10) == 0) { { -return dev_storage + 752; +return dev_storage + 746; } } @@ -10950,7 +10950,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st114", 10) == 0) { { -return dev_storage + 742; +return dev_storage + 736; } } @@ -10965,7 +10965,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st104", 10) == 0) { { -return dev_storage + 732; +return dev_storage + 726; } } @@ -10995,7 +10995,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz13", 10) == 0) { { -return dev_storage + 609; +return dev_storage + 603; } } @@ -11013,7 +11013,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS3", 10) == 0) { { -return dev_storage + 824; +return dev_storage + 818; } } @@ -11028,7 +11028,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty63", 10) == 0) { { -return dev_storage + 820; +return dev_storage + 814; } } @@ -11043,7 +11043,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty53", 10) == 0) { { -return dev_storage + 810; +return dev_storage + 804; } } @@ -11058,7 +11058,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty43", 10) == 0) { { -return dev_storage + 800; +return dev_storage + 794; } } @@ -11073,7 +11073,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty33", 10) == 0) { { -return dev_storage + 790; +return dev_storage + 784; } } @@ -11088,7 +11088,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty23", 10) == 0) { { -return dev_storage + 780; +return dev_storage + 774; } } @@ -11106,7 +11106,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty13", 10) == 0) { { -return dev_storage + 770; +return dev_storage + 764; } } @@ -11121,7 +11121,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy13", 10) == 0) { { -return dev_storage + 594; +return dev_storage + 588; } } @@ -11148,7 +11148,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx13", 10) == 0) { { -return dev_storage + 579; +return dev_storage + 573; } } @@ -11163,7 +11163,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw13", 10) == 0) { { -return dev_storage + 564; +return dev_storage + 558; } } @@ -11178,7 +11178,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv13", 10) == 0) { { -return dev_storage + 549; +return dev_storage + 543; } } @@ -11193,7 +11193,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu13", 10) == 0) { { -return dev_storage + 534; +return dev_storage + 528; } } @@ -11211,7 +11211,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst93", 10) == 0) { { -return dev_storage + 140; +return dev_storage + 134; } } @@ -11226,7 +11226,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst83", 10) == 0) { { -return dev_storage + 130; +return dev_storage + 124; } } @@ -11241,7 +11241,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst73", 10) == 0) { { -return dev_storage + 120; +return dev_storage + 114; } } @@ -11256,7 +11256,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst63", 10) == 0) { { -return dev_storage + 110; +return dev_storage + 104; } } @@ -11271,7 +11271,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst53", 10) == 0) { { -return dev_storage + 100; +return dev_storage + 94; } } @@ -11286,7 +11286,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst43", 10) == 0) { { -return dev_storage + 90; +return dev_storage + 84; } } @@ -11301,7 +11301,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst33", 10) == 0) { { -return dev_storage + 80; +return dev_storage + 74; } } @@ -11316,7 +11316,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst23", 10) == 0) { { -return dev_storage + 70; +return dev_storage + 64; } } @@ -11334,7 +11334,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt13", 10) == 0) { { -return dev_storage + 519; +return dev_storage + 513; } } @@ -11349,7 +11349,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst13", 10) == 0) { { -return dev_storage + 60; +return dev_storage + 54; } } @@ -11376,7 +11376,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds13", 10) == 0) { { -return dev_storage + 504; +return dev_storage + 498; } } @@ -11391,7 +11391,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr13", 10) == 0) { { -return dev_storage + 489; +return dev_storage + 483; } } @@ -11406,7 +11406,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq13", 10) == 0) { { -return dev_storage + 474; +return dev_storage + 468; } } @@ -11421,7 +11421,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp13", 10) == 0) { { -return dev_storage + 459; +return dev_storage + 453; } } @@ -11436,7 +11436,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo13", 10) == 0) { { -return dev_storage + 444; +return dev_storage + 438; } } @@ -11451,7 +11451,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn13", 10) == 0) { { -return dev_storage + 429; +return dev_storage + 423; } } @@ -11469,7 +11469,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm13", 10) == 0) { { -return dev_storage + 414; +return dev_storage + 408; } } @@ -11505,7 +11505,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl13", 10) == 0) { { -return dev_storage + 399; +return dev_storage + 393; } } @@ -11520,7 +11520,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk13", 10) == 0) { { -return dev_storage + 384; +return dev_storage + 378; } } @@ -11535,7 +11535,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj13", 10) == 0) { { -return dev_storage + 369; +return dev_storage + 363; } } @@ -11550,7 +11550,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi13", 10) == 0) { { -return dev_storage + 354; +return dev_storage + 348; } } @@ -11565,7 +11565,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh13", 10) == 0) { { -return dev_storage + 339; +return dev_storage + 333; } } @@ -11580,7 +11580,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg13", 10) == 0) { { -return dev_storage + 324; +return dev_storage + 318; } } @@ -11595,7 +11595,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf13", 10) == 0) { { -return dev_storage + 309; +return dev_storage + 303; } } @@ -11610,7 +11610,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde13", 10) == 0) { { -return dev_storage + 294; +return dev_storage + 288; } } @@ -11628,7 +11628,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd13", 10) == 0) { { -return dev_storage + 279; +return dev_storage + 273; } } @@ -11643,7 +11643,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd13", 10) == 0) { { -return dev_storage + 193; +return dev_storage + 187; } } @@ -11664,7 +11664,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc13", 10) == 0) { { -return dev_storage + 264; +return dev_storage + 258; } } @@ -11679,7 +11679,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb13", 10) == 0) { { -return dev_storage + 249; +return dev_storage + 243; } } @@ -11694,7 +11694,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda13", 10) == 0) { { -return dev_storage + 234; +return dev_storage + 228; } } @@ -11712,7 +11712,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st123", 10) == 0) { { -return dev_storage + 751; +return dev_storage + 745; } } @@ -11727,7 +11727,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st113", 10) == 0) { { -return dev_storage + 741; +return dev_storage + 735; } } @@ -11742,7 +11742,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st103", 10) == 0) { { -return dev_storage + 731; +return dev_storage + 725; } } @@ -11772,7 +11772,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz12", 10) == 0) { { -return dev_storage + 608; +return dev_storage + 602; } } @@ -11790,7 +11790,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS2", 10) == 0) { { -return dev_storage + 823; +return dev_storage + 817; } } @@ -11805,7 +11805,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty62", 10) == 0) { { -return dev_storage + 819; +return dev_storage + 813; } } @@ -11820,7 +11820,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty52", 10) == 0) { { -return dev_storage + 809; +return dev_storage + 803; } } @@ -11835,7 +11835,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty42", 10) == 0) { { -return dev_storage + 799; +return dev_storage + 793; } } @@ -11850,7 +11850,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty32", 10) == 0) { { -return dev_storage + 789; +return dev_storage + 783; } } @@ -11865,7 +11865,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty22", 10) == 0) { { -return dev_storage + 779; +return dev_storage + 773; } } @@ -11883,7 +11883,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty12", 10) == 0) { { -return dev_storage + 769; +return dev_storage + 763; } } @@ -11898,7 +11898,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy12", 10) == 0) { { -return dev_storage + 593; +return dev_storage + 587; } } @@ -11925,7 +11925,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx12", 10) == 0) { { -return dev_storage + 578; +return dev_storage + 572; } } @@ -11940,7 +11940,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw12", 10) == 0) { { -return dev_storage + 563; +return dev_storage + 557; } } @@ -11955,7 +11955,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv12", 10) == 0) { { -return dev_storage + 548; +return dev_storage + 542; } } @@ -11970,7 +11970,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu12", 10) == 0) { { -return dev_storage + 533; +return dev_storage + 527; } } @@ -11988,7 +11988,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst92", 10) == 0) { { -return dev_storage + 139; +return dev_storage + 133; } } @@ -12003,7 +12003,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst82", 10) == 0) { { -return dev_storage + 129; +return dev_storage + 123; } } @@ -12018,7 +12018,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst72", 10) == 0) { { -return dev_storage + 119; +return dev_storage + 113; } } @@ -12033,7 +12033,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst62", 10) == 0) { { -return dev_storage + 109; +return dev_storage + 103; } } @@ -12048,7 +12048,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst52", 10) == 0) { { -return dev_storage + 99; +return dev_storage + 93; } } @@ -12063,7 +12063,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst42", 10) == 0) { { -return dev_storage + 89; +return dev_storage + 83; } } @@ -12078,7 +12078,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst32", 10) == 0) { { -return dev_storage + 79; +return dev_storage + 73; } } @@ -12093,7 +12093,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst22", 10) == 0) { { -return dev_storage + 69; +return dev_storage + 63; } } @@ -12111,7 +12111,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt12", 10) == 0) { { -return dev_storage + 518; +return dev_storage + 512; } } @@ -12126,7 +12126,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst12", 10) == 0) { { -return dev_storage + 59; +return dev_storage + 53; } } @@ -12153,7 +12153,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds12", 10) == 0) { { -return dev_storage + 503; +return dev_storage + 497; } } @@ -12168,7 +12168,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr12", 10) == 0) { { -return dev_storage + 488; +return dev_storage + 482; } } @@ -12183,7 +12183,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq12", 10) == 0) { { -return dev_storage + 473; +return dev_storage + 467; } } @@ -12198,7 +12198,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp12", 10) == 0) { { -return dev_storage + 458; +return dev_storage + 452; } } @@ -12213,7 +12213,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo12", 10) == 0) { { -return dev_storage + 443; +return dev_storage + 437; } } @@ -12228,7 +12228,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn12", 10) == 0) { { -return dev_storage + 428; +return dev_storage + 422; } } @@ -12246,7 +12246,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm12", 10) == 0) { { -return dev_storage + 413; +return dev_storage + 407; } } @@ -12282,7 +12282,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl12", 10) == 0) { { -return dev_storage + 398; +return dev_storage + 392; } } @@ -12297,7 +12297,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk12", 10) == 0) { { -return dev_storage + 383; +return dev_storage + 377; } } @@ -12312,7 +12312,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj12", 10) == 0) { { -return dev_storage + 368; +return dev_storage + 362; } } @@ -12327,7 +12327,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi12", 10) == 0) { { -return dev_storage + 353; +return dev_storage + 347; } } @@ -12342,7 +12342,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh12", 10) == 0) { { -return dev_storage + 338; +return dev_storage + 332; } } @@ -12357,7 +12357,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg12", 10) == 0) { { -return dev_storage + 323; +return dev_storage + 317; } } @@ -12372,7 +12372,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf12", 10) == 0) { { -return dev_storage + 308; +return dev_storage + 302; } } @@ -12387,7 +12387,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde12", 10) == 0) { { -return dev_storage + 293; +return dev_storage + 287; } } @@ -12405,7 +12405,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd12", 10) == 0) { { -return dev_storage + 278; +return dev_storage + 272; } } @@ -12420,7 +12420,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd12", 10) == 0) { { -return dev_storage + 192; +return dev_storage + 186; } } @@ -12441,7 +12441,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc12", 10) == 0) { { -return dev_storage + 263; +return dev_storage + 257; } } @@ -12456,7 +12456,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb12", 10) == 0) { { -return dev_storage + 248; +return dev_storage + 242; } } @@ -12471,7 +12471,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda12", 10) == 0) { { -return dev_storage + 233; +return dev_storage + 227; } } @@ -12489,7 +12489,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st122", 10) == 0) { { -return dev_storage + 750; +return dev_storage + 744; } } @@ -12504,7 +12504,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st112", 10) == 0) { { -return dev_storage + 740; +return dev_storage + 734; } } @@ -12519,7 +12519,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st102", 10) == 0) { { -return dev_storage + 730; +return dev_storage + 724; } } @@ -12549,7 +12549,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz11", 10) == 0) { { -return dev_storage + 607; +return dev_storage + 601; } } @@ -12567,7 +12567,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS1", 10) == 0) { { -return dev_storage + 822; +return dev_storage + 816; } } @@ -12582,7 +12582,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty61", 10) == 0) { { -return dev_storage + 818; +return dev_storage + 812; } } @@ -12597,7 +12597,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty51", 10) == 0) { { -return dev_storage + 808; +return dev_storage + 802; } } @@ -12612,7 +12612,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty41", 10) == 0) { { -return dev_storage + 798; +return dev_storage + 792; } } @@ -12627,7 +12627,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty31", 10) == 0) { { -return dev_storage + 788; +return dev_storage + 782; } } @@ -12642,7 +12642,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty21", 10) == 0) { { -return dev_storage + 778; +return dev_storage + 772; } } @@ -12660,7 +12660,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty11", 10) == 0) { { -return dev_storage + 768; +return dev_storage + 762; } } @@ -12675,7 +12675,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy11", 10) == 0) { { -return dev_storage + 592; +return dev_storage + 586; } } @@ -12702,7 +12702,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx11", 10) == 0) { { -return dev_storage + 577; +return dev_storage + 571; } } @@ -12717,7 +12717,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw11", 10) == 0) { { -return dev_storage + 562; +return dev_storage + 556; } } @@ -12732,7 +12732,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv11", 10) == 0) { { -return dev_storage + 547; +return dev_storage + 541; } } @@ -12747,7 +12747,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu11", 10) == 0) { { -return dev_storage + 532; +return dev_storage + 526; } } @@ -12765,7 +12765,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst91", 10) == 0) { { -return dev_storage + 138; +return dev_storage + 132; } } @@ -12780,7 +12780,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst81", 10) == 0) { { -return dev_storage + 128; +return dev_storage + 122; } } @@ -12795,7 +12795,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst71", 10) == 0) { { -return dev_storage + 118; +return dev_storage + 112; } } @@ -12810,7 +12810,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst61", 10) == 0) { { -return dev_storage + 108; +return dev_storage + 102; } } @@ -12825,7 +12825,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst51", 10) == 0) { { -return dev_storage + 98; +return dev_storage + 92; } } @@ -12840,7 +12840,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst41", 10) == 0) { { -return dev_storage + 88; +return dev_storage + 82; } } @@ -12855,7 +12855,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst31", 10) == 0) { { -return dev_storage + 78; +return dev_storage + 72; } } @@ -12870,7 +12870,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst21", 10) == 0) { { -return dev_storage + 68; +return dev_storage + 62; } } @@ -12888,7 +12888,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt11", 10) == 0) { { -return dev_storage + 517; +return dev_storage + 511; } } @@ -12903,7 +12903,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst11", 10) == 0) { { -return dev_storage + 58; +return dev_storage + 52; } } @@ -12930,7 +12930,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds11", 10) == 0) { { -return dev_storage + 502; +return dev_storage + 496; } } @@ -12945,7 +12945,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr11", 10) == 0) { { -return dev_storage + 487; +return dev_storage + 481; } } @@ -12960,7 +12960,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq11", 10) == 0) { { -return dev_storage + 472; +return dev_storage + 466; } } @@ -12975,7 +12975,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp11", 10) == 0) { { -return dev_storage + 457; +return dev_storage + 451; } } @@ -12990,7 +12990,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo11", 10) == 0) { { -return dev_storage + 442; +return dev_storage + 436; } } @@ -13005,7 +13005,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn11", 10) == 0) { { -return dev_storage + 427; +return dev_storage + 421; } } @@ -13023,7 +13023,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm11", 10) == 0) { { -return dev_storage + 412; +return dev_storage + 406; } } @@ -13059,7 +13059,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl11", 10) == 0) { { -return dev_storage + 397; +return dev_storage + 391; } } @@ -13074,7 +13074,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk11", 10) == 0) { { -return dev_storage + 382; +return dev_storage + 376; } } @@ -13089,7 +13089,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj11", 10) == 0) { { -return dev_storage + 367; +return dev_storage + 361; } } @@ -13104,7 +13104,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi11", 10) == 0) { { -return dev_storage + 352; +return dev_storage + 346; } } @@ -13119,7 +13119,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh11", 10) == 0) { { -return dev_storage + 337; +return dev_storage + 331; } } @@ -13134,7 +13134,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg11", 10) == 0) { { -return dev_storage + 322; +return dev_storage + 316; } } @@ -13149,7 +13149,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf11", 10) == 0) { { -return dev_storage + 307; +return dev_storage + 301; } } @@ -13164,7 +13164,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde11", 10) == 0) { { -return dev_storage + 292; +return dev_storage + 286; } } @@ -13182,7 +13182,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd11", 10) == 0) { { -return dev_storage + 277; +return dev_storage + 271; } } @@ -13197,7 +13197,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd11", 10) == 0) { { -return dev_storage + 191; +return dev_storage + 185; } } @@ -13218,7 +13218,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc11", 10) == 0) { { -return dev_storage + 262; +return dev_storage + 256; } } @@ -13233,7 +13233,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb11", 10) == 0) { { -return dev_storage + 247; +return dev_storage + 241; } } @@ -13248,7 +13248,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda11", 10) == 0) { { -return dev_storage + 232; +return dev_storage + 226; } } @@ -13266,7 +13266,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st121", 10) == 0) { { -return dev_storage + 749; +return dev_storage + 743; } } @@ -13281,7 +13281,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st111", 10) == 0) { { -return dev_storage + 739; +return dev_storage + 733; } } @@ -13296,7 +13296,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st101", 10) == 0) { { -return dev_storage + 729; +return dev_storage + 723; } } @@ -13326,7 +13326,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdz10", 10) == 0) { { -return dev_storage + 606; +return dev_storage + 600; } } @@ -13344,7 +13344,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS0", 10) == 0) { { -return dev_storage + 821; +return dev_storage + 815; } } @@ -13359,7 +13359,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty60", 10) == 0) { { -return dev_storage + 817; +return dev_storage + 811; } } @@ -13374,7 +13374,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty50", 10) == 0) { { -return dev_storage + 807; +return dev_storage + 801; } } @@ -13389,7 +13389,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty40", 10) == 0) { { -return dev_storage + 797; +return dev_storage + 791; } } @@ -13404,7 +13404,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty30", 10) == 0) { { -return dev_storage + 787; +return dev_storage + 781; } } @@ -13419,7 +13419,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty20", 10) == 0) { { -return dev_storage + 777; +return dev_storage + 771; } } @@ -13437,7 +13437,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/tty10", 10) == 0) { { -return dev_storage + 767; +return dev_storage + 761; } } @@ -13452,7 +13452,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdy10", 10) == 0) { { -return dev_storage + 591; +return dev_storage + 585; } } @@ -13479,7 +13479,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdx10", 10) == 0) { { -return dev_storage + 576; +return dev_storage + 570; } } @@ -13494,7 +13494,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdw10", 10) == 0) { { -return dev_storage + 561; +return dev_storage + 555; } } @@ -13509,7 +13509,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdv10", 10) == 0) { { -return dev_storage + 546; +return dev_storage + 540; } } @@ -13524,7 +13524,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdu10", 10) == 0) { { -return dev_storage + 531; +return dev_storage + 525; } } @@ -13542,7 +13542,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst90", 10) == 0) { { -return dev_storage + 137; +return dev_storage + 131; } } @@ -13557,7 +13557,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst80", 10) == 0) { { -return dev_storage + 127; +return dev_storage + 121; } } @@ -13572,7 +13572,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst70", 10) == 0) { { -return dev_storage + 117; +return dev_storage + 111; } } @@ -13587,7 +13587,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst60", 10) == 0) { { -return dev_storage + 107; +return dev_storage + 101; } } @@ -13602,7 +13602,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst50", 10) == 0) { { -return dev_storage + 97; +return dev_storage + 91; } } @@ -13617,7 +13617,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst40", 10) == 0) { { -return dev_storage + 87; +return dev_storage + 81; } } @@ -13632,7 +13632,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst30", 10) == 0) { { -return dev_storage + 77; +return dev_storage + 71; } } @@ -13647,7 +13647,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst20", 10) == 0) { { -return dev_storage + 67; +return dev_storage + 61; } } @@ -13665,7 +13665,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdt10", 10) == 0) { { -return dev_storage + 516; +return dev_storage + 510; } } @@ -13680,7 +13680,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst10", 10) == 0) { { -return dev_storage + 57; +return dev_storage + 51; } } @@ -13707,7 +13707,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sds10", 10) == 0) { { -return dev_storage + 501; +return dev_storage + 495; } } @@ -13722,7 +13722,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdr10", 10) == 0) { { -return dev_storage + 486; +return dev_storage + 480; } } @@ -13737,7 +13737,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdq10", 10) == 0) { { -return dev_storage + 471; +return dev_storage + 465; } } @@ -13752,7 +13752,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdp10", 10) == 0) { { -return dev_storage + 456; +return dev_storage + 450; } } @@ -13767,7 +13767,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdo10", 10) == 0) { { -return dev_storage + 441; +return dev_storage + 435; } } @@ -13782,7 +13782,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdn10", 10) == 0) { { -return dev_storage + 426; +return dev_storage + 420; } } @@ -13800,7 +13800,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdm10", 10) == 0) { { -return dev_storage + 411; +return dev_storage + 405; } } @@ -13836,7 +13836,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdl10", 10) == 0) { { -return dev_storage + 396; +return dev_storage + 390; } } @@ -13851,7 +13851,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdk10", 10) == 0) { { -return dev_storage + 381; +return dev_storage + 375; } } @@ -13866,7 +13866,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdj10", 10) == 0) { { -return dev_storage + 366; +return dev_storage + 360; } } @@ -13881,7 +13881,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdi10", 10) == 0) { { -return dev_storage + 351; +return dev_storage + 345; } } @@ -13896,7 +13896,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdh10", 10) == 0) { { -return dev_storage + 336; +return dev_storage + 330; } } @@ -13911,7 +13911,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdg10", 10) == 0) { { -return dev_storage + 321; +return dev_storage + 315; } } @@ -13926,7 +13926,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdf10", 10) == 0) { { -return dev_storage + 306; +return dev_storage + 300; } } @@ -13941,7 +13941,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sde10", 10) == 0) { { -return dev_storage + 291; +return dev_storage + 285; } } @@ -13959,7 +13959,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdd10", 10) == 0) { { -return dev_storage + 276; +return dev_storage + 270; } } @@ -13974,7 +13974,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/scd10", 10) == 0) { { -return dev_storage + 190; +return dev_storage + 184; } } @@ -13995,7 +13995,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdc10", 10) == 0) { { -return dev_storage + 261; +return dev_storage + 255; } } @@ -14010,7 +14010,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sdb10", 10) == 0) { { -return dev_storage + 246; +return dev_storage + 240; } } @@ -14025,7 +14025,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/sda10", 10) == 0) { { -return dev_storage + 231; +return dev_storage + 225; } } @@ -14043,7 +14043,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st120", 10) == 0) { { -return dev_storage + 748; +return dev_storage + 742; } } @@ -14058,7 +14058,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st110", 10) == 0) { { -return dev_storage + 738; +return dev_storage + 732; } } @@ -14073,7 +14073,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/st100", 10) == 0) { { -return dev_storage + 728; +return dev_storage + 722; } } @@ -14124,7 +14124,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/random", 11) == 0) { { -return dev_storage + 179; +return dev_storage + 173; } } @@ -14142,7 +14142,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst127", 11) == 0) { { -return dev_storage + 174; +return dev_storage + 168; } } @@ -14157,7 +14157,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst126", 11) == 0) { { -return dev_storage + 173; +return dev_storage + 167; } } @@ -14172,7 +14172,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst125", 11) == 0) { { -return dev_storage + 172; +return dev_storage + 166; } } @@ -14187,7 +14187,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst124", 11) == 0) { { -return dev_storage + 171; +return dev_storage + 165; } } @@ -14202,7 +14202,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst123", 11) == 0) { { -return dev_storage + 170; +return dev_storage + 164; } } @@ -14217,7 +14217,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst122", 11) == 0) { { -return dev_storage + 169; +return dev_storage + 163; } } @@ -14232,7 +14232,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst121", 11) == 0) { { -return dev_storage + 168; +return dev_storage + 162; } } @@ -14247,7 +14247,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst120", 11) == 0) { { -return dev_storage + 167; +return dev_storage + 161; } } @@ -14271,7 +14271,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst119", 11) == 0) { { -return dev_storage + 166; +return dev_storage + 160; } } @@ -14286,7 +14286,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst118", 11) == 0) { { -return dev_storage + 165; +return dev_storage + 159; } } @@ -14301,7 +14301,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst117", 11) == 0) { { -return dev_storage + 164; +return dev_storage + 158; } } @@ -14316,7 +14316,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst116", 11) == 0) { { -return dev_storage + 163; +return dev_storage + 157; } } @@ -14334,7 +14334,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS15", 11) == 0) { { -return dev_storage + 836; +return dev_storage + 830; } } @@ -14349,7 +14349,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst115", 11) == 0) { { -return dev_storage + 162; +return dev_storage + 156; } } @@ -14373,7 +14373,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS14", 11) == 0) { { -return dev_storage + 835; +return dev_storage + 829; } } @@ -14388,7 +14388,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst114", 11) == 0) { { -return dev_storage + 161; +return dev_storage + 155; } } @@ -14412,7 +14412,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS13", 11) == 0) { { -return dev_storage + 834; +return dev_storage + 828; } } @@ -14427,7 +14427,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst113", 11) == 0) { { -return dev_storage + 160; +return dev_storage + 154; } } @@ -14451,7 +14451,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS12", 11) == 0) { { -return dev_storage + 833; +return dev_storage + 827; } } @@ -14466,7 +14466,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst112", 11) == 0) { { -return dev_storage + 159; +return dev_storage + 153; } } @@ -14490,7 +14490,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS11", 11) == 0) { { -return dev_storage + 832; +return dev_storage + 826; } } @@ -14505,7 +14505,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst111", 11) == 0) { { -return dev_storage + 158; +return dev_storage + 152; } } @@ -14529,7 +14529,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/ttyS10", 11) == 0) { { -return dev_storage + 831; +return dev_storage + 825; } } @@ -14544,7 +14544,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst110", 11) == 0) { { -return dev_storage + 157; +return dev_storage + 151; } } @@ -14574,7 +14574,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst109", 11) == 0) { { -return dev_storage + 156; +return dev_storage + 150; } } @@ -14589,7 +14589,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst108", 11) == 0) { { -return dev_storage + 155; +return dev_storage + 149; } } @@ -14604,7 +14604,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst107", 11) == 0) { { -return dev_storage + 154; +return dev_storage + 148; } } @@ -14619,7 +14619,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst106", 11) == 0) { { -return dev_storage + 153; +return dev_storage + 147; } } @@ -14634,7 +14634,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst105", 11) == 0) { { -return dev_storage + 152; +return dev_storage + 146; } } @@ -14649,7 +14649,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst104", 11) == 0) { { -return dev_storage + 151; +return dev_storage + 145; } } @@ -14664,7 +14664,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst103", 11) == 0) { { -return dev_storage + 150; +return dev_storage + 144; } } @@ -14679,7 +14679,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst102", 11) == 0) { { -return dev_storage + 149; +return dev_storage + 143; } } @@ -14694,7 +14694,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst101", 11) == 0) { { -return dev_storage + 148; +return dev_storage + 142; } } @@ -14709,7 +14709,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/nst100", 11) == 0) { { -return dev_storage + 147; +return dev_storage + 141; } } @@ -14739,7 +14739,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/windows", 12) == 0) { { -return dev_storage + 839; +return dev_storage + 833; } } @@ -14754,7 +14754,7 @@ return NULL; if (strncmp (KR_keyword, "/dev/urandom", 12) == 0) { { -return dev_storage + 838; +return dev_storage + 832; } } @@ -14784,66 +14784,9 @@ return NULL; { return NULL; -} - } - case 13: - switch (KR_keyword [10]) - { - case 'u': - if (strncmp (KR_keyword, "/dev/inet/udp", 13) == 0) - { -{ -return dev_storage + 43; - -} - } - else - { -{ -return NULL; - -} - } - case 't': - if (strncmp (KR_keyword, "/dev/inet/tcp", 13) == 0) - { -{ -return dev_storage + 42; - -} - } - else - { -{ -return NULL; - -} - } - default: -{ -return NULL; - } } case 14: - switch (KR_keyword [10]) - { - case 'u': - if (strncmp (KR_keyword, "/dev/inet/unix", 14) == 0) - { -{ -return dev_storage + 44; - -} - } - else - { -{ -return NULL; - -} - } - case 'o': if (strncmp (KR_keyword, "/dev/clipboard", 14) == 0) { { @@ -14856,57 +14799,6 @@ return dev_storage + 0; { return NULL; -} - } - case 'i': - if (strncmp (KR_keyword, "/dev/inet/icmp", 14) == 0) - { -{ -return dev_storage + 40; - -} - } - else - { -{ -return NULL; - -} - } - default: -{ -return NULL; - -} - } - case 15: - if (strncmp (KR_keyword, "/dev/inet/dgram", 15) == 0) - { -{ -return dev_storage + 39; - -} - } - else - { -{ -return NULL; - -} - } - case 16: - if (strncmp (KR_keyword, "/dev/inet/stream", 16) == 0) - { -{ -return dev_storage + 41; - -} - } - else - { -{ -return NULL; - } } default: diff --git a/winsup/cygwin/devices.h b/winsup/cygwin/devices.h index 9b1a82669..137fcd8b0 100644 --- a/winsup/cygwin/devices.h +++ b/winsup/cygwin/devices.h @@ -148,16 +148,19 @@ struct device }; extern const device *console_dev; -extern const device *dgram_dev; -extern const device *icmp_dev; -extern const device *stream_dev; -extern const device *tcp_dev; extern const device *ttym_dev; extern const device *ttys_dev; -extern const device *udp_dev; -extern const device *unix_dev; extern const device *urandom_dev; +extern const device dev_dgram_storage; +#define dgram_dev (&dev_dgram_storage) +extern const device dev_stream_storage; +#define stream_dev (&dev_stream_storage) +extern const device dev_tcp_storage; +#define tcp_dev (&dev_tcp_storage) +extern const device dev_udp_storage; +#define udp_dev (&dev_udp_storage) + extern const device dev_piper_storage; #define piper_dev (&dev_piper_storage) extern const device dev_pipew_storage; diff --git a/winsup/cygwin/devices.in b/winsup/cygwin/devices.in index 44deacb02..95ac5f303 100644 --- a/winsup/cygwin/devices.in +++ b/winsup/cygwin/devices.in @@ -30,18 +30,24 @@ const device dev_piper_storage = const device dev_pipew_storage = {"", FH_PIPEW, ""}; +const device dev_tcp_storage = + {"", FH_TCP, ""}; + +const device dev_udp_storage = + {"", FH_UDP, ""}; + +const device dev_stream_storage = + {"", FH_STREAM, ""}; + +const device dev_dgram_storage = + {"", FH_DGRAM, ""}; + const device dev_bad_storage = - {":bad:", FH_BAD, ""}; + {"", FH_BAD, ""}; %storage_here } %% -"/dev/inet/tcp", FH_TCP, "", tcp_dev -"/dev/inet/udp", FH_UDP, "", udp_dev -"/dev/inet/icmp", FH_ICMP, "", icmp_dev -"/dev/inet/unix", FH_UNIX, "", unix_dev -"/dev/inet/stream", FH_STREAM, "", stream_dev -"/dev/inet/dgram", FH_DGRAM, "", dgram_dev "/dev/tty", FH_TTY, "\\dev\\tty" "/dev/tty%(0-63)d", FHDEV(DEV_TTYS_MAJOR, {$1}), "\\dev\\tty{$1}", ttys_dev "/dev/console", FH_CONSOLE, "\\dev\\console", console_dev diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 4baa50594..a15e76132 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -12,19 +12,20 @@ details. */ #include #include #include -#include -#include +#include #include "exceptions.h" #include "sync.h" -#include "sigproc.h" #include "pinfo.h" +#include "cygtls.h" +#include "sigproc.h" #include "cygerrno.h" #define NEED_VFORK #include "perthread.h" #include "shared_info.h" #include "perprocess.h" #include "security.h" +#include "cygthread.h" #define CALL_HANDLER_RETRY 20 @@ -32,13 +33,13 @@ char debugger_command[2 * CYG_MAX_PATH + 20]; extern "C" { static int handle_exceptions (EXCEPTION_RECORD *, void *, CONTEXT *, void *); -extern void sigreturn (); extern void sigdelayed (); -extern void sigdelayed0 (); -extern void siglast (); -extern DWORD __no_sig_start, __no_sig_end; }; +_threadinfo NO_COPY dummy_thread; +_threadinfo NO_COPY *_last_thread = &dummy_thread; +extern _threadinfo *_main_tls; + extern DWORD sigtid; extern HANDLE hExeced; @@ -54,8 +55,6 @@ static size_t windows_system_directory_length; static NO_COPY int exit_already = 0; static NO_COPY muto *mask_sync = NULL; -HMODULE NO_COPY cygwin_hmodule; - NO_COPY static struct { unsigned int code; @@ -97,8 +96,6 @@ NO_COPY static struct /* Initialization code. */ -#ifdef __i386__ - // Set up the exception handler for the current thread. The PowerPC & Mips // use compiler generated tables to set up the exception handlers for each // region of code, and the kernel walks the call list until it finds a region @@ -116,7 +113,6 @@ init_exception_handler (exception_list *el) el->prev = _except_list; _except_list = el; } -#endif void init_console_handler () @@ -132,6 +128,74 @@ init_exceptions (exception_list *el) init_exception_handler (el); } +void +_threadinfo::set_state (bool is_exception) +{ + initialized = CYGTLS_INITIALIZED + is_exception; +} + +void +_threadinfo::reset_exception () +{ + if (initialized == CYGTLS_EXCEPTION) + { +#ifdef DEBUGGING + debug_printf ("resetting stack after an exception stack %p, stackptr %p", stack, stackptr); +#endif + set_state (false); + stackptr--; + } +} + +_threadinfo * +_threadinfo::init (void *, void *thread) +{ + memset (this, 0, sizeof (*this)); + stackptr = stack; + prev = _last_thread; + _last_thread->next = this; + _last_thread = this; + set_state (false); + errno_addr = &errno; + return this; +} + +void +_threadinfo::remove () +{ + _threadinfo *t; + for (t = _last_thread; t && t != this; t = t->prev) + continue; + if (!t) + return; + t->prev->next = t->next; + if (t->next) + t->next->prev = t->prev; + if (t == _last_thread) + _last_thread = t->prev; +} + +void +_threadinfo::push (__stack_t addr, bool exception) +{ + *stackptr++ = (__stack_t) addr; + set_state (exception); +} + +__stack_t +_threadinfo::pop () +{ +#ifdef DEBUGGING + assert (stackptr > stack); +#endif + __stack_t res = *--stackptr; +#ifndef DEBUGGING + _my_tls.stackptr = 0; + debug_printf ("popped %p, stack %p, stackptr %p", res, stack, stackptr); +#endif + return res; +} + extern "C" void error_start_init (const char *buf) { @@ -241,7 +305,6 @@ public: /* This is the main stack frame info for this process. */ static NO_COPY stack_info thestack; -static signal_dispatch sigsave; /* Initialize everything needed to start iterating. */ void @@ -392,22 +455,19 @@ try_to_debug (bool waitloop) Sleep (0); Sleep (2000); small_printf ("*** continuing from debugger call\n"); - SetThreadPriority (GetCurrentThread (), prio); } - /* FIXME: need to know handles of all running threads to - resume_all_threads_except (current_thread_id); - */ + SetThreadPriority (GetCurrentThread (), prio); return 0; } /* Main exception handler. */ +extern "C" DWORD __stdcall RtlUnwind (void *, void *, void *, DWORD); static int -handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) +handle_exceptions (EXCEPTION_RECORD *e0, void *frame, CONTEXT *in0, void *) { - int sig; - static int NO_COPY debugging = 0; + static bool NO_COPY debugging = false; static int NO_COPY recursed = 0; if (debugging && ++debugging < 500000) @@ -421,8 +481,16 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) if (exit_already) return 1; + EXCEPTION_RECORD e = *e0; + CONTEXT in = *in0; + + extern DWORD ret_here[]; + RtlUnwind (frame, ret_here, e0, 0); + __asm__ volatile (".equ _ret_here,."); + + int sig; /* Coerce win32 value to posix value. */ - switch (e->ExceptionCode) + switch (e.ExceptionCode) { case STATUS_FLOAT_DENORMAL_OPERAND: case STATUS_FLOAT_DIVIDE_BY_ZERO: @@ -476,8 +544,8 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) return 1; } - debug_printf ("In cygwin_except_handler exc %p at %p sp %p", e->ExceptionCode, in->Eip, in->Esp); - debug_printf ("In cygwin_except_handler sig = %d at %p", sig, in->Eip); + debug_printf ("In cygwin_except_handler exc %p at %p sp %p", e.ExceptionCode, in.Eip, in.Esp); + debug_printf ("In cygwin_except_handler sig = %d at %p", sig, in.Eip); if (myself->getsig (sig).sa_mask & SIGTOMASK (sig)) syscall_printf ("signal %d, masked %p", sig, myself->getsig (sig).sa_mask); @@ -485,9 +553,9 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) debug_printf ("In cygwin_except_handler calling %p", myself->getsig (sig).sa_handler); - DWORD *ebp = (DWORD *)in->Esp; + DWORD *ebp = (DWORD *)in.Esp; for (DWORD *bpend = (DWORD *) __builtin_frame_address (0); ebp > bpend; ebp--) - if (*ebp == in->SegCs && ebp[-1] == in->Eip) + if (*ebp == in.SegCs && ebp[-1] == in.Eip) { ebp -= 2; break; @@ -500,11 +568,11 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) || (void *) myself->getsig (sig).sa_handler == (void *) SIG_ERR) { /* Print the exception to the console */ - if (e) + if (1) { for (int i = 0; status_info[i].name; i++) { - if (status_info[i].code == e->ExceptionCode) + if (status_info[i].code == e.ExceptionCode) { if (!myself->ppid_handle) system_printf ("Exception: %s", status_info[i].name); @@ -521,20 +589,21 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) { if (try_to_debug (0)) { - debugging = 1; + debugging = true; return 0; } open_stackdumpfile (); - exception (e, in); + exception (&e, &in); stackdump ((DWORD) ebp, 0, 1); } signal_exit (0x80 | sig); // Flag signal + core dump } - sig_send (NULL, sig, (DWORD) ebp, 1); // Signal myself - return 0; + _my_tls.push ((__stack_t) ebp, true); + sig_send (NULL, sig, &_my_tls); // Signal myself + return 1; } #endif /* __i386__ */ @@ -564,10 +633,9 @@ int __stdcall handle_sigsuspend (sigset_t tempmask) { sig_dispatch_pending (); - sigframe thisframe (mainthread); sigset_t oldmask = myself->getsigmask (); // Remember for restoration - set_process_mask (tempmask & ~SIG_NONMASKABLE);// Let signals we're + set_signal_mask (tempmask & ~SIG_NONMASKABLE);// Let signals we're // interested in through. sigproc_printf ("old mask %x, new mask %x", oldmask, tempmask); @@ -580,7 +648,7 @@ handle_sigsuspend (sigset_t tempmask) be hit eventually. Set the old mask to be restored when the signal handler returns. */ - sigsave.oldmask = oldmask; // Will be restored by signal handler + _my_tls.oldmask = oldmask; // Will be restored by signal handler return -1; } @@ -617,7 +685,7 @@ sig_handle_tty_stop (int sig) } int -interruptible (DWORD pc, int testvalid = 0) +interruptible (DWORD pc) { int res; MEMORY_BASIC_INFORMATION m; @@ -635,75 +703,47 @@ interruptible (DWORD pc, int testvalid = 0) These should *never* be treated as interruptible. */ if (!h || m.State != MEM_COMMIT) res = 0; - else if (testvalid) - res = 1; /* All we wanted to know was if this was a valid module. */ else if (h == user_data->hmodule) res = 1; - else if (h == cygwin_hmodule) - res = 0; else if (!GetModuleFileName (h, checkdir, windows_system_directory_length + 2)) res = 0; else res = !strncasematch (windows_system_directory, checkdir, windows_system_directory_length); - sigproc_printf ("pc %p, h %p, interruptible %d, testvalid %d", pc, h, res, testvalid); + sigproc_printf ("pc %p, h %p, interruptible %d", pc, h, res); # undef h return res; } - -bool -sigthread::get_winapi_lock (int test) +void __stdcall +_threadinfo::interrupt_setup (int sig, void *handler, + struct sigaction& siga, __stack_t retaddr) { - if (test) - return !InterlockedExchange (&winapi_lock, 1); - - /* Need to do a busy loop because we can't block or a potential SuspendThread - will hang. */ - while (InterlockedExchange (&winapi_lock, 1)) - low_priority_sleep (0); - return 1; -} - -void -sigthread::release_winapi_lock () -{ - /* Assumes that we have the lock. */ - InterlockedExchange (&winapi_lock, 0); -} - -static void __stdcall interrupt_setup (int sig, void *handler, DWORD retaddr, - DWORD *retaddr_on_stack, - struct sigaction& siga) - __attribute__((regparm(3))); -static void __stdcall -interrupt_setup (int sig, void *handler, DWORD retaddr, DWORD *retaddr_on_stack, - struct sigaction& siga) -{ - sigsave.retaddr = retaddr; - sigsave.retaddr_on_stack = retaddr_on_stack; - /* FIXME: Not multi-thread aware */ - sigsave.oldmask = myself->getsigmask (); - sigsave.newmask = sigsave.oldmask | siga.sa_mask | SIGTOMASK (sig); - sigsave.sa_flags = siga.sa_flags; - sigsave.func = (void (*)(int)) handler; - sigsave.saved_errno = -1; // Flag: no errno to save + __stack_t *retaddr_in_tls = stackptr - 1; + push ((__stack_t) sigdelayed); + oldmask = myself->getsigmask (); + newmask = oldmask | siga.sa_mask | SIGTOMASK (sig); + sa_flags = siga.sa_flags; + func = (void (*) (int)) handler; + saved_errno = -1; // Flag: no errno to save if (handler == sig_handle_tty_stop) { myself->stopsig = 0; myself->process_state |= PID_STOPPED; } + this->sig = sig; // Should ALWAYS be second to last setting set to avoid a race + *retaddr_in_tls = retaddr; /* Clear any waiting threads prior to dispatching to handler function */ - proc_subproc (PROC_CLEARWAIT, 1); int res = SetEvent (signal_arrived); // For an EINTR case - sigsave.sig = sig; // Should ALWAYS be last thing set to avoid a race + proc_subproc (PROC_CLEARWAIT, 1); sigproc_printf ("armed signal_arrived %p, res %d", signal_arrived, res); } -static bool interrupt_now (CONTEXT *, int, void *, struct sigaction&) __attribute__((regparm(3))); -static bool -interrupt_now (CONTEXT *ctx, int sig, void *handler, struct sigaction& siga) +bool +_threadinfo::interrupt_now (CONTEXT *ctx, int sig, void *handler, + struct sigaction& siga) { - interrupt_setup (sig, handler, ctx->Eip, 0, siga); + push (0); + interrupt_setup (sig, handler, siga, (__stack_t) ctx->Eip); ctx->Eip = (DWORD) sigdelayed; SetThreadContext (myself->getthread2signal (), ctx); /* Restart the thread in a new location */ return 1; @@ -712,167 +752,112 @@ interrupt_now (CONTEXT *ctx, int sig, void *handler, struct sigaction& siga) void __stdcall signal_fixup_after_fork () { - if (sigsave.sig) + if (_my_tls.sig) { - sigsave.sig = 0; - if (sigsave.retaddr_on_stack) - { - *sigsave.retaddr_on_stack = sigsave.retaddr; - set_process_mask (sigsave.oldmask); - } + _my_tls.sig = 0; + _my_tls.stackptr = _my_tls.stack + 1; // FIXME? + set_signal_mask (_my_tls.oldmask); } sigproc_init (); } -static int interrupt_on_return (sigthread *, int, void *, struct sigaction&) __attribute__((regparm(3))); -static int -interrupt_on_return (sigthread *th, int sig, void *handler, struct sigaction& siga) -{ - int i; - DWORD ebp = th->frame; - - if (!ebp) - return 0; - - thestack.init (ebp, 0, 1); /* Initialize from the input CONTEXT */ - for (i = 0; i < 32 && thestack++ ; i++) - if (th->exception || interruptible (thestack.sf.AddrReturn.Offset)) - { - DWORD *addr_retaddr = ((DWORD *)thestack.sf.AddrFrame.Offset) + 1; - if (*addr_retaddr == thestack.sf.AddrReturn.Offset) - { - interrupt_setup (sig, handler, *addr_retaddr, addr_retaddr, siga); - *addr_retaddr = (DWORD) sigdelayed; - } - return 1; - } - - sigproc_printf ("couldn't find a stack frame, i %d", i); - return 0; -} - extern "C" void __stdcall set_sig_errno (int e) { set_errno (e); - sigsave.saved_errno = e; + _my_tls.saved_errno = e; // sigproc_printf ("errno %d", e); } -static int setup_handler (int, void *, struct sigaction&) __attribute__((regparm(3))); +static int setup_handler (int, void *, struct sigaction&, _threadinfo *tls) + __attribute__((regparm(3))); static int -setup_handler (int sig, void *handler, struct sigaction& siga) +setup_handler (int sig, void *handler, struct sigaction& siga, _threadinfo *tls) { CONTEXT cx; bool interrupted = false; - sigthread *th = NULL; // Initialization needed to shut up gcc - if (sigsave.sig) + if (tls->sig) goto out; for (int i = 0; i < CALL_HANDLER_RETRY; i++) { - DWORD res; - HANDLE hth; - - EnterCriticalSection (&mainthread.lock); - if (mainthread.frame) + __stack_t retaddr; + __stack_t *retaddr_on_stack = tls->stackptr - 1; +#ifdef DEBUGGING + if (tls->stackptr > (tls->stack + 1)) + try_to_debug (); +#endif + if (retaddr_on_stack >= tls->stack + && (retaddr = InterlockedExchange ((LONG *) retaddr_on_stack, 0))) { - hth = NULL; - th = &mainthread; - } - else - { - LeaveCriticalSection (&mainthread.lock); - - if (!mainthread.get_winapi_lock (1)) + if (!retaddr) continue; + tls->reset_exception (); + tls->interrupt_setup (sig, handler, siga, retaddr); + sigproc_printf ("interrupted known cygwin routine"); + interrupted = true; + break; + } - hth = myself->getthread2signal (); - th = NULL; + DWORD res; + HANDLE hth = myself->getthread2signal (); - /* Suspend the thread which will receive the signal. But first ensure that - this thread doesn't have any mutos. (FIXME: Someday we should just grab - all of the mutos rather than checking for them) - For Windows 95, we also have to ensure that the addresses returned by GetThreadContext - are valid. - If one of these conditions is not true we loop for a fixed number of times - since we don't want to stall the signal handler. FIXME: Will this result in - noticeable delays? - If the thread is already suspended (which can occur when a program has called - SuspendThread on itself then just queue the signal. */ + /* Suspend the thread which will receive the signal. But first ensure that + this thread doesn't have any mutos. (FIXME: Someday we should just grab + all of the mutos rather than checking for them) + For Windows 95, we also have to ensure that the addresses returned by GetThreadContext + are valid. + If one of these conditions is not true we loop for a fixed number of times + since we don't want to stall the signal handler. FIXME: Will this result in + noticeable delays? + If the thread is already suspended (which can occur when a program has called + SuspendThread on itself then just queue the signal. */ - EnterCriticalSection (&mainthread.lock); #ifndef DEBUGGING - sigproc_printf ("suspending mainthread"); + sigproc_printf ("suspending mainthread"); #else - cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; - if (!GetThreadContext (hth, &cx)) - memset (&cx, 0, sizeof cx); -#if 0 - if ((cx.Eip & 0xff000000) == 0x77000000) - try_to_debug (); + cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; + if (!GetThreadContext (hth, &cx)) + memset (&cx, 0, sizeof cx); + sigproc_printf ("suspending mainthread PC %p", cx.Eip); #endif - sigproc_printf ("suspending mainthread PC %p", cx.Eip); -#endif - res = SuspendThread (hth); - /* Just release the lock now since we hav suspended the main thread and it - definitely can't be grabbing it now. This will have to change, of course, - if/when we can send signals to other than the main thread. */ - LeaveCriticalSection (&mainthread.lock); + res = SuspendThread (hth); + /* Just release the lock now since we hav suspended the main thread and it + definitely can't be grabbing it now. This will have to change, of course, + if/when we can send signals to other than the main thread. */ - /* Just set pending if thread is already suspended */ - if (res) - { - mainthread.release_winapi_lock (); - (void) ResumeThread (hth); - break; - } - - mainthread.release_winapi_lock (); - if (mainthread.frame) - goto resume_thread; /* We just got the frame. What are the odds? - Just loop and we'll hopefully pick it up on - the next pass through. */ - - muto *m; - /* FIXME: Make multi-thread aware */ - for (m = muto_start.next; m != NULL; m = m->next) - if (m->unstable () || m->owner () == mainthread.id) - { - sigproc_printf ("suspended thread owns a muto (%s)", m->name); - goto resume_thread; - } - - if (mainthread.frame) - th = &mainthread; - else - { - cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; - if (!GetThreadContext (hth, &cx)) - { - system_printf ("couldn't get context of main thread, %E"); - goto resume_thread; - } - } - } - - if (th) + /* Just set pending if thread is already suspended */ + if (res) { - interrupted = interrupt_on_return (th, sig, handler, siga); - LeaveCriticalSection (&th->lock); + (void) ResumeThread (hth); + break; } + + // FIXME - add check for reentering of DLL here + + muto *m; + /* FIXME: Make multi-thread aware */ + for (m = muto_start.next; m != NULL; m = m->next) + if (m->unstable () || m->owner () == cygthread::main_thread_id) + { + sigproc_printf ("suspended thread owns a muto (%s)", m->name); + goto resume_thread; + } + + cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; + if (!GetThreadContext (hth, &cx)) + system_printf ("couldn't get context of main thread, %E"); else if (interruptible (cx.Eip)) - interrupted = interrupt_now (&cx, sig, handler, siga); + interrupted = tls->interrupt_now (&cx, sig, handler, siga); resume_thread: - if (hth) - res = ResumeThread (hth); + res = ResumeThread (hth); if (interrupted) break; - sigproc_printf ("couldn't interrupt. trying again."); + low_priority_sleep (0); } out: @@ -921,7 +906,7 @@ ctrl_c_handler (DWORD type) window station, one which actually represents a visible desktop. If not, the CTRL_LOGOFF_EVENT doesn't concern this process. */ if (has_visible_window_station ()) - sig_send (NULL, SIGHUP); + sig_send (myself_nowait, SIGHUP); return FALSE; } } @@ -954,14 +939,19 @@ ctrl_c_handler (DWORD type) return TRUE; } -/* Set the signal mask for this process. - Note that some signals are unmaskable, as in UNIX. */ +/* Function used by low level sig wrappers. */ extern "C" void __stdcall set_process_mask (sigset_t newmask) { - sigframe thisframe (mainthread); + set_signal_mask (newmask); +} + +/* Set the signal mask for this process. + Note that some signals are unmaskable, as in UNIX. */ +extern "C" void __stdcall +set_signal_mask (sigset_t newmask, sigset_t& oldmask) +{ mask_sync->acquire (INFINITE); - sigset_t oldmask = myself->getsigmask (); newmask &= ~SIG_NONMASKABLE; sigproc_printf ("old mask = %x, new mask = %x", myself->getsigmask (), newmask); myself->setsigmask (newmask); // Set a new mask @@ -969,13 +959,21 @@ set_process_mask (sigset_t newmask) if (oldmask & ~newmask) sig_dispatch_pending (); else - sigproc_printf ("not calling sig_dispatch_pending. sigtid %p current %p", - sigtid, GetCurrentThreadId ()); + sigproc_printf ("not calling sig_dispatch_pending"); return; } +_threadinfo * +find_tls (int sig) +{ + for (_threadinfo *t = _last_thread; t ; t = t->prev) + if (sigismember (&t->sigwait_mask, sig)) + return t; + return NULL; +} + int __stdcall -sig_handle (int sig, sigset_t mask) +sig_handle (int sig, sigset_t mask, int pid, _threadinfo *tls) { if (sig == SIGCONT) { @@ -991,26 +989,33 @@ sig_handle (int sig, sigset_t mask) SetEvent (sigCONT); } + int rc = 1; + bool insigwait_mask = tls ? sigismember (&tls->sigwait_mask, sig) : false; if (sig != SIGKILL && sig != SIGSTOP - && (sigismember (&mask, sig) || main_vfork->pid + && (sigismember (&mask, sig) + || (tls + && (insigwait_mask || sigismember (&tls->sigmask, sig))) + || main_vfork->pid || ISSTATE (myself, PID_STOPPED))) { sigproc_printf ("signal %d blocked", sig); - return -1; + if (insigwait_mask || (tls = find_tls (sig)) != NULL) + goto thread_specific; + rc = -1; + goto done; } - int rc = 1; - - sigproc_printf ("signal %d processing", sig); - struct sigaction thissig = myself->getsig (sig); - void *handler = (void *) thissig.sa_handler; - - myself->rusage_self.ru_nsignals++; - /* Clear pending SIGCONT on stop signals */ if (sig == SIGSTOP || sig == SIGTSTP || sig == SIGTTIN || sig == SIGTTOU) sig_clear (SIGCONT); + sigproc_printf ("signal %d processing", sig); + struct sigaction thissig = myself->getsig (sig); + void *handler; + handler = (void *) thissig.sa_handler; + + myself->rusage_self.ru_nsignals++; + if (sig == SIGKILL) goto exit_sig; @@ -1025,6 +1030,8 @@ sig_handle (int sig, sigset_t mask) if (handler == (void *) SIG_DFL) { + if (insigwait_mask) + goto thread_specific; if (sig == SIGCHLD || sig == SIGIO || sig == SIGCONT || sig == SIGWINCH || sig == SIGURG) { @@ -1059,12 +1066,18 @@ stop: dosig: /* Dispatch to the appropriate function. */ sigproc_printf ("signal %d, about to call %p", sig, handler); - rc = setup_handler (sig, handler, thissig); + rc = setup_handler (sig, handler, thissig, tls ?: _main_tls); done: sigproc_printf ("returning %d", rc); return rc; +thread_specific: + tls->sig = sig; + sigproc_printf ("releasing sigwait for thread"); + SetEvent (tls->event); + goto done; + exit_sig: if (sig == SIGQUIT || sig == SIGABRT) { @@ -1102,7 +1115,7 @@ signal_exit (int rc) /* Unlock any main thread mutos since we're executing with prejudice. */ muto *m; for (m = muto_start.next; m != NULL; m = m->next) - if (m->unstable () || m->owner () == mainthread.id) + if (m->unstable () || m->owner () == cygthread::main_thread_id) m->reset (); user_data->resourcelocks->Delete (); @@ -1149,7 +1162,6 @@ events_init (void) windows_system_directory_length = end - windows_system_directory; debug_printf ("windows_system_directory '%s', windows_system_directory_length %d", windows_system_directory, windows_system_directory_length); - debug_printf ("cygwin_hmodule %p", cygwin_hmodule); InitializeCriticalSection (&exit_lock); } @@ -1160,114 +1172,39 @@ events_terminate (void) } extern "C" { -static int __stdcall +int __stdcall call_signal_handler_now () { - if (!sigsave.sig) + int sa_flags = 0; + while (_my_tls.sig && _my_tls.stackptr > _my_tls.stack) { - sigproc_printf ("call_signal_handler_now called when no signal active"); - return 0; + sa_flags = _my_tls.sa_flags; + int sig = _my_tls.sig; + void (*sigfunc) (int) = _my_tls.func; + (void) _my_tls.pop (); +#ifdef DEBUGGING + if (_my_tls.stackptr > (_my_tls.stack + 1)) + try_to_debug (); +#endif + reset_signal_arrived (); + sigset_t oldmask = _my_tls.oldmask; + int this_errno = _my_tls.saved_errno; + set_process_mask (_my_tls.newmask); + _my_tls.sig = 0; + sigfunc (sig); + set_process_mask (oldmask); + if (this_errno >= 0) + set_errno (this_errno); } - int sa_flags = sigsave.sa_flags; - sigproc_printf ("sa_flags %p", sa_flags); - *sigsave.retaddr_on_stack = sigsave.retaddr; - sigdelayed0 (); return sa_flags & SA_RESTART; } -/* This kludge seems to keep a copy of call_signal_handler_now around - even when compiling with -finline-functions. */ -static int __stdcall call_signal_handler_now_dummy () - __attribute__((alias ("call_signal_handler_now"))); -}; - -int -sigframe::call_signal_handler () -{ - return unregister () ? call_signal_handler_now () : 0; -} #define pid_offset (unsigned)(((_pinfo *)NULL)->pid) -extern "C" { void __stdcall reset_signal_arrived () { (void) ResetEvent (signal_arrived); sigproc_printf ("reset signal_arrived"); } - -#undef errno -#define errno ((DWORD volatile) _impure_ptr) + (((char *) &_impure_ptr->_errno) - ((char *) _impure_ptr)) - -__attribute__((const, used, noinline)) static void -unused_sig_wrapper () -{ -/* Signal cleanup stuff. Cleans up stack (too bad that we didn't - prototype signal handlers as __stdcall), calls _set_process_mask - to restore any mask, restores any potentially clobbered registers - and returns to original caller. */ -__asm__ volatile ("\n\ - .text \n\ -_sigreturn: \n\ - addl $4,%%esp # Remove argument \n\ - call _set_process_mask@4 \n\ - \n\ - cmpl $0,%4 # Did a signal come in? \n\ - jz 1f # No, if zero \n\ - movl %2,%%eax \n\ - movl %8,%%ebx # Where return address lives \n\ - movl %%eax,(%%ebx) # Restore return address of \n\ - # most recent caller \n\ - jmp 3f \n\ - \n\ -1: popl %%eax # saved errno \n\ - testl %%eax,%%eax # Is it < 0 \n\ - jl 2f # yup. ignore it \n\ - movl %1,%%ebx \n\ - movl %%eax,(%%ebx) \n\ -2: popl %%eax \n\ - popl %%ebx \n\ - popl %%ecx \n\ - popl %%edx \n\ - popl %%edi \n\ - popl %%esi \n\ - popf \n\ - popl %%ebp \n\ - ret \n\ - \n\ -__no_sig_start: \n\ -_sigdelayed: \n\ - pushl %2 # original return address \n\ -_sigdelayed0: \n\ - pushl %%ebp \n\ - movl %%esp,%%ebp \n\ - pushf \n\ - pushl %%esi \n\ - pushl %%edi \n\ - pushl %%edx \n\ - pushl %%ecx \n\ - pushl %%ebx \n\ - pushl %%eax \n\ - pushl %6 # saved errno \n\ -3: pushl %3 # oldmask \n\ - pushl %4 # signal argument \n\ - pushl $_sigreturn \n\ - \n\ - call _reset_signal_arrived@0 \n\ - pushl %5 # signal number \n\ - pushl %7 # newmask \n\ - \n\ - call _set_process_mask@4 \n\ - movl $0,%0 # zero the signal number as a \n\ - # flag to the signal handler thread\n\ - # that it is ok to set up sigsave\n\ - popl %%eax \n\ - jmp *%%eax \n\ -__no_sig_end: \n\ -" : "=m" (sigsave.sig)/*0*/: "X" ((char *) &_impure_ptr->_errno)/*1*/, - "g" (sigsave.retaddr)/*2*/, "g" (sigsave.oldmask)/*3*/, "g" (sigsave.sig)/*4*/, - "g" (sigsave.func)/*5*/, "g" (sigsave.saved_errno)/*6*/, "g" (sigsave.newmask)/*7*/, - "g" (sigsave.retaddr_on_stack)/*8*/ -); -} } diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index cfe5528e5..c209104b0 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -1,6 +1,6 @@ /* external.cc: Interface to Cygwin internals from external programs. - Copyright 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Christopher Faylor diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 12881bd85..afd5ffd3d 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -320,7 +320,6 @@ bool fhandler_base::device_access_denied (int flags) { int mode = 0; - int access_worker (path_conv&, int); if (flags & O_RDWR) mode |= R_OK | W_OK; diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 00f296bae..309f3df47 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -634,7 +634,6 @@ fork () } grouped; MALLOC_CHECK; - sigframe thisframe (mainthread); debug_printf ("entering"); grouped.hParent = grouped.first_dll = NULL; @@ -688,7 +687,6 @@ vfork () #ifndef NEWVFORK return fork (); #else - sigframe thisframe; vfork_save *vf = get_vfork_val (); char **esp, **pp; @@ -697,12 +695,14 @@ vfork () else if (vf->pid) return fork (); + // FIXME the tls stuff could introduce a signal race if a child process + // exits quickly. if (!setjmp (vf->j)) { vf->pid = -1; __asm__ volatile ("movl %%esp,%0": "=r" (vf->vfork_esp):); __asm__ volatile ("movl %%ebp,%0": "=r" (vf->vfork_ebp):); - for (pp = (char **)vf->frame, esp = vf->vfork_esp; + for (pp = (char **) vf->frame, esp = vf->vfork_esp; esp <= vf->vfork_ebp + 2; pp++, esp++) *pp = *esp; vf->ctty = myself->ctty; @@ -710,16 +710,17 @@ vfork () vf->pgid = myself->pgid; int res = cygheap->fdtab.vfork_child_dup () ? 0 : -1; debug_printf ("%d = vfork()", res); + call_signal_handler_now (); // FIXME: racy + vf->tls = _my_tls; return res; } vf = get_vfork_val (); - for (pp = (char **)vf->frame, esp = vf->vfork_esp; + for (pp = (char **) vf->frame, esp = vf->vfork_esp; esp <= vf->vfork_ebp + 2; pp++, esp++) *esp = *pp; - thisframe.init (mainthread); cygheap->fdtab.vfork_parent_restore (); myself->ctty = vf->ctty; @@ -738,6 +739,9 @@ vfork () vf->pid = 0; debug_printf ("exiting vfork, pid %d", pid); sig_dispatch_pending (); + + call_signal_handler_now (); // FIXME: racy + _my_tls = vf->tls; return pid; #endif } diff --git a/winsup/cygwin/gendef b/winsup/cygwin/gendef new file mode 100755 index 000000000..df810cb06 --- /dev/null +++ b/winsup/cygwin/gendef @@ -0,0 +1,223 @@ +#!/usr/bin/perl +use strict; +my $in = shift; +my $tls_offsets = shift; +my $out = shift; +my $sigfe = shift; + +$main::first = 0; +if (!defined($in) || !defined($out) || !defined($sigfe)) { + die "usage: $0 deffile.in cygtls.h deffile.def sigfe.s\n"; +} + +require $tls_offsets; + +open(IN, $in) or die "$0: couldn't open \"$in\" - $!\n"; +my @top = (); +while () { + push(@top, $_); + last if /^\s*exports\s*$/i; +} +my $libline = ; +my @in = ; +close(IN); + +my %sigfe = (); +my @data = (); +my @nosigfuncs = (); +my @out = (); +for (@in) { + /\sDATA$/o and do { + push(@data, $_); + next; + }; + chomp; + if (/=/o) { + if (s/\s+NOSIGFE\s*$//) { + } elsif (s/ SIGFE$//) { + my $func = (split(' '))[2]; + $sigfe{$func} = '_sigfe_' . $func; + } + } else { + my ($func, $sigfe) = m%^\s*(\S+)(?:\s+((?:NO)?SIGR?FE))?$%o; + if (defined($sigfe) && $sigfe =~ /^NO/o) { + $_ = $func; + } else { + $sigfe ||= 'sigfe'; + $_ = '_' . lc($sigfe) . '_' . $func; + $sigfe{$func} = $_; + $_ = $func . ' = ' . $_; + } + } + s/(\S)\s+(\S)/$1 $2/go; + s/(\S)\s+$/$1/o; + s/^\s+(\S)/$1/o; + push(@out, $_ . "\n"); +} + +for (@out) { + my ($alias, $func) = /^(\S+) = (\S+)\s*$/o; + $_ = $alias . ' = ' . $sigfe{$func} . "\n" + if defined($func) && $sigfe{$func}; +} +open(OUT, '>', $out) or die "$0: couldn't open \"$out\" - $!\n"; +print OUT @top, @data, @out; +close OUT; + +open(SIGFE, '>', $sigfe) or die "$0: couldn't open sigfe file \"$sigfe\" - $!\n"; + +for my $k (sort keys %sigfe) { + print SIGFE fefunc($k, $sigfe{$k}); +} +close SIGFE; + +sub fefunc { + my $func = '_' . shift; + my $fe = '_' . shift; + my $extra; + my $res = <', $output) or die "$0: couldn't open $output - $!\n"; +open(OUTPUT, '>', $output) or do {{ + if (chmod(0664, $output)) { + open(OUTPUT, '>', $output); + last; + } + die "$0: couldn't open $output - $!\n"; +}}; print OUTPUT @lines; close OUTPUT; diff --git a/winsup/cygwin/gentls_offsets b/winsup/cygwin/gentls_offsets new file mode 100755 index 000000000..fe5fab96e --- /dev/null +++ b/winsup/cygwin/gentls_offsets @@ -0,0 +1,71 @@ +#!/usr/bin/perl -s +my $tls = shift; +my $tls_out = shift; +open(TLS, $tls) or die "$0: couldn't open tls file \"$tls\" - $!\n"; +my $struct = ''; +my @fields = (); +my $def = ''; +while () { + next if $struct && (!/gentls_offsets/o && /\(/o); + $def .= $_ if $struct; + last if /^};/o; + /^\s*typedef/o and do { + $def .= $_ ; + next; + }; + if (!s/;.*$//o) { + if (!$struct && /^\s*(?:struct|class)\s*([a-z_0-9]+)/o) { + $def .= $_; + $struct = $1 + } + next; + } + s%/\*\s*gentls_offsets.*/\*\s*gentls_offsets\s*\*/%%og; + s/(?:\[[^\]]*\]|struct|class)//o; + s/^\s+\S+\s+//o; + s/[\*\s()]+//go; + for my $f (split(/,/)) { + push(@fields, $f); + } +} +close TLS; +open(TMP, '>', "/tmp/$$.cc") or die "$0: couldn't open temporary index file \"/tmp/$$.c\" - $!\n"; +print TMP < +#include +#include +typedef void *HANDLE; +$def +int +main(int argc, char **argv) +{ + $struct foo[1]; +# define foo_end ((char *) (foo + 1)) +# define offset(f) (((char *) &(foo->f)) - foo_end) +EOF + print TMP 'puts ("//;# autogenerated: Do not edit.\n");', "\n\n"; + for my $f (@fields) { + print TMP ' printf ("//; $tls::', $f, ' = %d;\n", ', "offset($f));\n"; + } + print TMP ' puts ("//; __DATA__\n");', "\n"; + for my $f (@fields) { + print TMP ' printf ("#define tls_', $f, ' (%d)\n", ', "offset($f));\n"; + } + + print TMP <', $tls_out) or die "$0: couldn't open tls index file \"tls_out\" - $!\n"; +open(OFFS, "/tmp/$$.a.out|") or die "$0: couldn't run \"/tmp/$$.a.out\" - $!\n"; +print TLS_OUT ; +close OFFS; +close TLS_OUT; +# unlink "/tmp/$$.cc", "/tmp/$$.a.out"; +exit(0); diff --git a/winsup/cygwin/heap.cc b/winsup/cygwin/heap.cc index 1bbac3134..95d9b17bc 100644 --- a/winsup/cygwin/heap.cc +++ b/winsup/cygwin/heap.cc @@ -97,7 +97,6 @@ heap_init () extern "C" void * sbrk (int n) { - sigframe thisframe (mainthread); char *newtop, *newbrk; unsigned commitbytes, newbrksize; diff --git a/winsup/cygwin/how-signals-work.txt b/winsup/cygwin/how-signals-work.txt index 3b36badc8..aab65f6d7 100644 --- a/winsup/cygwin/how-signals-work.txt +++ b/winsup/cygwin/how-signals-work.txt @@ -1,5 +1,6 @@ Copyright 2001 Red Hat Inc., Christopher Faylor +[this information is currently obsolete -- sorry] How do signals work? On process startup, cygwin starts a secondary thread that deals with signals. diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index bea535e51..52ddb5be8 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -229,13 +229,13 @@ details. */ 102: CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID addition to external.cc. 103: Export getprogname, setprogname. 104: Export msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop. - + 105: Export sigwait. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 104 +#define CYGWIN_VERSION_API_MINOR 105 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/include/sys/queue.h b/winsup/cygwin/include/sys/queue.h index 49d9b68f7..92fa56b2f 100644 --- a/winsup/cygwin/include/sys/queue.h +++ b/winsup/cygwin/include/sys/queue.h @@ -149,6 +149,7 @@ struct name { \ #define SLIST_HEAD_INITIALIZER(head) \ { NULL } +#undef SLIST_ENTRY #define SLIST_ENTRY(type) \ struct { \ struct type *sle_next; /* next element */ \ diff --git a/winsup/cygwin/init.cc b/winsup/cygwin/init.cc index f740dcefe..7a5e65cce 100644 --- a/winsup/cygwin/init.cc +++ b/winsup/cygwin/init.cc @@ -1,6 +1,6 @@ /* init.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. @@ -12,6 +12,7 @@ details. */ #include #include "thread.h" #include "perprocess.h" +#include "cygtls.h" int NO_COPY dynamically_loaded; @@ -21,17 +22,18 @@ WINAPI dll_entry (HANDLE h, DWORD reason, void *static_load) switch (reason) { case DLL_PROCESS_ATTACH: - cygwin_hmodule = (HMODULE) h; + _my_tls.stackptr = _my_tls.stack; dynamically_loaded = (static_load == NULL); break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: + _my_tls.stackptr = _my_tls.stack; if (MT_INTERFACE->reent_key.set (&MT_INTERFACE->reents)) api_fatal ("thread initialization failed"); break; case DLL_THREAD_DETACH: - /* not invoked */; + _my_tls.remove (); break; } return 1; diff --git a/winsup/cygwin/ioctl.cc b/winsup/cygwin/ioctl.cc index 39917902d..bd9b3ca3c 100644 --- a/winsup/cygwin/ioctl.cc +++ b/winsup/cygwin/ioctl.cc @@ -1,6 +1,6 @@ /* ioctl.cc: ioctl routines. - Copyright 1996, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Doug Evans of Cygnus Support dje@cygnus.com @@ -25,7 +25,6 @@ details. */ extern "C" int ioctl (int fd, int cmd, ...) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 5fdef4d15..8d0c5b3dc 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -302,7 +302,7 @@ sys_mbstowcs (WCHAR *tgt, const char *src, int len) return MultiByteToWideChar (get_cp (), 0, src, -1, tgt, len); } -extern "C" int __stdcall +extern "C" int low_priority_sleep (DWORD secs) { HANDLE thisthread = GetCurrentThread (); diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc index fe679788c..a553345fa 100644 --- a/winsup/cygwin/mmap.cc +++ b/winsup/cygwin/mmap.cc @@ -39,9 +39,9 @@ static fhandler_disk_file fh_paging_file; for duplicating all mmaps after fork() since mmaps are not propagated to child processes by Windows. All information must be duplicated by hand, see fixup_mmaps_after_fork(). - + The class structure: - + One member of class map per process, global variable mmapped_areas. Contains a dynamic class list array. Each list entry represents all mapping to a file, keyed by file descriptor and file name hash. @@ -318,13 +318,13 @@ list::add_record (mmap_record r, _off64_t off, DWORD len) { mmap_record *new_recs; if (maxrecs == 0) - new_recs = (mmap_record *) + new_recs = (mmap_record *) cmalloc (HEAP_MMAP, 5 * sizeof (mmap_record)); else new_recs = (mmap_record *) crealloc (recs, (maxrecs + 5) * sizeof (mmap_record)); if (!new_recs) - return NULL; + return NULL; maxrecs += 5; recs = new_recs; } @@ -425,11 +425,11 @@ map::add_list (int fd) { list *new_lists; if (maxlists == 0) - new_lists = (list *) cmalloc (HEAP_MMAP, 5 * sizeof (list)); + new_lists = (list *) cmalloc (HEAP_MMAP, 5 * sizeof (list)); else new_lists = (list *) crealloc (lists, (maxlists + 5) * sizeof (list)); if (!new_lists) - return NULL; + return NULL; maxlists += 5; lists = new_lists; } @@ -444,7 +444,7 @@ map::del_list (int i) { lists[i].free_recs (); for (; i < nlists - 1; i++) - lists[i] = lists[i + 1]; + lists[i] = lists[i + 1]; nlists--; } } @@ -668,16 +668,16 @@ munmap (void *addr, size_t len) DWORD u_len; while ((record_idx = map_list->search_record((caddr_t)addr, len, u_addr, - u_len, record_idx)) >= 0) + u_len, record_idx)) >= 0) { mmap_record *rec = map_list->get_record (record_idx); if (rec->unmap_pages (u_addr, u_len)) { /* The whole record has been unmapped, so we now actually - unmap it from the system in full length... */ + unmap it from the system in full length... */ fhandler_base *fh = rec->alloc_fh (); fh->munmap (rec->get_handle (), - rec->get_address (), + rec->get_address (), rec->get_size ()); rec->free_fh (fh); @@ -735,7 +735,7 @@ msync (void *addr, size_t len, int flags) { mmap_record *rec; for (int record_idx = 0; - (rec = map_list->get_record (record_idx)); + (rec = map_list->get_record (record_idx)); ++record_idx) { if (rec->access ((caddr_t)addr)) @@ -746,7 +746,7 @@ msync (void *addr, size_t len, int flags) goto invalid_address_range; fhandler_base *fh = rec->alloc_fh (); int ret = fh->msync (rec->get_handle (), (caddr_t)addr, len, - flags); + flags); rec->free_fh (fh); if (ret) @@ -1012,7 +1012,7 @@ fixup_mmaps_after_fork (HANDLE parent) { mmap_record *rec; for (int record_idx = 0; - (rec = map_list->get_record (record_idx)); + (rec = map_list->get_record (record_idx)); ++record_idx) { diff --git a/winsup/cygwin/msg.cc b/winsup/cygwin/msg.cc index 9b842b8ff..7e80f669b 100644 --- a/winsup/cygwin/msg.cc +++ b/winsup/cygwin/msg.cc @@ -98,7 +98,6 @@ extern "C" int msgctl (int msqid, int cmd, struct msqid_ds *buf) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("msgctl (msqid = %d, cmd = 0x%x, buf = %p)", msqid, cmd, buf); switch (cmd) @@ -153,7 +152,6 @@ extern "C" int msgget (key_t key, int msgflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("msgget (key = %U, msgflg = 0x%x)", key, msgflg); client_request_msg request (key, msgflg); if (request.make_request () == -1 || request.retval () == -1) @@ -176,7 +174,6 @@ extern "C" ssize_t msgrcv (int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("msgrcv (msqid = %d, msgp = %p, msgsz = %d, " "msgtyp = %d, msgflg = 0x%x)", msqid, msgp, msgsz, msgtyp, msgflg); @@ -203,7 +200,6 @@ extern "C" int msgsnd (int msqid, const void *msgp, size_t msgsz, int msgflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("msgsnd (msqid = %d, msgp = %p, msgsz = %d, msgflg = 0x%x)", msqid, msgp, msgsz, msgflg); if (__check_invalid_read_ptr_errno (msgp, msgsz)) diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 835885b12..f93c9ef5f 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -695,7 +695,6 @@ cygwin_sendto (int fd, const void *buf, int len, int flags, { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -719,7 +718,6 @@ cygwin_recvfrom (int fd, void *buf, int len, int flags, { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -876,7 +874,6 @@ cygwin_connect (int fd, const struct sockaddr *name, int namelen) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -950,7 +947,6 @@ extern "C" struct servent * cygwin_getservbyname (const char *name, const char *proto) { sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_str_errno (name) || (proto != NULL && check_null_str_errno (proto))) return NULL; @@ -969,7 +965,6 @@ extern "C" struct servent * cygwin_getservbyport (int port, const char *proto) { sig_dispatch_pending (); - sigframe thisframe (mainthread); if (proto != NULL && check_null_str_errno (proto)) return NULL; @@ -986,7 +981,6 @@ extern "C" int cygwin_gethostname (char *name, size_t len) { sig_dispatch_pending (); - sigframe thisframe (mainthread); if (__check_null_invalid_struct_errno (name, len)) return -1; @@ -1022,7 +1016,6 @@ cygwin_gethostbyname (const char *name) static int a, b, c, d; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_str_errno (name)) return NULL; @@ -1063,7 +1056,6 @@ extern "C" struct hostent * cygwin_gethostbyaddr (const char *addr, int len, int type) { sig_dispatch_pending (); - sigframe thisframe (mainthread); if (__check_invalid_read_ptr_errno (addr, len)) return NULL; @@ -1089,7 +1081,6 @@ cygwin_accept (int fd, struct sockaddr *peer, int *len) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -1122,7 +1113,6 @@ cygwin_bind (int fd, const struct sockaddr *my_addr, int addrlen) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); if (__check_invalid_read_ptr_errno (my_addr, addrlen) || !fh) @@ -1140,7 +1130,6 @@ cygwin_getsockname (int fd, struct sockaddr *addr, int *namelen) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -1161,7 +1150,6 @@ cygwin_listen (int fd, int backlog) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); if (!fh) @@ -1179,7 +1167,6 @@ cygwin_shutdown (int fd, int how) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -1245,7 +1232,6 @@ cygwin_getpeername (int fd, struct sockaddr *name, int *len) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -1286,7 +1272,6 @@ getdomainname (char *domain, size_t len) * Punt for now and assume MS-TCP on Win95. */ sig_dispatch_pending (); - sigframe thisframe (mainthread); if (__check_null_invalid_struct_errno (domain, len)) return -1; @@ -1900,7 +1885,6 @@ get_ifconf (struct ifconf *ifc, int what) struct sockaddr_in *sa; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (ifc)) return -1; @@ -1979,7 +1963,6 @@ cygwin_rcmd (char **ahost, unsigned short inport, char *locuser, SOCKET fd2s; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (ahost) || check_null_empty_str_errno (*ahost) || @@ -2032,7 +2015,6 @@ cygwin_rresvport (int *port) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (port)) return -1; @@ -2061,7 +2043,6 @@ cygwin_rexec (char **ahost, unsigned short inport, char *locuser, int res = -1; SOCKET fd2s; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (ahost) || check_null_empty_str_errno (*ahost) || @@ -2119,7 +2100,6 @@ socketpair (int family, int type, int protocol, int *sb) int len; sig_dispatch_pending (); - sigframe thisframe (mainthread); if (__check_null_invalid_struct_errno (sb, 2 * sizeof (int))) return -1; @@ -2314,7 +2294,6 @@ cygwin_recvmsg (int fd, struct msghdr *msg, int flags) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); @@ -2341,7 +2320,6 @@ cygwin_sendmsg (int fd, const struct msghdr *msg, int flags) { int res; sig_dispatch_pending (); - sigframe thisframe (mainthread); fhandler_socket *fh = get (fd); diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 4fe66ac3f..ea8009af0 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -459,7 +459,6 @@ path_conv::check (const char *src, unsigned opt, bool saw_symlinks = 0; int is_relpath; char *tail; - sigframe thisframe (mainthread); #if 0 static path_conv last_path_conv; @@ -3337,8 +3336,6 @@ extern "C" int fchdir (int fd) { int res; - sigframe thisframe (mainthread); - cygheap_fdget cfd (fd); if (cfd >= 0) res = chdir (cfd->get_win32_name ()); diff --git a/winsup/cygwin/perthread.h b/winsup/cygwin/perthread.h index cfca5ae31..0c3b49b6e 100644 --- a/winsup/cygwin/perthread.h +++ b/winsup/cygwin/perthread.h @@ -48,6 +48,7 @@ public: }; #if defined (NEED_VFORK) +#include "cygtls.h" class vfork_save { jmp_buf j; @@ -55,6 +56,7 @@ class vfork_save public: int pid; DWORD frame[100]; + _threadinfo tls; char **vfork_ebp; char **vfork_esp; int ctty; @@ -85,29 +87,6 @@ extern per_thread_vfork vfork_storage; extern vfork_save *main_vfork; #endif -extern "C" { -struct signal_dispatch -{ - int arg; - void (*func) (int); - int sig; - int saved_errno; - int sa_flags; - DWORD oldmask; - DWORD newmask; - DWORD retaddr; - DWORD *retaddr_on_stack; -}; -}; - -struct per_thread_signal_dispatch : public per_thread -{ - signal_dispatch *get () { return (signal_dispatch *) per_thread::get (); } - signal_dispatch *create () {return (signal_dispatch *) per_thread::create ();} - size_t size () {return sizeof (signal_dispatch);} -}; - extern per_thread_waitq waitq_storage; -extern per_thread_signal_dispatch signal_dispatch_storage; extern per_thread *threadstuff[]; diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index faf6b8688..b7d4bd5e8 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -142,7 +142,7 @@ pinfo::init (pid_t n, DWORD flag, HANDLE in_h) int createit = flag & (PID_IN_USE | PID_EXECED); DWORD access = FILE_MAP_READ - | (flag & (PID_IN_USE | PID_EXECED | PID_MAP_RW) ? FILE_MAP_WRITE : 0); + | (flag & (PID_IN_USE | PID_EXECED | PID_MAP_RW) ? FILE_MAP_WRITE : 0); for (int i = 0; i < 10; i++) { int created; @@ -243,14 +243,14 @@ pinfo::set_acl() { char sa_buf[1024]; SECURITY_DESCRIPTOR sd; - - sec_acl ((PACL) sa_buf, true, true, cygheap->user.sid (), + + sec_acl ((PACL) sa_buf, true, true, cygheap->user.sid (), well_known_world_sid, FILE_MAP_READ); - if (!InitializeSecurityDescriptor( &sd, SECURITY_DESCRIPTOR_REVISION)) - debug_printf("InitializeSecurityDescriptor %E"); - else if (!SetSecurityDescriptorDacl(&sd, TRUE, (PACL) sa_buf, FALSE)) - debug_printf("SetSecurityDescriptorDacl %E"); - else if (!SetKernelObjectSecurity(h, DACL_SECURITY_INFORMATION, &sd)) + if (!InitializeSecurityDescriptor (&sd, SECURITY_DESCRIPTOR_REVISION)) + debug_printf ("InitializeSecurityDescriptor %E"); + else if (!SetSecurityDescriptorDacl (&sd, TRUE, (PACL) sa_buf, FALSE)) + debug_printf ("SetSecurityDescriptorDacl %E"); + else if (!SetKernelObjectSecurity (h, DACL_SECURITY_INFORMATION, &sd)) debug_printf ("SetKernelObjectSecurity %E"); } diff --git a/winsup/cygwin/poll.cc b/winsup/cygwin/poll.cc index da650ff61..8f9bda911 100644 --- a/winsup/cygwin/poll.cc +++ b/winsup/cygwin/poll.cc @@ -32,7 +32,6 @@ poll (struct pollfd *fds, unsigned int nfds, int timeout) int max_fd = 0; fd_set *read_fds, *write_fds, *except_fds; struct timeval tv = { timeout / 1000, (timeout % 1000) * 1000 }; - sigframe thisframe (mainthread); for (unsigned int i = 0; i < nfds; ++i) if (fds[i].fd > max_fd) diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 48cb56c96..7203e0ccd 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1,6 +1,6 @@ /* select.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Christopher Faylor of Cygnus Solutions cgf@cygnus.com @@ -102,7 +102,6 @@ cygwin_select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, fd_set *dummy_readfds = allocfd_set (maxfds); fd_set *dummy_writefds = allocfd_set (maxfds); fd_set *dummy_exceptfds = allocfd_set (maxfds); - sigframe thisframe (mainthread); select_printf ("%d, %p, %p, %p, %p", maxfds, readfds, writefds, exceptfds, to); @@ -1086,6 +1085,7 @@ fhandler_base::ready_for_read (int fd, DWORD howlong) if (WaitForSingleObject (signal_arrived, avail ? 0 : 10) == WAIT_OBJECT_0) { + debug_printf ("interrupted"); set_sig_errno (EINTR); avail = 0; break; diff --git a/winsup/cygwin/sem.cc b/winsup/cygwin/sem.cc index f7823b0fc..3dfaf42ad 100644 --- a/winsup/cygwin/sem.cc +++ b/winsup/cygwin/sem.cc @@ -82,7 +82,6 @@ extern "C" int semctl (int semid, int semnum, int cmd, ...) { #ifdef USE_SERVER - sigframe thisframe (mainthread); union semun arg = {0}; if (cmd == IPC_STAT || cmd == IPC_SET || cmd == IPC_INFO || cmd == SEM_INFO || cmd == GETALL || cmd == SETALL || cmd == SETVAL) @@ -132,7 +131,6 @@ extern "C" int semget (key_t key, int nsems, int semflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("semget (key = %U, nsems = %d, semflg = 0x%x)", key, nsems, semflg); client_request_sem request (key, nsems, semflg); @@ -156,7 +154,6 @@ extern "C" int semop (int semid, struct sembuf *sops, size_t nsops) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("semop (semid = %d, sops = %p, nsops = %d)", semid, sops, nsops); if (__check_null_invalid_struct_errno (sops, nsops * sizeof (struct sembuf))) diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc index 34fb6e1c6..92ea20f86 100644 --- a/winsup/cygwin/shm.cc +++ b/winsup/cygwin/shm.cc @@ -149,7 +149,6 @@ extern "C" void * shmat (int shmid, const void *shmaddr, int shmflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("shmat (shmid = %d, shmaddr = %p, shmflg = 0x%x)", shmid, shmaddr, shmflg); @@ -226,7 +225,6 @@ extern "C" int shmctl (int shmid, int cmd, struct shmid_ds *buf) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("shmctl (shmid = %d, cmd = %d, buf = 0x%x)", shmid, cmd, buf); switch (cmd) @@ -288,7 +286,6 @@ extern "C" int shmdt (const void *shmaddr) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("shmget (shmaddr = %p)", shmaddr); client_request_shm request (shmaddr); if (request.make_request () == -1 || request.retval () == -1) @@ -324,7 +321,6 @@ extern "C" int shmget (key_t key, size_t size, int shmflg) { #ifdef USE_SERVER - sigframe thisframe (mainthread); syscall_printf ("shmget (key = %U, size = %d, shmflg = 0x%x)", key, size, shmflg); /* Try allocating memory before calling cygserver. */ diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 7f6fcbe44..9bf9eb062 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -15,9 +15,11 @@ details. */ #include #include "cygerrno.h" #include -#include "sigproc.h" #include "pinfo.h" +#include "sigproc.h" #include "hires.h" +#include "security.h" +#include "cygtls.h" int sigcatchers; /* FIXME: Not thread safe. */ @@ -71,7 +73,6 @@ nanosleep (const struct timespec *rqtp, struct timespec *rmtp) { int res = 0; sig_dispatch_pending (); - sigframe thisframe (mainthread); pthread_testcancel (); if ((unsigned int) rqtp->tv_sec > (HIRES_DELAY_MAX / 1000 - 1) @@ -92,7 +93,7 @@ nanosleep (const struct timespec *rqtp, struct timespec *rmtp) rem = 0; if (rc == WAIT_OBJECT_0) { - (void) thisframe.call_signal_handler (); + (void) call_signal_handler_now (); set_errno (EINTR); res = -1; } @@ -129,21 +130,34 @@ usleep (unsigned int useconds) extern "C" int sigprocmask (int sig, const sigset_t *set, sigset_t *oldset) +{ + return handle_sigprocmask (sig, set, oldset, myself->getsigmask ()); +} + +int __stdcall +handle_sigprocmask (int sig, const sigset_t *set, sigset_t *oldset, sigset_t& opmask) { sig_dispatch_pending (); /* check that sig is in right range */ if (sig < 0 || sig >= NSIG) { - set_errno (EINVAL); + set_errno (ESRCH); syscall_printf ("SIG_ERR = sigprocmask signal %d out of range", sig); return -1; } if (oldset) - *oldset = myself->getsigmask (); + { + if (check_null_invalid_struct_errno (oldset)) + return -1; + *oldset = opmask; + } + if (set) { - sigset_t newmask = myself->getsigmask (); + if (check_invalid_read_struct_errno (set)) + return -1; + sigset_t newmask = opmask; switch (sig) { case SIG_BLOCK: @@ -162,7 +176,7 @@ sigprocmask (int sig, const sigset_t *set, sigset_t *oldset) set_errno (EINVAL); return -1; } - (void) set_process_mask (newmask); + (void) set_signal_mask (newmask, opmask); } return 0; } @@ -185,10 +199,7 @@ kill_worker (pid_t pid, int sig) if ((sendSIGCONT = (sig < 0))) sig = -sig; -#if 0 - if (dest == myself && !sendSIGCONT) - dest = myself_nowait_nonmain; -#endif + DWORD process_state = dest->process_state; if (sig == 0) { res = proc_exists (dest) ? 0 : -1; @@ -203,7 +214,7 @@ kill_worker (pid_t pid, int sig) else if (sendSIGCONT) (void) sig_send (dest, SIGCONT); - syscall_printf ("%d = kill_worker (%d, %d)", res, pid, sig); + syscall_printf ("%d = kill_worker (%d, %d), process_state %p", res, pid, sig, process_state); return res; } @@ -216,7 +227,6 @@ raise (int sig) int kill (pid_t pid, int sig) { - sigframe thisframe (mainthread); syscall_printf ("kill (%d, %d)", pid, sig); /* check that sig is in right range */ if (sig < 0 || sig >= NSIG) @@ -241,7 +251,6 @@ kill_pgrp (pid_t pid, int sig) int res = 0; int found = 0; int killself = 0; - sigframe thisframe (mainthread); sigproc_printf ("pid %d, signal %d", pid, sig); @@ -289,7 +298,6 @@ extern "C" void abort (void) { sig_dispatch_pending (); - sigframe thisframe (mainthread); /* Flush all streams as per SUSv2. From my reading of this document, this isn't strictly correct. The streams are supposed to be flushed prior to exit. However, @@ -304,10 +312,10 @@ abort (void) sigset_t sig_mask; sigfillset (&sig_mask); sigdelset (&sig_mask, SIGABRT); - set_process_mask (sig_mask); + set_signal_mask (sig_mask); raise (SIGABRT); - (void) thisframe.call_signal_handler (); /* Call any signal handler */ + (void) call_signal_handler_now (); /* Call any signal handler */ do_exit (1); /* signal handler didn't exit. Goodbye. */ } @@ -436,11 +444,38 @@ extern "C" int siginterrupt (int sig, int flag) { struct sigaction act; - (void)sigaction(sig, NULL, &act); + (void) sigaction(sig, NULL, &act); if (flag) act.sa_flags &= ~SA_RESTART; else act.sa_flags |= SA_RESTART; - return sigaction(sig, &act, NULL); + return sigaction (sig, &act, NULL); } + +extern "C" int +sigwait (const sigset_t *set, int *sig) +{ + pthread_testcancel (); + _my_tls.event = CreateEvent (&sec_none_nih, FALSE, FALSE, NULL); + if (!_my_tls.event) + { + __seterrno (); + return -1; + } + + _my_tls.sigwait_mask = *set; + + switch (WaitForSingleObject (_my_tls.event, INFINITE)) + { + case WAIT_OBJECT_0: + CloseHandle (_my_tls.event); + _my_tls.event = NULL; + *sig = InterlockedExchange ((LONG *) &_my_tls.sig, (LONG) 0); + break; + default: + __seterrno (); + return -1; + } + return 0; +} diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index cecbe70c3..984000478 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -20,6 +20,7 @@ details. */ #include #include "cygerrno.h" #include "sync.h" +#include "cygtls.h" #include "sigproc.h" #include "pinfo.h" #include "security.h" @@ -37,10 +38,6 @@ details. */ */ #define WSSC 60000 // Wait for signal completion #define WPSP 40000 // Wait for proc_subproc mutex -#define WSPX 20000 // Wait for wait_sig to terminate -#define WWSP 20000 // Wait for wait_subproc to terminate - -#define TOTSIGS (NSIG + __SIGOFFSET) #define wake_wait_subproc() SetEvent (events[0]) @@ -48,9 +45,11 @@ details. */ #define NZOMBIES 256 -class sigelem +struct sigelem { int sig; + int pid; + _threadinfo *tls; class sigelem *next; friend class pending_signals; friend int __stdcall sig_dispatch_pending (); @@ -66,9 +65,9 @@ class pending_signals int empty; public: void reset () {curr = &start; prev = &start;} - void add (int sig); + void add (int sig, int pid, _threadinfo *tls); void del (); - int next (); + sigelem *next (); friend int __stdcall sig_dispatch_pending (); }; @@ -78,6 +77,7 @@ struct sigpacket pid_t pid; HANDLE wakeup; sigset_t *mask; + _threadinfo *tls; }; static pending_signals sigqueue; @@ -112,10 +112,6 @@ int __sp_ln; char NO_COPY myself_nowait_dummy[1] = {'0'};// Flag to sig_send that signal goes to // current process but no wait is required -char NO_COPY myself_nowait_nonmain_dummy[1] = {'1'};// Flag to sig_send that signal goes to - // current process but no wait is required - // if this is the main thread. - HANDLE NO_COPY signal_arrived; // Event signaled when a signal has // resulted in a user-specified // function call @@ -244,7 +240,7 @@ get_proc_lock (DWORD what, DWORD val) static BOOL __stdcall proc_can_be_signalled (_pinfo *p) { - if (p == myself_nowait || p == myself_nowait_nonmain || p == myself) + if (p == myself_nowait || p == myself) { assert (!wait_sig_inited); return 1; @@ -549,10 +545,10 @@ sig_clear (int target_sig) sig_send (myself, -target_sig); else { - int sig; sigqueue.reset (); - while ((sig = sigqueue.next ())) - if (sig == target_sig) + sigelem *q; + while ((q = sigqueue.next ())) + if (q->sig == target_sig) { sigqueue.del (); break; @@ -578,9 +574,8 @@ sig_dispatch_pending () if (exit_state || GetCurrentThreadId () == sigtid || !sigqueue.start.next) return 0; - sigframe thisframe (mainthread); (void) sig_send (myself, __SIGFLUSH); - return thisframe.call_signal_handler (); + return call_signal_handler_now (); } /* Message initialization. Called from dll_crt0_1 @@ -654,18 +649,15 @@ sigproc_terminate (void) * completed before returning. */ int __stdcall -sig_send (_pinfo *p, int sig, DWORD ebp, bool exception) +sig_send (_pinfo *p, int sig, void *tls) { int rc = 1; - DWORD tid = GetCurrentThreadId (); BOOL its_me; HANDLE sendsig; - bool wait_for_completion; - sigframe thisframe; sigpacket pack; - if (p == myself_nowait_nonmain) - p = (tid == mainthread.id) ? (_pinfo *) myself : myself_nowait; + bool wait_for_completion; + // FIXMENOW: Avoid using main thread's completion event! if (!(its_me = (p == NULL || p == myself || p == myself_nowait))) wait_for_completion = false; else @@ -674,7 +666,7 @@ sig_send (_pinfo *p, int sig, DWORD ebp, bool exception) goto out; // Either exiting or not yet initializing if (wait_sig_inited) wait_for_sigthread (); - wait_for_completion = p != myself_nowait; + wait_for_completion = p != myself_nowait && _my_tls.isinitialized (); p = myself; } @@ -695,11 +687,7 @@ sig_send (_pinfo *p, int sig, DWORD ebp, bool exception) { sendsig = myself->sendsig; if (wait_for_completion) - { - if (tid == mainthread.id) - thisframe.init (mainthread, ebp, exception); - pack.wakeup = sigcomplete_main; - } + pack.wakeup = sigcomplete_main; } else { @@ -735,6 +723,7 @@ sig_send (_pinfo *p, int sig, DWORD ebp, bool exception) pack.sig = sig; pack.pid = myself->pid; + pack.tls = (_threadinfo *) tls; DWORD nb; if (!WriteFile (sendsig, &pack, sizeof (pack), &nb, NULL) || nb != sizeof (pack)) { @@ -790,7 +779,7 @@ sig_send (_pinfo *p, int sig, DWORD ebp, bool exception) } if (wait_for_completion) - thisframe.call_signal_handler (); + call_signal_handler_now (); out: if (sig != __SIGPENDING) @@ -995,7 +984,7 @@ talktome () has been handled, as per POSIX. */ void -pending_signals::add (int sig) +pending_signals::add (int sig, int pid, _threadinfo *tls) { sigelem *se; for (se = start.next; se; se = se->next) @@ -1007,6 +996,8 @@ pending_signals::add (int sig) se = sigs + empty; se->sig = sig; se->next = NULL; + se->tls = tls; + se->pid = pid; if (end) end->next = se; end = se; @@ -1030,16 +1021,16 @@ pending_signals::del () curr = next; } -int +sigelem * pending_signals::next () { - int sig; + sigelem *res; prev = curr; if (!curr || !(curr = curr->next)) - sig = 0; + res = NULL; else - sig = curr->sig; - return sig; + res = curr; + return res; } /* Process signals by waiting for signal data to arrive in a pipe. @@ -1105,7 +1096,12 @@ wait_sig (VOID *self) } if (!pack.sig) - continue; /* Just checking to see if we exist */ + { +#ifdef DEBUGGING + system_printf ("zero signal?"); +#endif + continue; + } sigset_t dummy_mask; if (!pack.mask) @@ -1114,40 +1110,39 @@ wait_sig (VOID *self) pack.mask = &dummy_mask; } + sigelem *q; switch (pack.sig) { case __SIGCOMMUNE: talktome (); - continue; + break; case __SIGSTRACE: strace.hello (); - continue; + break; case __SIGPENDING: *pack.mask = 0; unsigned bit; sigqueue.reset (); - while ((pack.sig = sigqueue.next ())) - if (myself->getsigmask () & (bit = SIGTOMASK (pack.sig))) + while ((q = sigqueue.next ())) + if (myself->getsigmask () & (bit = SIGTOMASK (q->sig))) *pack.mask |= bit; break; + case __SIGFLUSH: + sigqueue.reset (); + while ((q = sigqueue.next ())) + if (sig_handle (q->sig, *pack.mask, q->pid, q->tls) > 0) + sigqueue.del (); + break; default: if (pack.sig < 0) sig_clear (-pack.sig); else { - int sh; - for (int i = 0; !(sh = sig_handle (pack.sig, *pack.mask)) && i < 100 ; i++) - low_priority_sleep (0); // hopefully a temporary condition - if (sh <= 0) - sigqueue.add (pack.sig); // FIXME: Shouldn't add this in !sh condition + if (sig_handle (pack.sig, *pack.mask, pack.pid, pack.tls) <= 0) + sigqueue.add (pack.sig, pack.pid, pack.tls);// FIXME: Shouldn't add this in !sh condition if (pack.sig == SIGCHLD) proc_subproc (PROC_CLEARWAIT, 0); } - case __SIGFLUSH: - sigqueue.reset (); - while ((pack.sig = sigqueue.next ())) - if (sig_handle (pack.sig, *pack.mask) > 0) - sigqueue.del (); break; } if (pack.wakeup) @@ -1231,29 +1226,3 @@ wait_subproc (VOID *) sigproc_printf ("done"); ExitThread (0); } - -extern "C" { -/* Provide a stack frame when calling WaitFor* functions */ - -#undef WaitForSingleObject - -DWORD __stdcall -WFSO (HANDLE hHandle, DWORD dwMilliseconds) -{ - DWORD ret; - sigframe thisframe (mainthread); - ret = WaitForSingleObject (hHandle, dwMilliseconds); - return ret; -} - -#undef WaitForMultipleObjects - -DWORD __stdcall -WFMO (DWORD nCount, CONST HANDLE *lpHandles, BOOL fWaitAll, DWORD dwMilliseconds) -{ - DWORD ret; - sigframe thisframe (mainthread); - ret = WaitForMultipleObjects (nCount, lpHandles, fWaitAll, dwMilliseconds); - return ret; -} -} diff --git a/winsup/cygwin/sigproc.h b/winsup/cygwin/sigproc.h index 4bc9615ce..834a569b2 100644 --- a/winsup/cygwin/sigproc.h +++ b/winsup/cygwin/sigproc.h @@ -1,6 +1,6 @@ /* sigproc.h - Copyright 1997, 1998, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. @@ -48,72 +48,23 @@ typedef struct struct_waitq HANDLE thread_ev; } waitq; -struct sigthread -{ - DWORD id; - DWORD frame; - CRITICAL_SECTION lock; - LONG winapi_lock; - BOOL exception; - bool get_winapi_lock (int test = 0); - void release_winapi_lock (); - void init (const char *s); -}; - -class sigframe -{ -private: - sigthread *st; - inline bool unregister () - { - if (!st) - return 0; - EnterCriticalSection (&st->lock); - st->frame = 0; - st->exception = 0; - st->release_winapi_lock (); - LeaveCriticalSection (&st->lock); - st = NULL; - return 1; - } - -public: - inline void set (sigthread &t, DWORD ebp, bool is_exception = 0) - { - DWORD oframe = t.frame; - st = &t; - t.frame = ebp; - t.exception = is_exception; - if (!oframe) - t.get_winapi_lock (); - } - inline void init (sigthread &t, DWORD ebp = (DWORD) __builtin_frame_address (0), bool is_exception = 0) - { - if (is_exception || (!t.frame && t.id == GetCurrentThreadId ())) - set (t, ebp, is_exception); - else - st = NULL; - } - - sigframe (): st (NULL) {} - sigframe (sigthread &t, DWORD ebp = (DWORD) __builtin_frame_address (0)) {init (t, ebp);} - ~sigframe () - { - unregister (); - } - - int call_signal_handler (); -}; - -extern sigthread mainthread; extern HANDLE signal_arrived; extern HANDLE sigCONT; BOOL __stdcall my_parent_is_alive (); int __stdcall sig_dispatch_pending (); -extern "C" void __stdcall set_process_mask (sigset_t newmask); +#ifdef _PINFO_H +extern "C" void __stdcall set_signal_mask (sigset_t newmask, sigset_t& = myself->getsigmask ()); +#endif +int __stdcall handle_sigprocmask (int sig, const sigset_t *set, + sigset_t *oldset, sigset_t& opmask) + __attribute__ ((regparm (3))); + extern "C" void __stdcall reset_signal_arrived (); -int __stdcall sig_handle (int, sigset_t) __attribute__ ((regparm (2))); +extern "C" int __stdcall call_signal_handler_now (); +#ifdef _CYGTLS_H +int __stdcall sig_handle (int, sigset_t, int, _threadinfo *) __attribute__ ((regparm (3))); +#endif void __stdcall sig_clear (int) __attribute__ ((regparm (1))); void __stdcall sig_set_pending (int) __attribute__ ((regparm (1))); int __stdcall handle_sigsuspend (sigset_t); @@ -127,18 +78,15 @@ void __stdcall subproc_init (); void __stdcall sigproc_terminate (); BOOL __stdcall proc_exists (_pinfo *) __attribute__ ((regparm(1))); BOOL __stdcall pid_exists (pid_t) __attribute__ ((regparm(1))); -int __stdcall sig_send (_pinfo *, int, DWORD ebp = (DWORD) __builtin_frame_address (0), - bool exception = 0) __attribute__ ((regparm(3))); +int __stdcall sig_send (_pinfo *, int, void * = NULL) __attribute__ ((regparm(3))); void __stdcall signal_fixup_after_fork (); void __stdcall signal_fixup_after_exec (); void __stdcall wait_for_sigthread (); void __stdcall sigalloc (); extern char myself_nowait_dummy[]; -extern char myself_nowait_nonmain_dummy[]; #define WAIT_SIG_PRIORITY THREAD_PRIORITY_TIME_CRITICAL #define myself_nowait ((_pinfo *)myself_nowait_dummy) -#define myself_nowait_nonmain ((_pinfo *)myself_nowait_nonmain_dummy) #endif /*_SIGPROC_H*/ diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 02afbf3e3..b22e8c774 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -351,7 +351,6 @@ spawn_guts (const char * prog_arg, const char *const *argv, { BOOL rc; pid_t cygpid; - sigframe thisframe (mainthread); MALLOC_CHECK; @@ -987,9 +986,11 @@ spawnve (int mode, const char *path, const char *const *argv, ret = spawn_guts (path, argv, envp, mode); if (vf) { - debug_printf ("longjmping due to vfork"); if (ret > 0) - vf->restore_pid (ret); + { + debug_printf ("longjmping due to vfork"); + vf->restore_pid (ret); + } } break; default: diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index adf19e2da..06cffa0b6 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -118,7 +118,6 @@ unlink (const char *ourname) { int res = -1; DWORD devn; - sigframe thisframe (mainthread); path_conv win32_name (ourname, PC_SYM_NOFOLLOW | PC_FULL); @@ -396,7 +395,6 @@ readv (int fd, const struct iovec *const iov, const int iovcnt) while (1) { sig_dispatch_pending (); - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) @@ -451,7 +449,7 @@ readv (int fd, const struct iovec *const iov, const int iovcnt) } out: - if (res >= 0 || get_errno () != EINTR || !thisframe.call_signal_handler ()) + if (res >= 0 || get_errno () != EINTR || !call_signal_handler_now ()) break; set_errno (e); } @@ -470,7 +468,6 @@ writev (const int fd, const struct iovec *const iov, const int iovcnt) sig_dispatch_pending (); const ssize_t tot = check_iovec_for_write (iov, iovcnt); - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) goto done; @@ -524,7 +521,6 @@ open (const char *unix_path, int flags, ...) va_list ap; mode_t mode = 0; sig_dispatch_pending (); - sigframe thisframe (mainthread); syscall_printf ("open (%s, %p)", unix_path, flags); if (!check_null_empty_str_errno (unix_path)) @@ -574,7 +570,6 @@ extern "C" _off64_t lseek64 (int fd, _off64_t pos, int dir) { _off64_t res; - sigframe thisframe (mainthread); if (dir != SEEK_SET && dir != SEEK_CUR && dir != SEEK_END) { @@ -610,7 +605,6 @@ extern "C" int close (int fd) { int res; - sigframe thisframe (mainthread); syscall_printf ("close (%d)", fd); @@ -635,7 +629,6 @@ extern "C" int isatty (int fd) { int res; - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) @@ -657,7 +650,6 @@ extern "C" int link (const char *a, const char *b) { int res = -1; - sigframe thisframe (mainthread); path_conv real_a (a, PC_SYM_NOFOLLOW | PC_FULL); path_conv real_b (b, PC_SYM_NOFOLLOW | PC_FULL); extern BOOL allow_winsymlinks; @@ -787,7 +779,7 @@ link (const char *a, const char *b) res = 0; if (!allow_winsymlinks && real_a.is_lnk_symlink ()) SetFileAttributes (real_b, (DWORD) real_a - | FILE_ATTRIBUTE_SYSTEM + | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY); goto done; @@ -865,14 +857,12 @@ done: extern "C" int chown32 (const char * name, __uid32_t uid, __gid32_t gid) { - sigframe thisframe (mainthread); return chown_worker (name, PC_SYM_FOLLOW, uid, gid); } extern "C" int chown (const char * name, __uid16_t uid, __gid16_t gid) { - sigframe thisframe (mainthread); return chown_worker (name, PC_SYM_FOLLOW, uid16touid32 (uid), gid16togid32 (gid)); } @@ -880,14 +870,12 @@ chown (const char * name, __uid16_t uid, __gid16_t gid) extern "C" int lchown32 (const char * name, __uid32_t uid, __gid32_t gid) { - sigframe thisframe (mainthread); return chown_worker (name, PC_SYM_NOFOLLOW, uid, gid); } extern "C" int lchown (const char * name, __uid16_t uid, __gid16_t gid) { - sigframe thisframe (mainthread); return chown_worker (name, PC_SYM_NOFOLLOW, uid16touid32 (uid), gid16togid32 (gid)); } @@ -895,7 +883,6 @@ lchown (const char * name, __uid16_t uid, __gid16_t gid) extern "C" int fchown32 (int fd, __uid32_t uid, __gid32_t gid) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) { @@ -945,7 +932,6 @@ extern "C" int chmod (const char *path, mode_t mode) { int res = -1; - sigframe thisframe (mainthread); path_conv win32_path (path); @@ -1009,7 +995,6 @@ done: extern "C" int fchmod (int fd, mode_t mode) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) { @@ -1053,7 +1038,6 @@ extern "C" int fstat64 (int fd, struct __stat64 *buf) { int res; - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) @@ -1113,7 +1097,6 @@ _fstat_r (struct _reent *ptr, int fd, struct __stat32 *buf) extern "C" int fsync (int fd) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) { @@ -1189,7 +1172,6 @@ stat_worker (const char *name, struct __stat64 *buf, int nofollow) extern "C" int stat64 (const char *name, struct __stat64 *buf) { - sigframe thisframe (mainthread); syscall_printf ("entering"); return stat_worker (name, buf, 0); } @@ -1230,7 +1212,6 @@ _stat_r (struct _reent *ptr, const char *name, struct __stat32 *buf) extern "C" int lstat64 (const char *name, struct __stat64 *buf) { - sigframe thisframe (mainthread); syscall_printf ("entering"); return stat_worker (name, buf, 1); } @@ -1334,7 +1315,6 @@ done: extern "C" int access (const char *fn, int flags) { - sigframe thisframe (mainthread); // flags were incorrectly specified if (flags & ~(F_OK|R_OK|W_OK|X_OK)) { @@ -1349,7 +1329,6 @@ access (const char *fn, int flags) extern "C" int rename (const char *oldpath, const char *newpath) { - sigframe thisframe (mainthread); int res = 0; char *lnk_suffix = NULL; @@ -1484,7 +1463,6 @@ system (const char *cmdstring) if (check_null_empty_str_errno (cmdstring)) return -1; - sigframe thisframe (mainthread); int res; const char* command[4]; @@ -1800,7 +1778,6 @@ setmode (int fd, int mode) extern "C" int ftruncate64 (int fd, _off64_t length) { - sigframe thisframe (mainthread); int res = -1; if (length < 0) @@ -1844,7 +1821,6 @@ ftruncate (int fd, _off_t length) extern "C" int truncate64 (const char *pathname, _off64_t length) { - sigframe thisframe (mainthread); int fd; int res = -1; @@ -1887,7 +1863,6 @@ get_osfhandle (int fd) extern "C" int statfs (const char *fname, struct statfs *sfs) { - sigframe thisframe (mainthread); if (!sfs) { set_errno (EFAULT); @@ -1943,7 +1918,6 @@ statfs (const char *fname, struct statfs *sfs) extern "C" int fstatfs (int fd, struct statfs *sfs) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) return -1; @@ -1954,7 +1928,6 @@ fstatfs (int fd, struct statfs *sfs) extern "C" int setpgid (pid_t pid, pid_t pgid) { - sigframe thisframe (mainthread); int res = -1; if (pid == 0) pid = getpid (); @@ -1996,7 +1969,6 @@ out: extern "C" pid_t getpgid (pid_t pid) { - sigframe thisframe (mainthread); if (pid == 0) pid = getpid (); @@ -2012,21 +1984,18 @@ getpgid (pid_t pid) extern "C" int setpgrp (void) { - sigframe thisframe (mainthread); return setpgid (0, 0); } extern "C" pid_t getpgrp (void) { - sigframe thisframe (mainthread); return getpgid (0); } extern "C" char * ptsname (int fd) { - sigframe thisframe (mainthread); cygheap_fdget cfd (fd); if (cfd < 0) return 0; @@ -2123,7 +2092,6 @@ seteuid32 (__uid32_t uid) return 0; } - sigframe thisframe (mainthread); cygsid usersid; user_groups &groups = cygheap->user.groups; HANDLE ptok, new_token = INVALID_HANDLE_VALUE; @@ -2131,7 +2099,7 @@ seteuid32 (__uid32_t uid) BOOL token_is_internal, issamesid; char dacl_buf[MAX_DACL_LEN (5)]; TOKEN_DEFAULT_DACL tdacl = {}; - + pw_new = internal_getpwuid (uid); if (!wincap.has_security () && pw_new) goto success_9x; @@ -2202,7 +2170,7 @@ seteuid32 (__uid32_t uid) { /* Avoid having HKCU use default user */ load_registry_hive (usersid); - + /* Try setting owner to same value as user. */ if (!SetTokenInformation (new_token, TokenOwner, &usersid, sizeof usersid)) @@ -2221,12 +2189,12 @@ seteuid32 (__uid32_t uid) } CloseHandle (ptok); - issamesid = (usersid == cygheap->user.sid ()); + issamesid = (usersid == cygheap->user.sid ()); cygheap->user.set_sid (usersid); cygheap->user.current_token = new_token == ptok ? INVALID_HANDLE_VALUE - : new_token; + : new_token; if (!issamesid) /* MS KB 199190 */ - RegCloseKey(HKEY_CURRENT_USER); + RegCloseKey (HKEY_CURRENT_USER); cygheap->user.reimpersonate (); if (!issamesid) user_shared_initialize (true); @@ -2304,7 +2272,6 @@ setegid32 (__gid32_t gid) return 0; } - sigframe thisframe (mainthread); user_groups * groups = &cygheap->user.groups; cygsid gsid; HANDLE ptok; @@ -2399,7 +2366,6 @@ setregid (__gid16_t rgid, __gid16_t egid) extern "C" int chroot (const char *newroot) { - sigframe thisframe (mainthread); path_conv path (newroot, PC_SYM_FOLLOW | PC_FULL | PC_POSIX); int ret; @@ -2431,7 +2397,6 @@ chroot (const char *newroot) extern "C" int creat (const char *path, mode_t mode) { - sigframe thisframe (mainthread); return open (path, O_WRONLY | O_CREAT | O_TRUNC, mode); } @@ -2444,7 +2409,6 @@ __assertfail () extern "C" int getw (FILE *fp) { - sigframe thisframe (mainthread); int w, ret; ret = fread (&w, sizeof (int), 1, fp); return ret != 1 ? EOF : w; @@ -2453,7 +2417,6 @@ getw (FILE *fp) extern "C" int putw (int w, FILE *fp) { - sigframe thisframe (mainthread); int ret; ret = fwrite (&w, sizeof (int), 1, fp); if (feof (fp) || ferror (fp)) @@ -2524,7 +2487,6 @@ memccpy (_PTR out, const _PTR in, int c, size_t len) extern "C" int nice (int incr) { - sigframe thisframe (mainthread); DWORD priority[] = { IDLE_PRIORITY_CLASS, @@ -2618,7 +2580,6 @@ updwtmp (const char *wtmp_file, const struct utmp *ut) extern "C" void logwtmp (const char *line, const char *user, const char *host) { - sigframe thisframe (mainthread); struct utmp ut; memset (&ut, 0, sizeof ut); ut.ut_type = USER_PROCESS; @@ -2636,7 +2597,6 @@ logwtmp (const char *line, const char *user, const char *host) extern "C" void login (struct utmp *ut) { - sigframe thisframe (mainthread); pututline (ut); endutent (); updwtmp (_PATH_WTMP, ut); @@ -2645,7 +2605,6 @@ login (struct utmp *ut) extern "C" int logout (char *line) { - sigframe thisframe (mainthread); struct utmp ut_buf, *ut; memset (&ut_buf, 0, sizeof ut_buf); @@ -2674,7 +2633,6 @@ static char *utmp_file = (char *) _PATH_UTMP; static void internal_setutent (bool force_readwrite) { - sigframe thisframe (mainthread); if (force_readwrite && utmp_readonly) endutent (); if (utmp_fd < 0) @@ -2703,7 +2661,6 @@ setutent () extern "C" void endutent () { - sigframe thisframe (mainthread); if (utmp_fd >= 0) { close (utmp_fd); @@ -2715,7 +2672,6 @@ endutent () extern "C" void utmpname (_CONST char *file) { - sigframe thisframe (mainthread); if (check_null_empty_str (file)) { debug_printf ("Invalid file"); @@ -2739,7 +2695,6 @@ static unsigned utix = 0; extern "C" struct utmp * getutent () { - sigframe thisframe (mainthread); if (utmp_fd < 0) { internal_setutent (false); @@ -2756,7 +2711,6 @@ getutent () extern "C" struct utmp * getutid (struct utmp *id) { - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (id)) return NULL; if (utmp_fd < 0) @@ -2795,7 +2749,6 @@ getutid (struct utmp *id) extern "C" struct utmp * getutline (struct utmp *line) { - sigframe thisframe (mainthread); if (check_null_invalid_struct_errno (line)) return NULL; if (utmp_fd < 0) @@ -2818,7 +2771,6 @@ getutline (struct utmp *line) extern "C" void pututline (struct utmp *ut) { - sigframe thisframe (mainthread); if (check_null_invalid_struct (ut)) return; internal_setutent (true); @@ -2853,7 +2805,7 @@ pututline (struct utmp *ut) } extern "C" -long gethostid(void) +long gethostid (void) { unsigned data[13] = {0x92895012, 0x10293412, @@ -2870,7 +2822,6 @@ long gethostid(void) 0x00290012}; bool has_cpuid = false; - sigframe thisframe (mainthread); DWORD opmask = SetThreadAffinityMask (GetCurrentThread (), 1); if (!opmask) @@ -2993,7 +2944,7 @@ getusershell () if (!shell_fp && !(shell_fp = fopen64 (ETC_SHELLS, "rt"))) { if (def_shells[shell_index]) - return strcpy (buf, def_shells[shell_index++]); + return strcpy (buf, def_shells[shell_index++]); return NULL; } /* Skip white space characters. */ diff --git a/winsup/cygwin/termios.cc b/winsup/cygwin/termios.cc index 77a4e5bfe..e046984b6 100644 --- a/winsup/cygwin/termios.cc +++ b/winsup/cygwin/termios.cc @@ -119,8 +119,6 @@ tcsetattr (int fd, int a, const struct termios *t) while (1) { - sigframe thisframe (mainthread); - res = -1; cygheap_fdget cfd (fd); if (cfd < 0) @@ -148,7 +146,7 @@ tcsetattr (int fd, int a, const struct termios *t) e = get_errno (); break; case bg_signalled: - if (thisframe.call_signal_handler ()) + if (call_signal_handler_now ()) continue; res = -1; /* fall through intentionally */ diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index eeaa4ba4d..db12e5cb7 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -36,12 +36,14 @@ details. */ #include #include #include "pinfo.h" +#include "sigproc.h" #include "perprocess.h" #include "security.h" -#include "exceptions.h" +#include "cygtls.h" #include #include #include +#include #include extern int threadsafe; @@ -191,7 +193,6 @@ MTinterface::fixup_after_fork (void) { pthread_key::fixup_after_fork (); -#ifndef __SIGNALS_ARE_MULTITHREADED__ /* As long as the signal handling not multithreaded switch reents storage back to _impure_ptr for the mainthread to support fork from threads other than the mainthread */ @@ -199,9 +200,8 @@ MTinterface::fixup_after_fork (void) reents._winsup = &winsup_reent; winsup_reent._process_logmask = LOG_UPTO (LOG_DEBUG); reent_key.set (&reents); -#endif - threadcount = 1; + threadcount = 0; pthread::init_mainthread (); pthread::fixup_after_fork (); @@ -225,7 +225,15 @@ pthread::init_mainthread () api_fatal ("failed to create mainthread object"); } - thread->init_current_thread (); + thread->cygtls = &_my_tls; + _my_tls.tid = thread; + thread->thread_id = GetCurrentThreadId (); + if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), + GetCurrentProcess (), &thread->win32_obj_id, + 0, FALSE, DUPLICATE_SAME_ACCESS)) + thread->win32_obj_id = NULL; + thread->set_tls_self_pointer (); + thread->postcreate (); } pthread * @@ -238,9 +246,9 @@ pthread::self () } void -pthread::set_tls_self_pointer (pthread *thisThread) +pthread::set_tls_self_pointer () { - MT_INTERFACE->thread_self_key.set (thisThread); + MT_INTERFACE->thread_self_key.set (this); } pthread * @@ -274,12 +282,6 @@ pthread::~pthread () threads.remove (this); } -void -pthread::set_thread_id_to_current () -{ - thread_id = GetCurrentThreadId (); -} - void pthread::precreate (pthread_attr *newattr) { @@ -334,7 +336,7 @@ pthread::create (void *(*func) (void *), pthread_attr *newattr, if (!win32_obj_id) { - thread_printf ("CreateThread failed: this %p LastError %E", this); + thread_printf ("CreateThread failed: this %p, %E", this); magic = 0; } else @@ -347,6 +349,15 @@ pthread::create (void *(*func) (void *), pthread_attr *newattr, void pthread::postcreate () { + cancel_event = ::CreateEvent (&sec_none_nih, TRUE, FALSE, NULL); + if (!cancel_event) + { + system_printf ("couldn't create cancel event for main thread, %E"); + /* we need the event for correct behaviour */ + magic = 0; + return; + } + valid = true; InterlockedIncrement (&MT_INTERFACE->threadcount); @@ -737,19 +748,6 @@ pthread::get_thread_id () return thread_id; } -void -pthread::init_current_thread () -{ - cancel_event = ::CreateEvent (&sec_none_nih, TRUE, FALSE, NULL); - if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (), - GetCurrentProcess (), &win32_obj_id, - 0, FALSE, DUPLICATE_SAME_ACCESS)) - win32_obj_id = NULL; - set_thread_id_to_current (); - set_tls_self_pointer (this); - valid = true; -} - void pthread::_fixup_after_fork () { @@ -1892,27 +1890,19 @@ void * pthread::thread_init_wrapper (void *_arg) { // Setup the local/global storage of this thread - + __uint64_t padding[CYGTLS_PADSIZE]; pthread *thread = (pthread *) _arg; + thread->cygtls = _my_tls.init (padding, &thread); + _my_tls.tid = thread; + + exception_list cygwin_except_entry; + init_exceptions (&cygwin_except_entry); /* Initialize SIGSEGV handling, etc. */ + + thread->set_tls_self_pointer (); struct __reent_t local_reent; struct _winsup_t local_winsup; struct _reent local_clib; - struct sigaction _sigs[NSIG]; - sigset_t _sig_mask; /* one set for everything to ignore. */ - - /* According to onno@stack.urc.tue.nl, the exception handler record must - be on the stack. */ - exception_list cygwin_except_entry; - - /* Initialize SIGSEGV handling, etc. */ - init_exceptions (&cygwin_except_entry); - - // setup signal structures - thread->sigs = _sigs; - thread->sigmask = &_sig_mask; - thread->sigtodo = NULL; - memset (&local_winsup, 0, sizeof (struct _winsup_t)); local_reent.init_clib (local_clib); @@ -1922,9 +1912,6 @@ pthread::thread_init_wrapper (void *_arg) MT_INTERFACE->reent_key.set (&local_reent); - thread->set_thread_id_to_current (); - set_tls_self_pointer (thread); - thread->mutex.lock (); // if thread is detached force cleanup on exit if (thread->attr.joinable == PTHREAD_CREATE_DETACHED && thread->joiner == NULL) @@ -1943,13 +1930,6 @@ pthread::thread_init_wrapper (void *_arg) void *ret = thread->function (thread->arg); thread->exit (ret); - -#if 0 -// ??? This code only runs if the thread exits by returning. -// it's all now in __pthread_exit (); -#endif - /* never reached */ - return 0; } bool @@ -1970,7 +1950,6 @@ int pthread::create (pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg) { - DECLARE_TLS_STORAGE; if (attr && !pthread_attr::is_good_object (attr)) return EINVAL; @@ -2904,7 +2883,7 @@ pthread_kill (pthread_t thread, int sig) if (!pthread::is_good_object (&thread)) return EINVAL; - int rval = raise (sig); + int rval = sig ? sig_send (NULL, sig, thread->cygtls) : 0; // unlock myself return rval; @@ -2913,11 +2892,7 @@ pthread_kill (pthread_t thread, int sig) extern "C" int pthread_sigmask (int operation, const sigset_t *set, sigset_t *old_set) { - int rval = sigprocmask (operation, set, old_set); - - // unlock this myself - - return rval; + return handle_sigprocmask (operation, set, old_set, _my_tls.sigmask); } /* ID */ diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index 364ed3902..5dd9857fb 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -253,7 +253,7 @@ List_remove (fast_mutex &mx, list_node *&head, list_node *node) } mx.unlock (); } - + template class List { @@ -305,7 +305,7 @@ protected: list_node *head; }; -class pthread_key:public verifyable_object +class pthread_key: public verifyable_object { public: static bool is_good_object (pthread_key_t const *); @@ -343,7 +343,7 @@ private: void *fork_buf; }; -class pthread_attr:public verifyable_object +class pthread_attr: public verifyable_object { public: static bool is_good_object(pthread_attr_t const *); @@ -357,7 +357,7 @@ public: ~pthread_attr (); }; -class pthread_mutexattr:public verifyable_object +class pthread_mutexattr: public verifyable_object { public: static bool is_good_object(pthread_mutexattr_t const *); @@ -367,7 +367,7 @@ public: ~pthread_mutexattr (); }; -class pthread_mutex:public verifyable_object +class pthread_mutex: public verifyable_object { public: static bool is_good_object (pthread_mutex_t const *); @@ -448,7 +448,8 @@ private: #define WAIT_CANCELED (WAIT_OBJECT_0 + 1) -class pthread:public verifyable_object +class _threadinfo; +class pthread: public verifyable_object { public: HANDLE win32_obj_id; @@ -459,13 +460,10 @@ public: bool valid; bool suspended; int cancelstate, canceltype; + _threadinfo *cygtls; HANDLE cancel_event; pthread_t joiner; - /* signal handling */ - struct sigaction *sigs; - sigset_t *sigmask; - LONG *sigtodo; virtual void create (void *(*)(void *), pthread_attr *, void *); pthread (); @@ -488,7 +486,7 @@ public: static int suspend (pthread_t * thread); static int resume (pthread_t * thread); - virtual void exit (void *value_ptr); + virtual void exit (void *value_ptr) __attribute__ ((noreturn)); virtual int cancel (); @@ -504,7 +502,7 @@ public: virtual void pop_cleanup_handler (int const execute); static pthread* self (); - static void *thread_init_wrapper (void *); + static void *thread_init_wrapper (void *) __attribute__ ((noreturn)); virtual unsigned long getsequence_np(); @@ -545,12 +543,10 @@ private: void pop_all_cleanup_handlers (void); void precreate (pthread_attr *); void postcreate (); - void set_thread_id_to_current (); - static void set_tls_self_pointer (pthread *); + void set_tls_self_pointer (); static pthread *get_tls_self_pointer (); void cancel_self (); DWORD get_thread_id (); - void init_current_thread (); }; class pthread_null : public pthread @@ -563,7 +559,7 @@ class pthread_null : public pthread * as the ojbect is not verifyable */ void create (void *(*)(void *), pthread_attr *, void *); - void exit (void *value_ptr); + void exit (void *value_ptr) __attribute__ ((noreturn)); int cancel (); void testcancel (); int setcancelstate (int state, int *oldstate); @@ -577,7 +573,7 @@ class pthread_null : public pthread static pthread_null _instance; }; -class pthread_condattr:public verifyable_object +class pthread_condattr: public verifyable_object { public: static bool is_good_object(pthread_condattr_t const *); @@ -587,7 +583,7 @@ public: ~pthread_condattr (); }; -class pthread_cond:public verifyable_object +class pthread_cond: public verifyable_object { public: static bool is_good_object (pthread_cond_t const *); @@ -628,7 +624,7 @@ private: static fast_mutex cond_initialization_lock; }; -class pthread_rwlockattr:public verifyable_object +class pthread_rwlockattr: public verifyable_object { public: static bool is_good_object(pthread_rwlockattr_t const *); @@ -638,7 +634,7 @@ public: ~pthread_rwlockattr (); }; -class pthread_rwlock:public verifyable_object +class pthread_rwlock: public verifyable_object { public: static bool is_good_object (pthread_rwlock_t const *); @@ -717,7 +713,7 @@ public: }; /* shouldn't be here */ -class semaphore:public verifyable_object +class semaphore: public verifyable_object { public: static bool is_good_object(sem_t const *); @@ -767,9 +763,8 @@ public: class callback * next; }; -class MTinterface +struct MTinterface { -public: // General int concurrency; long int threadcount; @@ -789,12 +784,17 @@ public: void fixup_before_fork (void); void fixup_after_fork (void); +#if 1 // avoid initialization since zero is implied and + // only use of this class is static + MTinterface () : reent_key (NULL), thread_self_key (NULL) {} +#else MTinterface () : - concurrency (0), threadcount (1), + concurrency (0), threadcount (0), pthread_prepare (NULL), pthread_child (NULL), pthread_parent (NULL), reent_key (NULL), thread_self_key (NULL) { } +#endif }; #define MT_INTERFACE user_data->threadinterface diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index b35e775b8..33835b2b9 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -34,7 +34,7 @@ details. */ The information is used in shared.cc for the user shared. Final initialization occurs in uinfo_init */ void -cygheap_user::init() +cygheap_user::init () { char user_name[UNLEN + 1]; DWORD user_name_len = UNLEN + 1; @@ -70,7 +70,7 @@ cygheap_user::init() if (!SetTokenInformation (ptok, TokenOwner, &effec_cygsid, sizeof (cygsid))) debug_printf ("SetTokenInformation(TokenOwner): %E"); - /* Add the user in the default DACL if needed */ + /* Add the user in the default DACL if needed */ if (!GetTokenInformation (ptok, TokenDefaultDacl, pdacl, sizeof (pdacl_buf), &siz)) system_printf ("GetTokenInformation (TokenDefaultDacl): %E"); else if (pdacl->DefaultDacl) /* Running with security */ @@ -80,14 +80,14 @@ cygheap_user::init() for (int i = 0; i < pAcl->AceCount; i++) { - if (!GetAce(pAcl, i, (LPVOID *) &pAce)) + if (!GetAce (pAcl, i, (LPVOID *) &pAce)) system_printf ("GetAce: %E"); else if (pAce->Header.AceType == ACCESS_ALLOWED_ACE_TYPE && effec_cygsid == &pAce->SidStart) goto out; } pAcl->AclSize = &pdacl_buf[sizeof (pdacl_buf)] - (char *) pAcl; - if (!AddAccessAllowedAce (pAcl, ACL_REVISION, GENERIC_ALL, effec_cygsid)) + if (!AddAccessAllowedAce (pAcl, ACL_REVISION, GENERIC_ALL, effec_cygsid)) system_printf ("AddAccessAllowedAce: %E"); else if (FindFirstFreeAce (pAcl, (LPVOID *) &pAce), !(pAce)) debug_printf ("FindFirstFreeAce %E"); @@ -98,7 +98,7 @@ cygheap_user::init() system_printf ("SetTokenInformation (TokenDefaultDacl): %E"); } } - out: + out: CloseHandle (ptok); } @@ -115,7 +115,7 @@ internal_getlogin (cygheap_user &user) if (!pw && !(pw = internal_getpwnam (user.name ())) && !(pw = internal_getpwuid (DEFAULT_UID))) - debug_printf("user not found in augmented /etc/passwd"); + debug_printf ("user not found in augmented /etc/passwd"); else { myself->uid = pw->pw_uid; @@ -313,7 +313,7 @@ cygheap_user::ontherange (homebodies what, struct passwd *pw) sys_mbstowcs (wlogsrv, logsrv (), sizeof (wlogsrv) / sizeof (*wlogsrv)); sys_mbstowcs (wuser, winname (), sizeof (wuser) / sizeof (*wuser)); - if (!(ret = NetUserGetInfo (wlogsrv, wuser, 3,(LPBYTE *)&ui))) + if (!(ret = NetUserGetInfo (wlogsrv, wuser, 3, (LPBYTE *) &ui))) { sys_wcstombs (homepath_env_buf, ui->usri3_home_dir, CYG_MAX_PATH); if (!homepath_env_buf[0]) diff --git a/winsup/cygwin/wait.cc b/winsup/cygwin/wait.cc index 759afed25..79c8bf64a 100644 --- a/winsup/cygwin/wait.cc +++ b/winsup/cygwin/wait.cc @@ -55,7 +55,6 @@ wait4 (int intpid, int *status, int options, struct rusage *r) while (1) { sig_dispatch_pending (); - sigframe thisframe (mainthread); sawsig = 0; if (options & ~(WNOHANG | WUNTRACED)) { @@ -100,6 +99,7 @@ wait4 (int intpid, int *status, int options, struct rusage *r) if (w->status == -1) { + call_signal_handler_now (); set_sig_errno (EINTR); sawsig = 1; res = -1; @@ -115,7 +115,7 @@ wait4 (int intpid, int *status, int options, struct rusage *r) *status = w->status; done: - if (!sawsig || !thisframe.call_signal_handler ()) + if (!sawsig || !call_signal_handler_now ()) break; } diff --git a/winsup/cygwin/winbase.h b/winsup/cygwin/winbase.h index 351d320a4..3cbdb183d 100644 --- a/winsup/cygwin/winbase.h +++ b/winsup/cygwin/winbase.h @@ -57,12 +57,12 @@ ilockcmpexch (long *t, long v, long c) #undef InterlockedCompareExchange #define InterlockedCompareExchange ilockcmpexch +// extern char * volatile *__stackbase __asm__ ("%fs:4"); #ifndef EXPCGf #define DECLARE_TLS_STORAGE do {} while (0) #else #define DECLARE_TLS_STORAGE char **tls[4096] __attribute__ ((unused)) extern long tls_ix; -extern char * volatile *__stackbase __asm__ ("%fs:4"); extern __inline__ DWORD my_tlsalloc () diff --git a/winsup/cygwin/winsup.h b/winsup/cygwin/winsup.h index 9d6539898..937b46061 100644 --- a/winsup/cygwin/winsup.h +++ b/winsup/cygwin/winsup.h @@ -274,6 +274,8 @@ int __stdcall __check_invalid_read_ptr_errno (const void *s, unsigned sz) __attr __check_null_invalid_struct ((s), sizeof (*(s))) #define check_null_invalid_struct_errno(s) \ __check_null_invalid_struct_errno ((s), sizeof (*(s))) +#define check_invalid_read_struct_errno(s) \ + __check_invalid_read_ptr_errno ((s), sizeof (*(s))) struct iovec; ssize_t check_iovec_for_read (const struct iovec *, int) __attribute__ ((regparm(2))); @@ -296,7 +298,7 @@ int symlink_worker (const char *, const char *, bool, bool) class path_conv; int access_worker (path_conv&, int) __attribute__ ((regparm (2))); -extern "C" int __stdcall low_priority_sleep (DWORD) __attribute__ ((regparm (1))); +extern "C" int low_priority_sleep (DWORD) __attribute__ ((regparm (1))); #define SLEEP_0_STAY_LOW INFINITE size_t getshmlba (void); @@ -339,8 +341,6 @@ extern HANDLE hMainThread; extern HANDLE hMainProc; extern bool cygwin_testing; -extern unsigned _cygwin_testing_magic; -extern HMODULE cygwin_hmodule; extern char almost_null[];