From e0faf22f31c48fb27b43c1825897d26e58feafc4 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 3 May 2009 17:20:00 +0200 Subject: This is my initial working version. There is a bug in boot in this version: subhurd sometimes cannot boot. --- devnode/CVS/Entries | 6 + devnode/CVS/Repository | 1 + devnode/CVS/Root | 1 + devnode/CVS/Tag | 1 + devnode/ChangeLog | 34 +++++ devnode/ChangeLog~ | 25 ++++ devnode/Makefile | 32 +++++ devnode/README | 25 ++++ devnode/README~ | 25 ++++ devnode/device.defs | 1 + devnode/devnode.c | 337 +++++++++++++++++++++++++++++++++++++++++++ devnode/devnode.c~ | 337 +++++++++++++++++++++++++++++++++++++++++++ devnode/devnode.prof_d | 1 + devnode/notify.defs | 1 + devnode/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++++++++++++++++++ devnode/util.h | 42 ++++++ 16 files changed, 1252 insertions(+) create mode 100644 devnode/CVS/Entries create mode 100644 devnode/CVS/Repository create mode 100644 devnode/CVS/Root create mode 100644 devnode/CVS/Tag create mode 100644 devnode/ChangeLog create mode 100644 devnode/ChangeLog~ create mode 100644 devnode/Makefile create mode 100644 devnode/README create mode 100644 devnode/README~ create mode 100644 devnode/device.defs create mode 100644 devnode/devnode.c create mode 100644 devnode/devnode.c~ create mode 100644 devnode/devnode.prof_d create mode 100644 devnode/notify.defs create mode 100644 devnode/ourdevice.defs create mode 100644 devnode/util.h (limited to 'devnode') diff --git a/devnode/CVS/Entries b/devnode/CVS/Entries new file mode 100644 index 00000000..a8d9b644 --- /dev/null +++ b/devnode/CVS/Entries @@ -0,0 +1,6 @@ +/Makefile/1.1.2.1/Sun Aug 17 19:15:08 2008//Tzhengda-soc2008-virt-branch +/util.h/1.1.2.2/Thu Aug 28 19:25:34 2008//Tzhengda-soc2008-virt-branch +/ChangeLog/1.1.2.5/Fri Sep 26 22:26:32 2008//Tzhengda-soc2008-virt-branch +/README/1.1.2.2/Fri Sep 26 22:16:13 2008//Tzhengda-soc2008-virt-branch +/devnode.c/1.1.2.5/Fri Sep 26 22:10:58 2008//Tzhengda-soc2008-virt-branch +D diff --git a/devnode/CVS/Repository b/devnode/CVS/Repository new file mode 100644 index 00000000..2adffeb8 --- /dev/null +++ b/devnode/CVS/Repository @@ -0,0 +1 @@ +hurd/devnode diff --git a/devnode/CVS/Root b/devnode/CVS/Root new file mode 100644 index 00000000..a10aa66d --- /dev/null +++ b/devnode/CVS/Root @@ -0,0 +1 @@ +:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/devnode/CVS/Tag b/devnode/CVS/Tag new file mode 100644 index 00000000..7e454c6d --- /dev/null +++ b/devnode/CVS/Tag @@ -0,0 +1 @@ +Tzhengda-soc2008-virt-branch diff --git a/devnode/ChangeLog b/devnode/ChangeLog new file mode 100644 index 00000000..54ae55f4 --- /dev/null +++ b/devnode/ChangeLog @@ -0,0 +1,34 @@ +2008-09-26 Zheng Da + + * README: Update. + + * devnode.c (args_doc): New variable. + (options): Remove '-d' and change the description of '-n'. + (parse_opt): Get the device in ARGP_KEY_ARG instead of from '-d'. + (main): Set args_doc to the field of argp. + +2008-08-28 Zheng Da + + * devnode.c (ds_device_open): Return the error instead of stopping the + translator. + +2008-08-20 Zheng Da + + * devnode.c (ds_device_open): Test device_name before using it. + + * util.h (DEBUG): Remove the macro. + +2008-08-18 Zheng Da + + * README: New file. + + * devnode.c (options): Replace the option '-i' with '-d'. + (parse_opt): Handle the option '-d'. + +2008-08-17 Zheng Da + + * Makefile: New file. + + * util.h: New file. + + * devnode.c: New file. diff --git a/devnode/ChangeLog~ b/devnode/ChangeLog~ new file mode 100644 index 00000000..5efa8a5e --- /dev/null +++ b/devnode/ChangeLog~ @@ -0,0 +1,25 @@ +2008-08-28 Zheng Da + + * devnode.c (ds_device_open): Return the error instead of stopping the + translator. + +2008-08-20 Zheng Da + + * devnode.c (ds_device_open): Test device_name before using it. + + * util.h (DEBUG): Remove the macro. + +2008-08-18 Zheng Da + + * README: New file. + + * devnode.c (options): Replace the option '-i' with '-d'. + (parse_opt): Handle the option '-d'. + +2008-08-17 Zheng Da + + * Makefile: New file. + + * util.h: New file. + + * devnode.c: New file. diff --git a/devnode/Makefile b/devnode/Makefile new file mode 100644 index 00000000..f4522564 --- /dev/null +++ b/devnode/Makefile @@ -0,0 +1,32 @@ +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 2008 Free Software Foundation, Inc. +# This file is part of the GNU Hurd. +# +# The GNU Hurd is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# The GNU Hurd is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the GNU Hurd; see the file COPYING. If not, write to +# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +dir := devnode +makemode := server + +SRCS = devnode.c +LCLHDRS = util.h +DIST_FILES = ourdevice.defs notify.defs +HURDLIBS = ports trivfs fshelp shouldbeinlibc +target = devnode +MIGSTUBS = ourdeviceServer.o notifyServer.o +OBJS = $(SRCS:.c=.o) $(MIGSTUBS) + +include ../Makeconf + +ourdevice.defs: device.defs + $(CPP) $(CPPFLAGS) -x c $< | sed -e '/out[ ]*device[ ]*:[ ]*device_t/s/device_t/mach_port_send_t/' > $@ diff --git a/devnode/README b/devnode/README new file mode 100644 index 00000000..90ca27cc --- /dev/null +++ b/devnode/README @@ -0,0 +1,25 @@ +[Introduction] + +devnode is a translator that creates the device file for the kernel device. It provides another way for other programs to open the kernel device. +The device file should be created in /dev with the device name as its file name, so clients can find the device file easily. +Clients need to get the port to the devnode translator by calling file_name_lookup() and uses this port as a master device port to open the device by calling device_open(). The device name used in device_open() is specified by '-n' option of devnode. + + +[Usage] + +Usage: devnode [OPTION...] device +Hurd devnode translator. + + -n, --name=DEVICENAME Accept open from clients only with DEVICENAME + -M, --master_device=FILE Get a pseudo master device port + -?, --help Give this help list + --usage Give a short usage message + -V, --version Print program version + +The '-n' option specifies the device name used by clients in device_open(). It can be optional. If it's specified, clients must use the name to open the device. Otherwise, every device name used by clients in device_open() is acceptable. +The '-M' option specifies the file where devnode can get the master device port. This option can be useful to open the virtual interface created by eth-multiplexer, for example. + + +[Internal] + +devnode is very simple. It implements the server side functions in device.defs, so it can receive the request of opening a device from clients. Only ds_device_open is actually implemented, which opens the device and returns the port to the device. Normally, devnode shouldn't get other requests. diff --git a/devnode/README~ b/devnode/README~ new file mode 100644 index 00000000..5686da7b --- /dev/null +++ b/devnode/README~ @@ -0,0 +1,25 @@ +[Introduction] + +devnode is a translator that creates the device file for the kernel device. It provides another way for other programs to open the kernel device. +The device file should be created in /dev with the device name as its file name, so clients can find the device file easily. +Clients need to get the port to the devnode translator by calling file_name_lookup() and uses this port as a master device port to open the device by calling device_open(). The device name used in device_open() is specified by '-n' option of devnode. + + +[Usage] + +Usage: devnode [OPTION...] device +Hurd devnode translator. + + -n, --name=DEVICENAME Accept open from clients only with DEVICENAME + -M, --master_device=FILE Get a pseudo master device port + -?, --help Give this help list + --usage Give a short usage message + -V, --version Print program version + +The '-n' option specifies the device name used by clients in device_open(). It can be optional. If it's specified, clients must use the name to open the device. Otherwise, every device name used by clients in device_open() is acceptable. +The '-M' option specifies the file where devnode can get the master device port. This option can be useful to open the virtual interface created by eth-multiplexer, for example. + + +[Internal] + +devnode is very simple. It implements the server side functions in device.defs, so it can receive the request of opening a device from other programs. Only ds_device_open is actually implemented, which opens the device and returns the port to the device. Normally, devnode shouldn't get other requests. diff --git a/devnode/device.defs b/devnode/device.defs new file mode 100644 index 00000000..70472689 --- /dev/null +++ b/devnode/device.defs @@ -0,0 +1 @@ +#include diff --git a/devnode/devnode.c b/devnode/devnode.c new file mode 100644 index 00000000..7abf2bf8 --- /dev/null +++ b/devnode/devnode.c @@ -0,0 +1,337 @@ +/* + Copyright (C) 2008 Free Software Foundation, Inc. + Written by Zheng Da. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + The GNU Hurd is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the GNU Hurd; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* + * This program is a translator that sits on the top of the network + * interface and helps socket servers open the interface. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ourdevice_S.h" +#include "notify_S.h" +#include "util.h" + +/* The name of the network interface that the translator sits on. */ +static char *device_name; +/* The device name used by the socket servers. */ +static char *user_device_name; +/* The master device port for opening the interface. */ +static mach_port_t master_device; + +const char *argp_program_version = "devnode 0.1"; +const char *argp_program_bug_address = ""; +static const char args_doc[] = "device"; +static const char doc[] = "Hurd devnode translator."; +static const struct argp_option options[] = +{ + {"name", 'n', "DEVICENAME", 0, + "Define the device name used by clients in device_open()", 2}, + {"master-device", 'M', "FILE", 0, + "Get a pseudo master device port", 3}, + {0} +}; + +/* Port bucket we service requests on. */ +struct port_bucket *port_bucket; + +/* Trivfs hooks. */ +int trivfs_fstype = FSTYPE_MISC; +int trivfs_fsid = 0; +int trivfs_support_read = 0; +int trivfs_support_write = 0; +int trivfs_support_exec = 0; +int trivfs_allow_open = 0; + +struct port_class *trivfs_protid_portclasses[1]; +struct port_class *trivfs_cntl_portclasses[1]; +int trivfs_protid_nportclasses = 1; +int trivfs_cntl_nportclasses = 1; + +static int +devnode_demuxer (mach_msg_header_t *inp, + mach_msg_header_t *outp) +{ + extern int device_server (mach_msg_header_t *, mach_msg_header_t *); + extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); + return device_server (inp, outp) || notify_server (inp, outp) + || trivfs_demuxer (inp, outp); +} + +/* Implementation of notify interface */ +kern_return_t +do_mach_notify_port_deleted (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_msg_accepted (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_port_destroyed (mach_port_t notify, + mach_port_t port) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_no_senders (mach_port_t notify, + mach_port_mscount_t mscount) +{ + return ports_do_mach_notify_no_senders (notify, mscount); +} + +kern_return_t +do_mach_notify_send_once (mach_port_t notify) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_dead_name (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +/* Implementation of device interface */ +kern_return_t +ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t statu_cnt) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t *statuscnt) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_xxx_device_set_filter (device_t device, mach_port_t rec, + int pri, filter_array_t filt, size_t len) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_open (mach_port_t master_port, mach_port_t reply_port, + mach_msg_type_name_t reply_portPoly, + dev_mode_t mode, dev_name_t name, mach_port_t *device, + mach_msg_type_name_t *devicetype) +{ + error_t err; + + debug ("ds_device_open is called\n"); + + if ((user_device_name && strcmp (user_device_name, name)) + || device_name == NULL) + return D_NO_SUCH_DEVICE; + + err = device_open (master_device, mode, device_name, device); + *devicetype = MACH_MSG_TYPE_MOVE_SEND; + return err; +} + +kern_return_t +ds_device_close (device_t device) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_write (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, io_buf_ptr_t data, size_t datalen, + int *bytes_written) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_write_inband (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, io_buf_ptr_inband_t data, + size_t datalen, int *bytes_written) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_read (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, int bytes_wanted, + io_buf_ptr_t *data, size_t *datalen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_read_inband (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, int bytes_wanted, + io_buf_ptr_inband_t data, size_t *datalen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, + vm_size_t size, memory_object_t *pager, int unmap) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_set_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t statuslen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_get_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t *statuslen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_set_filter (device_t device, mach_port_t receive_port, + int priority, filter_array_t filter, size_t filterlen) +{ + return D_INVALID_OPERATION; +} + +void +trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) +{ +} + +error_t +trivfs_goaway (struct trivfs_control *fsys, int flags) +{ + int count; + + /* Stop new requests. */ + ports_inhibit_class_rpcs (trivfs_cntl_portclasses[0]); + ports_inhibit_class_rpcs (trivfs_protid_portclasses[0]); + + count = ports_count_class (trivfs_protid_portclasses[0]); + debug ("the number of ports alive: %d\n", count); + + if (count && !(flags & FSYS_GOAWAY_FORCE)) + { + /* We won't go away, so start things going again... */ + ports_enable_class (trivfs_protid_portclasses[0]); + ports_resume_class_rpcs (trivfs_cntl_portclasses[0]); + ports_resume_class_rpcs (trivfs_protid_portclasses[0]); + return EBUSY; + } + + mach_port_deallocate (mach_task_self (), master_device); + debug ("the translator is gone away\n"); + exit (0); +} + +static error_t +parse_opt (int opt, char *arg, struct argp_state *state) +{ + switch (opt) + { + case 'M': + master_device = file_name_lookup (arg, 0, 0); + if (master_device == MACH_PORT_NULL) + error (1, errno, "file_name_lookup"); + break; + case 'n': + user_device_name = arg; + break; + case ARGP_KEY_ARG: + device_name = arg; + break; + case ARGP_KEY_ERROR: + case ARGP_KEY_SUCCESS: + case ARGP_KEY_INIT: + break; + default: + return ARGP_ERR_UNKNOWN; + } + return 0; +} + +int +main (int argc, char *argv[]) +{ + error_t err; + mach_port_t bootstrap; + struct trivfs_control *fsys; + const struct argp argp = { options, parse_opt, args_doc, doc }; + + port_bucket = ports_create_bucket (); + trivfs_cntl_portclasses[0] = ports_create_class (trivfs_clean_cntl, 0); + trivfs_protid_portclasses[0] = ports_create_class (trivfs_clean_protid, 0); + + argp_parse (&argp, argc, argv, 0, 0, 0); + + task_get_bootstrap_port (mach_task_self (), &bootstrap); + if (bootstrap == MACH_PORT_NULL) + error (1, 0, "must be started as a translator"); + + if (master_device == MACH_PORT_NULL) + { + err = get_privileged_ports (0, &master_device); + if (err) + error (1, err, "get_privileged_ports"); + } + + /* Reply to our parent. */ + err = trivfs_startup (bootstrap, 0, + trivfs_cntl_portclasses[0], port_bucket, + trivfs_protid_portclasses[0], port_bucket, &fsys); + mach_port_deallocate (mach_task_self (), bootstrap); + if (err) + error (1, err, "Contacting parent"); + + /* Launch. */ + do + { + ports_manage_port_operations_one_thread (port_bucket, + devnode_demuxer, 0); + } while (trivfs_goaway (fsys, 0)); + return 0; +} diff --git a/devnode/devnode.c~ b/devnode/devnode.c~ new file mode 100644 index 00000000..5b85fcb5 --- /dev/null +++ b/devnode/devnode.c~ @@ -0,0 +1,337 @@ +/* + Copyright (C) 2008 Free Software Foundation, Inc. + Written by Zheng Da. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + The GNU Hurd is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the GNU Hurd; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* + * This program is a translator that sits on the top of the network + * interface and helps socket servers open the interface. + */ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "ourdevice_S.h" +#include "notify_S.h" +#include "util.h" + +/* The name of the network interface that the translator sits on. */ +static char *device_name; +/* The device name used by the socket servers. */ +static char *user_device_name; +/* The master device port for opening the interface. */ +static mach_port_t master_device; + +const char *argp_program_version = "devnode 0.1"; +const char *argp_program_bug_address = ""; +static const char args_doc[] = "device"; +static const char doc[] = "Hurd devnode translator."; +static const struct argp_option options[] = +{ + {"name", 'n', "DEVICENAME", 0, + "The device name used by clients in device_open()", 2}, + {"master-device", 'M', "FILE", 0, + "Get a pseudo master device port", 3}, + {0} +}; + +/* Port bucket we service requests on. */ +struct port_bucket *port_bucket; + +/* Trivfs hooks. */ +int trivfs_fstype = FSTYPE_MISC; +int trivfs_fsid = 0; +int trivfs_support_read = 0; +int trivfs_support_write = 0; +int trivfs_support_exec = 0; +int trivfs_allow_open = 0; + +struct port_class *trivfs_protid_portclasses[1]; +struct port_class *trivfs_cntl_portclasses[1]; +int trivfs_protid_nportclasses = 1; +int trivfs_cntl_nportclasses = 1; + +static int +devnode_demuxer (mach_msg_header_t *inp, + mach_msg_header_t *outp) +{ + extern int device_server (mach_msg_header_t *, mach_msg_header_t *); + extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); + return device_server (inp, outp) || notify_server (inp, outp) + || trivfs_demuxer (inp, outp); +} + +/* Implementation of notify interface */ +kern_return_t +do_mach_notify_port_deleted (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_msg_accepted (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_port_destroyed (mach_port_t notify, + mach_port_t port) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_no_senders (mach_port_t notify, + mach_port_mscount_t mscount) +{ + return ports_do_mach_notify_no_senders (notify, mscount); +} + +kern_return_t +do_mach_notify_send_once (mach_port_t notify) +{ + return EOPNOTSUPP; +} + +kern_return_t +do_mach_notify_dead_name (mach_port_t notify, + mach_port_t name) +{ + return EOPNOTSUPP; +} + +/* Implementation of device interface */ +kern_return_t +ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t statu_cnt) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t *statuscnt) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_xxx_device_set_filter (device_t device, mach_port_t rec, + int pri, filter_array_t filt, size_t len) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_open (mach_port_t master_port, mach_port_t reply_port, + mach_msg_type_name_t reply_portPoly, + dev_mode_t mode, dev_name_t name, mach_port_t *device, + mach_msg_type_name_t *devicetype) +{ + error_t err; + + debug ("ds_device_open is called\n"); + + if ((user_device_name && strcmp (user_device_name, name)) + || device_name == NULL) + return D_NO_SUCH_DEVICE; + + err = device_open (master_device, mode, device_name, device); + *devicetype = MACH_MSG_TYPE_MOVE_SEND; + return err; +} + +kern_return_t +ds_device_close (device_t device) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_write (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, io_buf_ptr_t data, size_t datalen, + int *bytes_written) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_write_inband (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, io_buf_ptr_inband_t data, + size_t datalen, int *bytes_written) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_read (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, int bytes_wanted, + io_buf_ptr_t *data, size_t *datalen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_read_inband (device_t device, mach_port_t reply_port, + mach_msg_type_name_t reply_type, dev_mode_t mode, + recnum_t recnum, int bytes_wanted, + io_buf_ptr_inband_t data, size_t *datalen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, + vm_size_t size, memory_object_t *pager, int unmap) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_set_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t statuslen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_get_status (device_t device, dev_flavor_t flavor, + dev_status_t status, size_t *statuslen) +{ + return D_INVALID_OPERATION; +} + +kern_return_t +ds_device_set_filter (device_t device, mach_port_t receive_port, + int priority, filter_array_t filter, size_t filterlen) +{ + return D_INVALID_OPERATION; +} + +void +trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) +{ +} + +error_t +trivfs_goaway (struct trivfs_control *fsys, int flags) +{ + int count; + + /* Stop new requests. */ + ports_inhibit_class_rpcs (trivfs_cntl_portclasses[0]); + ports_inhibit_class_rpcs (trivfs_protid_portclasses[0]); + + count = ports_count_class (trivfs_protid_portclasses[0]); + debug ("the number of ports alive: %d\n", count); + + if (count && !(flags & FSYS_GOAWAY_FORCE)) + { + /* We won't go away, so start things going again... */ + ports_enable_class (trivfs_protid_portclasses[0]); + ports_resume_class_rpcs (trivfs_cntl_portclasses[0]); + ports_resume_class_rpcs (trivfs_protid_portclasses[0]); + return EBUSY; + } + + mach_port_deallocate (mach_task_self (), master_device); + debug ("the translator is gone away\n"); + exit (0); +} + +static error_t +parse_opt (int opt, char *arg, struct argp_state *state) +{ + switch (opt) + { + case 'M': + master_device = file_name_lookup (arg, 0, 0); + if (master_device == MACH_PORT_NULL) + error (1, errno, "file_name_lookup"); + break; + case 'n': + user_device_name = arg; + break; + case ARGP_KEY_ARG: + device_name = arg; + break; + case ARGP_KEY_ERROR: + case ARGP_KEY_SUCCESS: + case ARGP_KEY_INIT: + break; + default: + return ARGP_ERR_UNKNOWN; + } + return 0; +} + +int +main (int argc, char *argv[]) +{ + error_t err; + mach_port_t bootstrap; + struct trivfs_control *fsys; + const struct argp argp = { options, parse_opt, args_doc, doc }; + + port_bucket = ports_create_bucket (); + trivfs_cntl_portclasses[0] = ports_create_class (trivfs_clean_cntl, 0); + trivfs_protid_portclasses[0] = ports_create_class (trivfs_clean_protid, 0); + + argp_parse (&argp, argc, argv, 0, 0, 0); + + task_get_bootstrap_port (mach_task_self (), &bootstrap); + if (bootstrap == MACH_PORT_NULL) + error (1, 0, "must be started as a translator"); + + if (master_device == MACH_PORT_NULL) + { + err = get_privileged_ports (0, &master_device); + if (err) + error (1, err, "get_privileged_ports"); + } + + /* Reply to our parent. */ + err = trivfs_startup (bootstrap, 0, + trivfs_cntl_portclasses[0], port_bucket, + trivfs_protid_portclasses[0], port_bucket, &fsys); + mach_port_deallocate (mach_task_self (), bootstrap); + if (err) + error (1, err, "Contacting parent"); + + /* Launch. */ + do + { + ports_manage_port_operations_one_thread (port_bucket, + devnode_demuxer, 0); + } while (trivfs_goaway (fsys, 0)); + return 0; +} diff --git a/devnode/devnode.prof_d b/devnode/devnode.prof_d new file mode 100644 index 00000000..2e474391 --- /dev/null +++ b/devnode/devnode.prof_d @@ -0,0 +1 @@ +devnode.prof: devnode_p.o ourdeviceServer_p.o notifyServer_p.o ../libports/libports_p.a ../libtrivfs/libtrivfs_p.a ../libfshelp/libfshelp_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a diff --git a/devnode/notify.defs b/devnode/notify.defs new file mode 100644 index 00000000..2014be5c --- /dev/null +++ b/devnode/notify.defs @@ -0,0 +1 @@ +#include diff --git a/devnode/ourdevice.defs b/devnode/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/devnode/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/devnode/util.h b/devnode/util.h new file mode 100644 index 00000000..2efc1ef5 --- /dev/null +++ b/devnode/util.h @@ -0,0 +1,42 @@ +/* + Copyright (C) 2008 Free Software Foundation, Inc. + Written by Zheng Da. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + The GNU Hurd is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the GNU Hurd; see the file COPYING. If not, write to + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef UTIL_H +#define UTIL_H + +#include + +#ifdef DEBUG + +#define debug(format, ...) do \ +{ \ + char buf[1024]; \ + snprintf (buf, 1024, "devnode: %s", format); \ + fprintf (stderr , buf, ## __VA_ARGS__); \ + fflush (stderr); \ +} while (0) + +#else + +#define debug(format, ...) do {} while (0) + +#endif + +#endif -- cgit v1.2.3 From b45568005e6b67d35caa0f03f7d54180b82a7a6f Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Tue, 4 May 2010 15:42:03 +0200 Subject: make devnode readable and writable. --- devnode/devnode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'devnode') diff --git a/devnode/devnode.c b/devnode/devnode.c index 7abf2bf8..55fd8d92 100644 --- a/devnode/devnode.c +++ b/devnode/devnode.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -67,7 +68,7 @@ int trivfs_fsid = 0; int trivfs_support_read = 0; int trivfs_support_write = 0; int trivfs_support_exec = 0; -int trivfs_allow_open = 0; +int trivfs_allow_open = O_READ | O_WRITE; struct port_class *trivfs_protid_portclasses[1]; struct port_class *trivfs_cntl_portclasses[1]; -- cgit v1.2.3 From a03e2da13bfbed30eedd589977595a5f3398a478 Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Tue, 4 May 2010 16:08:14 +0200 Subject: remove all temporary files created by vim. --- boot-proxy-exc/boot.c~ | 2149 ----------------------- boot-proxy-exc/exc_impl.c~ | 67 - boot-proxy-exc/mach_host_impl.c~ | 545 ------ boot-proxy-exc/mach_impl.c~ | 906 ---------- boot-proxy-exc/mach_port_impl.c~ | 377 ----- boot-proxy-exc/mach_proxy.c~ | 97 -- boot-proxy-exc/mach_proxy.h~ | 59 - boot-proxy-exc/util.h~ | 113 -- boot.backup1/Makefile~ | 56 - boot.backup1/boot.c~ | 2073 ----------------------- boot.backup1/exc_impl.c~ | 38 - boot.backup1/list.h~ | 40 - boot.backup1/mach_host_impl.c~ | 551 ------ boot.backup1/mach_impl.c~ | 869 ---------- boot.backup1/mach_port_impl.c~ | 378 ----- boot.backup1/mach_proxy.c~ | 68 - boot.backup1/mach_proxy.h~ | 54 - boot.backup1/ourmach.defs~ | 770 --------- boot.backup1/ourmach_host.defs~ | 381 ----- boot.backup1/ourmach_port.defs~ | 348 ---- boot.backup1/util.h~ | 96 -- configure.in~ | 252 --- devnode/ChangeLog~ | 25 - devnode/README~ | 25 - devnode/devnode.c~ | 337 ---- eth-filter.multi-thread/Makefile~ | 35 - eth-filter.multi-thread/filter.c~ | 878 ---------- eth-filter.multi-thread/filter.h~ | 60 - eth-filter.multi-thread/msg_queue.c~ | 224 --- eth-filter.multi-thread/msg_queue.h~ | 69 - eth-filter.multi-thread/tmp.patch~ | 49 - eth-filter.multi-thread/util.h~ | 73 - eth-filter/ChangeLog~ | 122 -- eth-filter/filter.c~ | 827 --------- eth-multiplexer/ChangeLog~ | 341 ---- eth-multiplexer/Makefile~ | 34 - eth-multiplexer/device_impl.c~ | 282 --- eth-multiplexer/ethernet.c~ | 143 -- eth-multiplexer/multiplexer.c~ | 190 --- eth-multiplexer/netfs_impl.c~ | 510 ------ eth-multiplexer/netfs_impl.h~ | 46 - eth-multiplexer/notify_impl.c~ | 70 - netfs-sample/._node.c~ | Bin 197 -> 0 bytes netfs-sample/filterfs.c~ | 1236 -------------- netfs-sample/node.c~ | 803 --------- pfinet.old/ethernet.c~ | 298 ---- pfinet.old/io-ops.c~ | 616 ------- pfinet.old/linux-src/net/core/dev.c~ | 2092 ----------------------- pfinet.old/linux-src/net/ipv4/ip_output.c~ | 1000 ----------- pfinet.old/linux-src/net/ipv4/tcp_input.c~ | 2449 --------------------------- pfinet.old/linux-src/net/ipv4/tcp_output.c~ | 1150 ------------- pfinet.old/pfinet.patch~ | 31 - pfinet.old/sched.c~ | 81 - pfinet.old/socket-ops.c~ | 546 ------ pfinet.old/tmp.patch~ | 146 -- pfinet.old/tunnel.c~ | 636 ------- proc_proxy/ChangeLog~ | 36 - 57 files changed, 25747 deletions(-) delete mode 100644 boot-proxy-exc/boot.c~ delete mode 100644 boot-proxy-exc/exc_impl.c~ delete mode 100644 boot-proxy-exc/mach_host_impl.c~ delete mode 100644 boot-proxy-exc/mach_impl.c~ delete mode 100644 boot-proxy-exc/mach_port_impl.c~ delete mode 100644 boot-proxy-exc/mach_proxy.c~ delete mode 100644 boot-proxy-exc/mach_proxy.h~ delete mode 100644 boot-proxy-exc/util.h~ delete mode 100644 boot.backup1/Makefile~ delete mode 100644 boot.backup1/boot.c~ delete mode 100644 boot.backup1/exc_impl.c~ delete mode 100644 boot.backup1/list.h~ delete mode 100644 boot.backup1/mach_host_impl.c~ delete mode 100644 boot.backup1/mach_impl.c~ delete mode 100644 boot.backup1/mach_port_impl.c~ delete mode 100644 boot.backup1/mach_proxy.c~ delete mode 100644 boot.backup1/mach_proxy.h~ delete mode 100644 boot.backup1/ourmach.defs~ delete mode 100644 boot.backup1/ourmach_host.defs~ delete mode 100644 boot.backup1/ourmach_port.defs~ delete mode 100644 boot.backup1/util.h~ delete mode 100644 configure.in~ delete mode 100644 devnode/ChangeLog~ delete mode 100644 devnode/README~ delete mode 100644 devnode/devnode.c~ delete mode 100644 eth-filter.multi-thread/Makefile~ delete mode 100644 eth-filter.multi-thread/filter.c~ delete mode 100644 eth-filter.multi-thread/filter.h~ delete mode 100644 eth-filter.multi-thread/msg_queue.c~ delete mode 100644 eth-filter.multi-thread/msg_queue.h~ delete mode 100644 eth-filter.multi-thread/tmp.patch~ delete mode 100644 eth-filter.multi-thread/util.h~ delete mode 100644 eth-filter/ChangeLog~ delete mode 100644 eth-filter/filter.c~ delete mode 100644 eth-multiplexer/ChangeLog~ delete mode 100644 eth-multiplexer/Makefile~ delete mode 100644 eth-multiplexer/device_impl.c~ delete mode 100644 eth-multiplexer/ethernet.c~ delete mode 100644 eth-multiplexer/multiplexer.c~ delete mode 100644 eth-multiplexer/netfs_impl.c~ delete mode 100644 eth-multiplexer/netfs_impl.h~ delete mode 100644 eth-multiplexer/notify_impl.c~ delete mode 100644 netfs-sample/._node.c~ delete mode 100644 netfs-sample/filterfs.c~ delete mode 100644 netfs-sample/node.c~ delete mode 100644 pfinet.old/ethernet.c~ delete mode 100644 pfinet.old/io-ops.c~ delete mode 100644 pfinet.old/linux-src/net/core/dev.c~ delete mode 100644 pfinet.old/linux-src/net/ipv4/ip_output.c~ delete mode 100644 pfinet.old/linux-src/net/ipv4/tcp_input.c~ delete mode 100644 pfinet.old/linux-src/net/ipv4/tcp_output.c~ delete mode 100644 pfinet.old/pfinet.patch~ delete mode 100644 pfinet.old/sched.c~ delete mode 100644 pfinet.old/socket-ops.c~ delete mode 100644 pfinet.old/tmp.patch~ delete mode 100644 pfinet.old/tunnel.c~ delete mode 100644 proc_proxy/ChangeLog~ (limited to 'devnode') diff --git a/boot-proxy-exc/boot.c~ b/boot-proxy-exc/boot.c~ deleted file mode 100644 index e7ce0f96..00000000 --- a/boot-proxy-exc/boot.c~ +++ /dev/null @@ -1,2149 +0,0 @@ -/* Load a task using the single server, and then run it - as if we were the kernel. - Copyright (C) 1993,94,95,96,97,98,99,2000,01,02,2006 - Free Software Foundation, Inc. - -This file is part of the GNU Hurd. - -The GNU Hurd is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -The GNU Hurd is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with the GNU Hurd; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* Written by Michael I. Bushnell. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "notify_S.h" -#include "ourdevice_S.h" -#include "io_S.h" -#include "device_reply_U.h" -#include "io_reply_U.h" -#include "term_S.h" -#include "bootstrap_S.h" -/* #include "tioctl_S.h" */ -#include "util.h" -#include "boot_script.h" -#include "mach_proxy.h" - -#include - -#ifdef UX -#undef STORE /* We can't use libstore when under UX. */ -#else -#define STORE -#endif - -#ifdef UX - -#include "ux.h" - -#else /* !UX */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static struct termios orig_tty_state; -static int isig; -static char *kernel_command_line; - -struct port_bucket *port_bucket; -struct port_class *task_portclass; -struct port_class *exc_portclass; -struct port_class *priv_host_portclass; -struct port_class *other_portclass; - -void destroy_priv_host (void *pi); - -static void -init_termstate () -{ - struct termios tty_state; - - if (tcgetattr (0, &tty_state) < 0) - error (10, errno, "tcgetattr"); - - orig_tty_state = tty_state; - cfmakeraw (&tty_state); - if (isig) - tty_state.c_lflag |= ISIG; - - if (tcsetattr (0, 0, &tty_state) < 0) - error (11, errno, "tcsetattr"); -} - -static void -restore_termstate () -{ - tcsetattr (0, 0, &orig_tty_state); -} - -#define host_fstat fstat -typedef struct stat host_stat_t; -#define host_exit exit - -#endif /* UX */ - -mach_port_t privileged_host_port, master_device_port, defpager; -mach_port_t pseudo_master_device_port; -mach_port_t receive_set; -mach_port_t pseudo_console, pseudo_root; -auth_t authserver; - -struct port_info *pseudo_priv_host_pi; - -struct store *root_store; - -spin_lock_t queuelock = SPIN_LOCK_INITIALIZER; -spin_lock_t readlock = SPIN_LOCK_INITIALIZER; - -mach_port_t php_child_name, psmdp_child_name, taskname; - -task_t child_task; -mach_port_t bootport; - -int console_mscount; - -vm_address_t fs_stack_base; -vm_size_t fs_stack_size; - -void init_termstate (); -void restore_termstate (); - -char *fsname; - -char bootstrap_args[100] = "-"; -char *bootdevice = 0; -char *bootscript = 0; - -boolean_t is_user = 0; - - -void safe_gets (char *buf, int buf_len) -{ - fgets (buf, buf_len, stdin); -} - -char *useropen_dir; - -int -useropen (const char *name, int flags, int mode) -{ - if (useropen_dir) - { - static int dlen; - if (!dlen) dlen = strlen (useropen_dir); - { - int len = strlen (name); - char try[dlen + 1 + len + 1]; - int fd; - memcpy (try, useropen_dir, dlen); - try[dlen] = '/'; - memcpy (&try[dlen + 1], name, len + 1); - fd = open (try, flags, mode); - if (fd >= 0) - return fd; - } - } - return open (name, flags, mode); -} - -int -request_server (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern int io_server (mach_msg_header_t *, mach_msg_header_t *); - extern int device_server (mach_msg_header_t *, mach_msg_header_t *); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - extern int term_server (mach_msg_header_t *, mach_msg_header_t *); -/* extern int tioctl_server (mach_msg_header_t *, mach_msg_header_t *); */ - extern int bootstrap_server (mach_msg_header_t *, mach_msg_header_t *); - extern boolean_t mach_host_server (mach_msg_header_t *InHeadP, - mach_msg_header_t *OutHeadP); - extern boolean_t mach_server (mach_msg_header_t *InHeadP, - mach_msg_header_t *OutHeadP); - extern void bootstrap_compat (); - -#if 0 - if (inp->msgh_local_port == bootport && boot_like_cmudef) - { - if (inp->msgh_id == 999999) - { - bootstrap_compat (inp, outp); - return 1; - } - else - return bootstrap_server (inp, outp); - } - else -#endif - return (io_server (inp, outp) - || device_server (inp, outp) - || notify_server (inp, outp) - || term_server (inp, outp) - /* || tioctl_server (inp, outp) */); -} - -int -mach_proxy_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern boolean_t mach_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t mach_host_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t mach_port_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t exc_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - return (mach_server (inp, outp) - || mach_host_server (inp, outp) - || mach_port_server (inp, outp) - || notify_server (inp, outp) - || exc_server (inp, outp)); -} - -void -mach_proxy_thread () -{ - ports_manage_port_operations_multithread (port_bucket, - mach_proxy_demuxer, - 30 * 1000, 0, 0); -} - -vm_address_t -load_image (task_t t, - char *file) -{ - int fd; - union - { - struct exec a; - Elf32_Ehdr e; - } hdr; - char msg[] = ": cannot open bootstrap file\n"; - - fd = useropen (file, O_RDONLY, 0); - - if (fd == -1) - { - write (2, file, strlen (file)); - write (2, msg, sizeof msg - 1); - task_terminate (t); - host_exit (1); - } - - read (fd, &hdr, sizeof hdr); - if (*(Elf32_Word *) hdr.e.e_ident == *(Elf32_Word *) "\177ELF") - { - Elf32_Phdr phdrs[hdr.e.e_phnum], *ph; - lseek (fd, hdr.e.e_phoff, SEEK_SET); - read (fd, phdrs, sizeof phdrs); - for (ph = phdrs; ph < &phdrs[sizeof phdrs/sizeof phdrs[0]]; ++ph) - if (ph->p_type == PT_LOAD) - { - vm_address_t buf; - vm_size_t offs = ph->p_offset & (ph->p_align - 1); - vm_size_t bufsz = round_page (ph->p_filesz + offs); - - buf = (vm_address_t) mmap (0, bufsz, - PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - - lseek (fd, ph->p_offset, SEEK_SET); - read (fd, (void *)(buf + offs), ph->p_filesz); - - ph->p_memsz = ((ph->p_vaddr + ph->p_memsz + ph->p_align - 1) - & ~(ph->p_align - 1)); - ph->p_vaddr &= ~(ph->p_align - 1); - ph->p_memsz -= ph->p_vaddr; - - vm_allocate (t, (vm_address_t*)&ph->p_vaddr, ph->p_memsz, 0); - vm_write (t, ph->p_vaddr, buf, bufsz); - munmap ((caddr_t) buf, bufsz); - vm_protect (t, ph->p_vaddr, ph->p_memsz, 0, - ((ph->p_flags & PF_R) ? VM_PROT_READ : 0) | - ((ph->p_flags & PF_W) ? VM_PROT_WRITE : 0) | - ((ph->p_flags & PF_X) ? VM_PROT_EXECUTE : 0)); - } - return hdr.e.e_entry; - } - else - { - /* a.out */ - int magic = N_MAGIC (hdr.a); - int headercruft; - vm_address_t base = 0x10000; - int rndamount, amount; - vm_address_t bsspagestart, bssstart; - char *buf; - - headercruft = sizeof (struct exec) * (magic == ZMAGIC); - - amount = headercruft + hdr.a.a_text + hdr.a.a_data; - rndamount = round_page (amount); - buf = mmap (0, rndamount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - lseek (fd, sizeof hdr.a - headercruft, SEEK_SET); - read (fd, buf, amount); - vm_allocate (t, &base, rndamount, 0); - vm_write (t, base, (vm_address_t) buf, rndamount); - if (magic != OMAGIC) - vm_protect (t, base, trunc_page (headercruft + hdr.a.a_text), - 0, VM_PROT_READ | VM_PROT_EXECUTE); - munmap ((caddr_t) buf, rndamount); - - bssstart = base + hdr.a.a_text + hdr.a.a_data + headercruft; - bsspagestart = round_page (bssstart); - vm_allocate (t, &bsspagestart, - hdr.a.a_bss - (bsspagestart - bssstart), 0); - - return hdr.a.a_entry; - } -} - - -void read_reply (); -void msg_thread (); - -/* Callbacks for boot_script.c; see boot_script.h. */ - -mach_port_t -boot_script_read_file (const char *filename) -{ - static const char msg[] = ": cannot open\n"; - int fd = useropen (filename, O_RDONLY, 0); - host_stat_t st; - error_t err; - mach_port_t memobj; - vm_address_t region; - - write (2, filename, strlen (filename)); - if (fd < 0) - { - write (2, msg, sizeof msg - 1); - host_exit (1); - } - else - write (2, msg + sizeof msg - 2, 1); - - host_fstat (fd, &st); - - err = default_pager_object_create (defpager, &memobj, - round_page (st.st_size)); - if (err) - { - static const char msg[] = "cannot create default-pager object\n"; - write (2, msg, sizeof msg - 1); - host_exit (1); - } - - region = 0; - vm_map (mach_task_self (), ®ion, round_page (st.st_size), - 0, 1, memobj, 0, 0, VM_PROT_ALL, VM_PROT_ALL, VM_INHERIT_NONE); - read (fd, (char *) region, st.st_size); - munmap ((caddr_t) region, round_page (st.st_size)); - - close (fd); - return memobj; -} - -int -boot_script_exec_cmd (void *hook, - mach_port_t task, char *path, int argc, - char **argv, char *strings, int stringlen) -{ - char *args, *p; - int arg_len, i; - size_t reg_size; - void *arg_pos; - vm_offset_t stack_start, stack_end; - vm_address_t startpc, str_start; - thread_t thread; - - write (2, path, strlen (path)); - for (i = 1; i < argc; ++i) - { - write (2, " ", 1); - write (2, argv[i], strlen (argv[i])); - } - write (2, "\r\n", 2); - - startpc = load_image (task, path); - arg_len = stringlen + (argc + 2) * sizeof (char *) + sizeof (integer_t); - arg_len += 5 * sizeof (int); - stack_end = VM_MAX_ADDRESS; - stack_start = VM_MAX_ADDRESS - 16 * 1024 * 1024; - vm_allocate (task, &stack_start, stack_end - stack_start, FALSE); - arg_pos = (void *) ((stack_end - arg_len) & ~(sizeof (natural_t) - 1)); - args = mmap (0, stack_end - trunc_page ((vm_offset_t) arg_pos), - PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - str_start = ((vm_address_t) arg_pos - + (argc + 2) * sizeof (char *) + sizeof (integer_t)); - p = args + ((vm_address_t) arg_pos & (vm_page_size - 1)); - *(int *) p = argc; - p = (void *) p + sizeof (int); - for (i = 0; i < argc; i++) - { - *(char **) p = argv[i] - strings + (char *) str_start; - p = (void *) p + sizeof (char *); - } - *(char **) p = 0; - p = (void *) p + sizeof (char *); - *(char **) p = 0; - p = (void *) p + sizeof (char *); - memcpy (p, strings, stringlen); - bzero (args, (vm_offset_t) arg_pos & (vm_page_size - 1)); - vm_write (task, trunc_page ((vm_offset_t) arg_pos), (vm_address_t) args, - stack_end - trunc_page ((vm_offset_t) arg_pos)); - munmap ((caddr_t) args, - stack_end - trunc_page ((vm_offset_t) arg_pos)); - - thread_create (task, &thread); -#ifdef i386_THREAD_STATE_COUNT - { - struct i386_thread_state regs; - reg_size = i386_THREAD_STATE_COUNT; - thread_get_state (thread, i386_THREAD_STATE, - (thread_state_t) ®s, ®_size); - regs.eip = (int) startpc; - regs.uesp = (int) arg_pos; - thread_set_state (thread, i386_THREAD_STATE, - (thread_state_t) ®s, reg_size); - } -#elif defined(ALPHA_THREAD_STATE_COUNT) - { - struct alpha_thread_state regs; - reg_size = ALPHA_THREAD_STATE_COUNT; - thread_get_state (thread, ALPHA_THREAD_STATE, - (thread_state_t) ®s, ®_size); - regs.r30 = (natural_t) arg_pos; - regs.pc = (natural_t) startpc; - thread_set_state (thread, ALPHA_THREAD_STATE, - (thread_state_t) ®s, reg_size); - } -#else -# error needs to be ported -#endif - - thread_resume (thread); - mach_port_deallocate (mach_task_self (), thread); - return 0; -} - -const char *argp_program_version = STANDARD_HURD_VERSION (boot); - -static struct argp_option options[] = -{ - { "boot-root", 'D', "DIR", 0, - "Root of a directory tree in which to find files specified in BOOT-SCRIPT" }, - { "single-user", 's', 0, 0, - "Boot in single user mode" }, - { "kernel-command-line", 'c', "COMMAND LINE", 0, - "Simulated multiboot command line to supply" }, - { "pause" , 'd', 0, 0, - "Pause for user confirmation at various times during booting" }, - { "isig", 'I', 0, 0, - "Do not disable terminal signals, so you can suspend and interrupt boot."}, - { "device-map", 'm', "DEBICENAME=DEVICEFILE", 0, - "Map the device in subhurd to the device in the main Hurd."}, - { "defpager", 'p', "PAGER TRANSLATOR", 0, - "Specify the default pager for subhurd."}, - { "user", 'u', 0, 0, "For normal user."}, - { 0 } -}; -static char args_doc[] = "BOOT-SCRIPT"; -static char doc[] = "Boot a second hurd"; - -struct dev_map -{ - char *name; - mach_port_t port; - struct dev_map *next; -}; - -static struct dev_map *dev_map_head; - -static struct dev_map *add_dev_map (char *dev_name, char *dev_file) -{ - struct dev_map *map = (struct dev_map *) malloc (sizeof (*map)); - - assert (map); - map->name = dev_name; - map->port = file_name_lookup (dev_file, 0, 0); - if (map->port == MACH_PORT_NULL) - error (1, errno, "file_name_lookup: %s", dev_file); - map->next = dev_map_head; - dev_map_head = map; - return map; -} - -static struct dev_map *lookup_dev (char *dev_name) -{ - struct dev_map *map; - - for (map = dev_map_head; map; map = map->next) - { - if (strcmp (map->name, dev_name) == 0) - return map; - } - return NULL; -} - -char *pager_file; - -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - char *dev_file; - - switch (key) - { - size_t len; - - case 'c': kernel_command_line = arg; break; - - case 'D': useropen_dir = arg; break; - - case 'I': isig = 1; break; - - case 's': case 'd': - len = strlen (bootstrap_args); - if (len >= sizeof bootstrap_args - 1) - argp_error (state, "Too many bootstrap args"); - bootstrap_args[len++] = key; - bootstrap_args[len] = '\0'; - break; - - case 'm': - dev_file = strchr (arg, '='); - if (dev_file == NULL) - return ARGP_ERR_UNKNOWN; - *dev_file = 0; - add_dev_map (arg, dev_file+1); - break; - - case 'p': - pager_file = arg; - break; - - case 'u': - is_user = 1; - break; - - case ARGP_KEY_ARG: - if (state->arg_num == 0) - bootscript = arg; - else - return ARGP_ERR_UNKNOWN; - break; - - case ARGP_KEY_INIT: - state->child_inputs[0] = state->input; break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -static void -sigint (int signo) -{ - int kill_task (struct task_info *task_pi) - { - task_terminate (task_pi->task_port); - return 0; - } - - info ("receives an INT"); - foreach_task (kill_task); - exit (0); -} - -void -init_signal () -{ - struct sigaction sa; - sa.sa_handler = sigint; - sa.sa_flags = 0; /* No SA_RESTART! */ - sigemptyset(&sa.sa_mask); - if (sigaction (SIGINT, &sa, NULL)) - error (2, errno, "cannot set SIGHUP handler"); -} - -void -init_kernel_task () -{ - error_t err; - task_t pseudo_task; - task_t pseudo_kernel_task; - process_t real_kernel_task_proc; - process_t proc; - extern int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task); - - err = task_create (mach_task_self (), 0, &pseudo_kernel_task); - if (err) - error (4, err, "cannot create the pseudo kernel task."); - - err = proc_task2proc (getproc (), pseudo_kernel_task, &proc); - if (err) - error (4, err, "cannot get the proc port for the pseudo kernel task."); - - err = task_set_bootstrap_port (pseudo_kernel_task, proc); - if (err) - error (4, err, "cannot set the pseudo kernel task's bootstrap port"); - - err = proc_pid2proc (getproc (), 2, &real_kernel_task_proc); - if (err) - error (4, err, "cannot get the kernel task's proc port"); - - vm_address_t kargv, kenvp; - err = proc_get_arg_locations (real_kernel_task_proc, &kargv, &kenvp); - if (err) - error (4, err, "cannot get the kernel task's argument"); - proc_set_arg_locations (proc, kargv, kenvp); - create_pseudo_task (pseudo_kernel_task, &pseudo_task); - // TODO the pseudo kernel task has to been destroyed after subhurd exits. -} - -FILE *logfile; - -int -main (int argc, char **argv, char **envp) -{ - error_t err; - mach_port_t foo; - char *buf = 0; - int i, len; - char *root_store_name; - const struct argp_child kids[] = { { &store_argp }, { 0 }}; - struct argp argp = { options, parse_opt, args_doc, doc, kids }; - struct store_argp_params store_argp_params = { 0 }; - mach_port_t subhurd_privileged_host_port = MACH_PORT_NULL; - - LOG_START (); - - argp_parse (&argp, argc, argv, 0, 0, &store_argp_params); - err = store_parsed_name (store_argp_params.result, &root_store_name); - if (err) - error (2, err, "store_parsed_name"); - - err = store_parsed_open (store_argp_params.result, 0, &root_store); - if (err) - error (4, err, "%s", root_store_name); - - init_signal (); - if (!is_user) - { - get_privileged_ports (&privileged_host_port, &master_device_port); - defpager = MACH_PORT_NULL; - err = vm_set_default_memory_manager (privileged_host_port, &defpager); - if (err) - error (4, err, "vm_set_default_memory_manager"); - subhurd_privileged_host_port = privileged_host_port; - } - else - { - port_bucket = ports_create_bucket (); - task_portclass = ports_create_class (clean_pseudo_task, 0); - priv_host_portclass = ports_create_class (destroy_priv_host, 0); - other_portclass = ports_create_class (0, 0); - init_kernel_task (); - cthread_detach (cthread_fork ((cthread_fn_t) mach_proxy_thread, - (any_t) 0)); - { - mach_port_t priv_host; - get_privileged_ports (&priv_host, NULL); - defpager = MACH_PORT_NULL; - err = vm_set_default_memory_manager (priv_host, &defpager); - if (err) - error (4, err, "vm_set_default_memory_manager"); - mach_port_deallocate (mach_task_self (), priv_host); - } -// if (pager_file == NULL) -// error (4, 0, "The default pager must be specified for subhurd."); -// defpager = file_name_lookup (pager_file, O_EXEC, 0); -// if (defpager == MACH_PORT_NULL) -// error (4, errno, "file_name_look: %s", pager_file); - - /* Initialize the pseudo privileged host port. */ - err = ports_create_port (priv_host_portclass, port_bucket, - sizeof (struct port_info), - &pseudo_priv_host_pi); - if (err) - error (4, err, "fail to create the pseudo privileged host port"); - subhurd_privileged_host_port = ports_get_send_right (pseudo_priv_host_pi); - ports_port_deref (pseudo_priv_host_pi); - } - - strcat (bootstrap_args, "f"); - - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_PORT_SET, - &receive_set); - - if (root_store->class == &store_device_class && root_store->name - && (root_store->flags & STORE_ENFORCED) - && root_store->num_runs == 1 && root_store->runs[0].start == 0) - /* Let known device nodes pass through directly. */ - bootdevice = root_store->name; - else - /* Pass a magic value that we can use to do I/O to ROOT_STORE. */ - { - bootdevice = "pseudo-root"; - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_root); - mach_port_move_member (mach_task_self (), pseudo_root, receive_set); - } - - /* Initialize the pseudo master device port. */ - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_master_device_port); - mach_port_insert_right (mach_task_self (), - pseudo_master_device_port, - pseudo_master_device_port, - MACH_MSG_TYPE_MAKE_SEND); - mach_port_move_member (mach_task_self (), pseudo_master_device_port, - receive_set); - mach_port_request_notification (mach_task_self (), pseudo_master_device_port, - MACH_NOTIFY_NO_SENDERS, 1, - pseudo_master_device_port, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - - /* Initialize the pseudo console port. */ - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_console); - mach_port_move_member (mach_task_self (), pseudo_console, receive_set); - mach_port_request_notification (mach_task_self (), pseudo_console, - MACH_NOTIFY_NO_SENDERS, 1, pseudo_console, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - - if (kernel_command_line == 0) - asprintf (&kernel_command_line, "%s %s root=%s", - argv[0], bootstrap_args, bootdevice); - - /* Initialize boot script variables. */ - if (boot_script_set_variable ("host-port", VAL_PORT, - (int) subhurd_privileged_host_port) - || boot_script_set_variable ("device-port", VAL_PORT, - (integer_t) pseudo_master_device_port) - || boot_script_set_variable ("kernel-command-line", VAL_STR, - (integer_t) kernel_command_line) - || boot_script_set_variable ("root-device", - VAL_STR, (integer_t) bootdevice) - || boot_script_set_variable ("boot-args", - VAL_STR, (integer_t) bootstrap_args)) - { - static const char msg[] = "error setting variable"; - - write (2, msg, strlen (msg)); - host_exit (1); - } - - /* Turn each `FOO=BAR' word in the command line into a boot script - variable ${FOO} with value BAR. */ - { - int len = strlen (kernel_command_line) + 1; - char *s = memcpy (alloca (len), kernel_command_line, len); - char *word; - - while ((word = strsep (&s, " \t")) != 0) - { - char *eq = strchr (word, '='); - if (eq == 0) - continue; - *eq++ = '\0'; - err = boot_script_set_variable (word, VAL_STR, (integer_t) eq); - if (err) - { - char *msg; - asprintf (&msg, "cannot set boot-script variable %s: %s\n", - word, boot_script_error_string (err)); - assert (msg); - write (2, msg, strlen (msg)); - free (msg); - host_exit (1); - } - } - } - - /* Parse the boot script. */ - { - char *p, *line; - static const char filemsg[] = "Can't open boot script\n"; - static const char memmsg[] = "Not enough memory\n"; - int amt, fd, err; - - fd = open (bootscript, O_RDONLY, 0); - if (fd < 0) - { - write (2, filemsg, sizeof (filemsg)); - host_exit (1); - } - p = buf = malloc (500); - if (!buf) - { - write (2, memmsg, sizeof (memmsg)); - host_exit (1); - } - len = 500; - amt = 0; - while (1) - { - i = read (fd, p, len - (p - buf)); - if (i <= 0) - break; - p += i; - amt += i; - if (p == buf + len) - { - char *newbuf; - - len += 500; - newbuf = realloc (buf, len); - if (!newbuf) - { - write (2, memmsg, sizeof (memmsg)); - host_exit (1); - } - p = newbuf + (p - buf); - buf = newbuf; - } - } - line = p = buf; - while (1) - { - while (p < buf + amt && *p != '\n') - p++; - *p = '\0'; - err = boot_script_parse_line (0, line); - if (err) - { - char *str; - int i; - - str = boot_script_error_string (err); - i = strlen (str); - write (2, str, i); - write (2, " in `", 5); - write (2, line, strlen (line)); - write (2, "'\n", 2); - host_exit (1); - } - if (p == buf + amt) - break; - line = ++p; - } - } - - if (index (bootstrap_args, 'd')) - { - static const char msg[] = "Pausing. . ."; - char c; - write (2, msg, sizeof (msg) - 1); - read (0, &c, 1); - } - - init_termstate (); - - /* The boot script has now been parsed into internal data structures. - Now execute its directives. */ - { - int err; - - err = boot_script_exec (); - if (err) - { - char *str = boot_script_error_string (err); - int i = strlen (str); - - write (2, str, i); - host_exit (1); - } - free (buf); - } - - mach_port_deallocate (mach_task_self (), pseudo_master_device_port); - if (is_user) - mach_port_deallocate (mach_task_self (), subhurd_privileged_host_port); - - cthread_detach (cthread_fork ((cthread_fn_t) msg_thread, (any_t) 0)); - - for (;;) - { - fd_set rmask; - FD_ZERO (&rmask); - FD_SET (0, &rmask); - if (select (1, &rmask, 0, 0, 0) == 1) - read_reply (); - else /* We hosed */ - error (5, errno, "select"); - } - - LOG_END (); -/* mach_msg_server (request_server, __vm_page_size * 2, receive_set); */ -} - -void -msg_thread() -{ - while (1) - mach_msg_server (request_server, 0, receive_set); -} - - -enum read_type -{ - DEV_READ, - DEV_READI, - IO_READ, -}; -struct qr -{ - enum read_type type; - mach_port_t reply_port; - mach_msg_type_name_t reply_type; - int amount; - struct qr *next; -}; -struct qr *qrhead, *qrtail; - -/* Queue a read for later reply. */ -kern_return_t -queue_read (enum read_type type, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int amount) -{ - struct qr *qr; - - qr = malloc (sizeof (struct qr)); - if (!qr) - return D_NO_MEMORY; - - spin_lock (&queuelock); - - qr->type = type; - qr->reply_port = reply_port; - qr->reply_type = reply_type; - qr->amount = amount; - qr->next = 0; - if (qrtail) - qrtail->next = qr; - else - qrhead = qrtail = qr; - - spin_unlock (&queuelock); - return D_SUCCESS; -} - -/* TRUE if there's data available on stdin, which should be used to satisfy - console read requests. */ -static int should_read = 0; - -/* Reply to a queued read. */ -void -read_reply () -{ - int avail; - struct qr *qr; - char * buf; - int amtread; - - /* By forcing SHOULD_READ to true before trying the lock, we ensure that - either we get the lock ourselves or that whoever currently holds the - lock will service this read when he unlocks it. */ - should_read = 1; - if (! spin_try_lock (&readlock)) - return; - - /* Since we're commited to servicing the read, no one else need do so. */ - should_read = 0; - - ioctl (0, FIONREAD, &avail); - if (!avail) - { - spin_unlock (&readlock); - return; - } - - spin_lock (&queuelock); - - if (!qrhead) - { - spin_unlock (&queuelock); - spin_unlock (&readlock); - return; - } - - qr = qrhead; - qrhead = qr->next; - if (qr == qrtail) - qrtail = 0; - - spin_unlock (&queuelock); - - if (qr->type == DEV_READ) - buf = mmap (0, qr->amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - else - buf = alloca (qr->amount); - amtread = read (0, buf, qr->amount); - - spin_unlock (&readlock); - - switch (qr->type) - { - case DEV_READ: - if (amtread >= 0) - ds_device_read_reply (qr->reply_port, qr->reply_type, 0, - (io_buf_ptr_t) buf, amtread); - else - ds_device_read_reply (qr->reply_port, qr->reply_type, errno, 0, 0); - break; - - case DEV_READI: - if (amtread >= 0) - ds_device_read_reply_inband (qr->reply_port, qr->reply_type, 0, - buf, amtread); - else - ds_device_read_reply_inband (qr->reply_port, qr->reply_type, errno, - 0, 0); - break; - - case IO_READ: - if (amtread >= 0) - io_read_reply (qr->reply_port, qr->reply_type, 0, - buf, amtread); - else - io_read_reply (qr->reply_port, qr->reply_type, errno, 0, 0); - break; - } - - free (qr); -} - -/* Unlock READLOCK, and also service any new read requests that it was - blocking. */ -static void -unlock_readlock () -{ - spin_unlock (&readlock); - while (should_read) - read_reply (); -} - -/* - * Handle bootstrap requests. - */ -/* These two functions from .../mk/bootstrap/default_pager.c. */ - -kern_return_t -do_bootstrap_privileged_ports(bootstrap, hostp, devicep) - mach_port_t bootstrap; - mach_port_t *hostp, *devicep; -{ - if (is_user) - /* I cannot use ports_get_right() here, - * because the port will be copied to the client. */ - *hostp = pseudo_priv_host_pi->port_right; - else - *hostp = privileged_host_port; - *devicep = pseudo_master_device_port; - return KERN_SUCCESS; -} - -void -bootstrap_compat(in, out) - mach_msg_header_t *in, *out; -{ - mig_reply_header_t *reply = (mig_reply_header_t *) out; - mach_msg_return_t mr; - - struct imsg { - mach_msg_header_t hdr; - mach_msg_type_t port_desc_1; - mach_port_t port_1; - mach_msg_type_t port_desc_2; - mach_port_t port_2; - } imsg; - - /* - * Send back the host and device ports. - */ - - imsg.hdr.msgh_bits = MACH_MSGH_BITS_COMPLEX | - MACH_MSGH_BITS(MACH_MSGH_BITS_REMOTE(in->msgh_bits), 0); - /* msgh_size doesn't need to be initialized */ - imsg.hdr.msgh_remote_port = in->msgh_remote_port; - imsg.hdr.msgh_local_port = MACH_PORT_NULL; - /* msgh_seqno doesn't need to be initialized */ - imsg.hdr.msgh_id = in->msgh_id + 100; /* this is a reply msg */ - - imsg.port_desc_1.msgt_name = MACH_MSG_TYPE_COPY_SEND; - imsg.port_desc_1.msgt_size = (sizeof(mach_port_t) * 8); - imsg.port_desc_1.msgt_number = 1; - imsg.port_desc_1.msgt_inline = TRUE; - imsg.port_desc_1.msgt_longform = FALSE; - imsg.port_desc_1.msgt_deallocate = FALSE; - imsg.port_desc_1.msgt_unused = 0; - - if (is_user) - imsg.port_1 = pseudo_priv_host_pi->port_right; - else - imsg.port_1 = privileged_host_port; - - imsg.port_desc_2 = imsg.port_desc_1; - - imsg.port_desc_2.msgt_name = MACH_MSG_TYPE_MAKE_SEND; - imsg.port_2 = pseudo_master_device_port; - - /* - * Send the reply message. - * (mach_msg_server can not do this, because the reply - * is not in standard format.) - */ - - mr = mach_msg(&imsg.hdr, MACH_SEND_MSG, - sizeof imsg, 0, MACH_PORT_NULL, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); - if (mr != MACH_MSG_SUCCESS) - (void) mach_port_deallocate(mach_task_self (), - imsg.hdr.msgh_remote_port); - - /* - * Tell mach_msg_server to do nothing. - */ - - reply->RetCode = MIG_NO_REPLY; -} - -/* Implementation of device interface */ - -kern_return_t -ds_device_open (mach_port_t master_port, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - dev_name_t name, - mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - struct dev_map *map; - - if (master_port != pseudo_master_device_port) - return D_INVALID_OPERATION; - - debug ("open %s", name); - if (!strcmp (name, "console")) - { -#if 0 - mach_port_insert_right (mach_task_self (), pseudo_console, - pseudo_console, MACH_MSG_TYPE_MAKE_SEND); - console_send_rights++; -#endif - console_mscount++; - *device = pseudo_console; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - return 0; - } - else if (strcmp (name, "pseudo-root") == 0) - /* Magic root device. */ - { - *device = pseudo_root; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - return 0; - } - - map = lookup_dev (name); - if (map) - { - error_t err; - *devicetype = MACH_MSG_TYPE_MOVE_SEND; - err = device_open (map->port, mode, "", device); - return err; - } - - if (is_user) - return D_NO_SUCH_DEVICE; - else - { - *devicetype = MACH_MSG_TYPE_MOVE_SEND; - return device_open (master_device_port, mode, name, device); - } -} - -kern_return_t -ds_device_close (device_t device) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return 0; -} - -kern_return_t -ds_device_write (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - io_buf_ptr_t data, - size_t datalen, - int *bytes_written) -{ - if (device == pseudo_console) - { -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *bytes_written = write (1, data, datalen); - - return (*bytes_written == -1 ? D_IO_ERROR : D_SUCCESS); - } - else if (device == pseudo_root) - { - size_t wrote; - if (store_write (root_store, recnum, data, datalen, &wrote) != 0) - return D_IO_ERROR; - *bytes_written = wrote; - return D_SUCCESS; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_write_inband (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - io_buf_ptr_inband_t data, - size_t datalen, - int *bytes_written) -{ - if (device == pseudo_console) - { -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *bytes_written = write (1, data, datalen); - - return (*bytes_written == -1 ? D_IO_ERROR : D_SUCCESS); - } - else if (device == pseudo_root) - { - size_t wrote; - if (store_write (root_store, recnum, data, datalen, &wrote) != 0) - return D_IO_ERROR; - *bytes_written = wrote; - return D_SUCCESS; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_read (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - int bytes_wanted, - io_buf_ptr_t *data, - size_t *datalen) -{ - if (device == pseudo_console) - { - int avail; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - *data = mmap (0, bytes_wanted, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - *datalen = read (0, *data, bytes_wanted); - unlock_readlock (); - return (*datalen == -1 ? D_IO_ERROR : D_SUCCESS); - } - else - { - kern_return_t err; - - unlock_readlock (); - err = queue_read (DEV_READ, reply_port, reply_type, bytes_wanted); - if (err) - return err; - return MIG_NO_REPLY; - } - } - else if (device == pseudo_root) - { - *datalen = 0; - return - (store_read (root_store, recnum, bytes_wanted, (void **)data, datalen) == 0 - ? D_SUCCESS - : D_IO_ERROR); - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_read_inband (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - int bytes_wanted, - io_buf_ptr_inband_t data, - size_t *datalen) -{ - if (device == pseudo_console) - { - int avail; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - *datalen = read (0, data, bytes_wanted); - unlock_readlock (); - return (*datalen == -1 ? D_IO_ERROR : D_SUCCESS); - } - else - { - kern_return_t err; - - unlock_readlock (); - err = queue_read (DEV_READI, reply_port, reply_type, bytes_wanted); - if (err) - return err; - return MIG_NO_REPLY; - } - } - else if (device == pseudo_root) - { - error_t err; - void *returned = data; - - *datalen = bytes_wanted; - err = - store_read (root_store, recnum, bytes_wanted, (void **)&returned, datalen); - - if (! err) - { - if (returned != data) - { - bcopy (returned, (void *)data, *datalen); - munmap ((caddr_t) returned, *datalen); - } - return D_SUCCESS; - } - else - return D_IO_ERROR; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_xxx_device_set_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t statu_cnt) -{ - if (device != pseudo_console) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t *statuscnt) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, - mach_port_t rec, - int pri, - filter_array_t filt, - size_t len) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_map (device_t device, - vm_prot_t prot, - vm_offset_t offset, - vm_size_t size, - memory_object_t *pager, - int unmap) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_set_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t statuslen) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_get_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t *statuslen) -{ - if (device == pseudo_console) - return D_INVALID_OPERATION; - else if (device == pseudo_root) - if (flavor == DEV_GET_SIZE) - if (*statuslen < DEV_GET_SIZE_COUNT) - return D_INVALID_SIZE; - else - { - status[DEV_GET_SIZE_DEVICE_SIZE] = root_store->size; - status[DEV_GET_SIZE_RECORD_SIZE] = root_store->block_size; - *statuslen = DEV_GET_SIZE_COUNT; - return D_SUCCESS; - } - else - return D_INVALID_OPERATION; - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_set_filter (device_t device, - mach_port_t receive_port, - int priority, - filter_array_t filter, - size_t filterlen) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -boolean_t pseudo_priv_host_destroyed = FALSE; - -void -destroy_priv_host (void *pi) -{ - pseudo_priv_host_destroyed = TRUE; - info ("pseudo privileged host port is destroyed"); -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - static int no_console; - mach_port_t foo; - error_t err = EOPNOTSUPP; - - if (notify == pseudo_master_device_port) - { - info ("pseudo master device port has no senders"); - /* for the root */ - if (no_console && !is_user) - goto bye; - /* for the normal user */ - if (no_console && is_user && pseudo_priv_host_destroyed) - goto bye; - pseudo_master_device_port = MACH_PORT_NULL; - return 0; - } - if (pseudo_priv_host_pi->port_right == notify && is_user) - { - if (no_console && pseudo_master_device_port == MACH_PORT_NULL) - goto bye; - pseudo_priv_host_destroyed = TRUE; - return 0; - } - if (notify == pseudo_console) - { - info ("pseudo console has no senders"); - if ( - /* for the root */ - (mscount == console_mscount && - pseudo_master_device_port == MACH_PORT_NULL && - !is_user) || - /* for the normal user */ - (mscount == console_mscount && - pseudo_master_device_port == MACH_PORT_NULL && - pseudo_priv_host_destroyed && - is_user)) - { - bye: - restore_termstate (); - write (2, "bye\n", 4); - host_exit (0); - } - else - { - no_console = (mscount == console_mscount); - info ("no console: %d", no_console); - - mach_port_request_notification (mach_task_self (), pseudo_console, - MACH_NOTIFY_NO_SENDERS, - console_mscount == mscount - ? mscount + 1 - : console_mscount, - pseudo_console, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - } - } - - err = ports_do_mach_notify_no_senders (notify, mscount); - - return err; -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ -#if 0 - if (name == child_task && notify == bootport) - host_exit (0); -#endif - return EOPNOTSUPP; -} - - -/* Implementation of the Hurd I/O interface, which - we support for the console port only. */ - -kern_return_t -S_io_write (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char *data, - mach_msg_type_number_t datalen, - off_t offset, - mach_msg_type_number_t *amtwritten) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *amtwritten = write (1, data, datalen); - return *amtwritten == -1 ? errno : 0; -} - -kern_return_t -S_io_read (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char **data, - mach_msg_type_number_t *datalen, - off_t offset, - mach_msg_type_number_t amount) -{ - mach_msg_type_number_t avail; - - if (object != pseudo_console) - return EOPNOTSUPP; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - if (amount > *datalen) - *data = mmap (0, amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - *datalen = read (0, *data, amount); - unlock_readlock (); - return *datalen == -1 ? errno : 0; - } - else - { - kern_return_t err; - unlock_readlock (); - err = queue_read (IO_READ, reply_port, reply_type, amount); - if (err) - return err; - return MIG_NO_REPLY; - } -} - -kern_return_t -S_io_seek (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - off_t offset, - int whence, - off_t *newp) -{ - return object == pseudo_console ? ESPIPE : EOPNOTSUPP; -} - -kern_return_t -S_io_readable (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_msg_type_number_t *amt) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - ioctl (0, FIONREAD, amt); - return 0; -} - -kern_return_t -S_io_set_all_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int *modes) -{ - *modes = O_READ | O_WRITE; - return object == pseudo_console ? 0 : EOPNOTSUPP; -} - -kern_return_t -S_io_set_some_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_clear_some_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_async (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t notify, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_mod_owner (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - pid_t owner) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_owner (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - pid_t *owner) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_icky_async_id (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_select (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int *type) -{ - fd_set r, w, x; - int n; - - if (object != pseudo_console) - return EOPNOTSUPP; - - FD_ZERO (&r); - FD_ZERO (&w); - FD_ZERO (&x); - FD_SET (0, &r); - FD_SET (0, &w); - FD_SET (0, &x); - - n = select (1, - (*type & SELECT_READ) ? &r : 0, - (*type & SELECT_WRITE) ? &w : 0, - (*type & SELECT_URG) ? &x : 0, - 0); - if (n < 0) - return errno; - - if (! FD_ISSET (0, &r)) - *type &= ~SELECT_READ; - if (! FD_ISSET (0, &w)) - *type &= ~SELECT_WRITE; - if (! FD_ISSET (0, &x)) - *type &= ~SELECT_URG; - - return 0; -} - -kern_return_t -S_io_stat (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - struct stat *st) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - - bzero (st, sizeof (struct stat)); - st->st_blksize = 1024; - return 0; -} - -kern_return_t -S_io_reauthenticate (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t rend) -{ - uid_t *gu, *au; - gid_t *gg, *ag; - size_t gulen = 0, aulen = 0, gglen = 0, aglen = 0; - error_t err; - - err = mach_port_insert_right (mach_task_self (), object, object, - MACH_MSG_TYPE_MAKE_SEND); - assert_perror (err); - - if (! auth_server_authenticate (authserver, - rend, MACH_MSG_TYPE_COPY_SEND, - object, MACH_MSG_TYPE_COPY_SEND, - &gu, &gulen, - &au, &aulen, - &gg, &gglen, - &ag, &aglen)) - { - mig_deallocate ((vm_address_t) gu, gulen * sizeof *gu); - mig_deallocate ((vm_address_t) au, aulen * sizeof *gu); - mig_deallocate ((vm_address_t) gg, gglen * sizeof *gu); - mig_deallocate ((vm_address_t) au, aulen * sizeof *gu); - } - mach_port_deallocate (mach_task_self (), rend); - mach_port_deallocate (mach_task_self (), object); - - return 0; -} - -kern_return_t -S_io_restrict_auth (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *newobject, - mach_msg_type_name_t *newobjtype, - uid_t *uids, - size_t nuids, - uid_t *gids, - size_t ngids) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - *newobject = pseudo_console; - *newobjtype = MACH_MSG_TYPE_MAKE_SEND; - console_mscount++; - return 0; -} - -kern_return_t -S_io_duplicate (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *newobj, - mach_msg_type_name_t *newobjtype) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - *newobj = pseudo_console; - *newobjtype = MACH_MSG_TYPE_MAKE_SEND; - console_mscount++; - return 0; -} - -kern_return_t -S_io_server_version (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char *name, - int *maj, - int *min, - int *edit) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_map (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *rd, - mach_msg_type_name_t *rdtype, - mach_port_t *wr, - mach_msg_type_name_t *wrtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_map_cntl (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *mem, - mach_msg_type_name_t *memtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_conch (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_release_conch (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_eofnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) - -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_prenotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_postnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_readsleep (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_readnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - - -kern_return_t -S_io_sigio (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - - -kern_return_t -S_io_pathconf (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int name, int *value) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_identity (mach_port_t obj, - mach_port_t reply, - mach_msg_type_name_t replytype, - mach_port_t *id, - mach_msg_type_name_t *idtype, - mach_port_t *fsid, - mach_msg_type_name_t *fsidtype, - ino_t *fileno) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_revoke (mach_port_t obj, - mach_port_t reply, mach_msg_type_name_t replyPoly) -{ - return EOPNOTSUPP; -} - - - -/* Implementation of the Hurd terminal driver interface, which we only - support on the console device. */ - -kern_return_t -S_termctty_open_terminal (mach_port_t object, - int flags, - mach_port_t *result, - mach_msg_type_name_t *restype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_term_getctty (mach_port_t object, - mach_port_t *cttyid, mach_msg_type_name_t *cttyPoly) -{ - static mach_port_t id = MACH_PORT_NULL; - - if (object != pseudo_console) - return EOPNOTSUPP; - - if (id == MACH_PORT_NULL) - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_DEAD_NAME, &id); - - *cttyid = id; - *cttyPoly = MACH_MSG_TYPE_COPY_SEND; - return 0; -} - - -kern_return_t S_term_open_ctty -( - io_t terminal, - pid_t pid, - pid_t pgrp, - mach_port_t *newtty, - mach_msg_type_name_t *newttytype -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_set_nodename -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_nodename -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_peername -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_set_filenode -( - io_t terminal, - file_t filenode -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_bottom_type -( - io_t terminal, - int *ttype -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_machdev -( - io_t terminal, - mach_port_t machdev -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_hurddev -( - io_t terminal, - io_t hurddev -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_pty -( - io_t terminal, - io_t *ptymaster -) -{ return EOPNOTSUPP; } diff --git a/boot-proxy-exc/exc_impl.c~ b/boot-proxy-exc/exc_impl.c~ deleted file mode 100644 index a99a7e3c..00000000 --- a/boot-proxy-exc/exc_impl.c~ +++ /dev/null @@ -1,67 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" - -kern_return_t -catch_exception_raise (mach_port_t exception_port, mach_port_t thread, - mach_port_t task, integer_t exception, - integer_t code, integer_t subcode) -{ - error_t err; - struct task_info *fault_task_pi = NULL; - debug (""); - - int match_task (struct task_info *task_pi) - { - if (task_pi->task_port == task) - { - fault_task_pi = task_pi; - ports_port_ref (fault_task_pi); - return 1; - } - return 0; - } - foreach_task (match_task); - - if (fault_task_pi == NULL) - { - fault_task_pi = ports_lookup_port (port_bucket, task, task_portclass); - } - - if (fault_task_pi == NULL) - { - info ("cannot find the task: %d", task); - return EINVAL; - } - - err = catch_exception_raise (fault_task_pi->user_exc_port, - thread, fault_task_pi->task.port_right, - exception, code, subcode); - ports_port_deref (fault_task_pi); - return err; -} diff --git a/boot-proxy-exc/mach_host_impl.c~ b/boot-proxy-exc/mach_host_impl.c~ deleted file mode 100644 index 0ce0d0b6..00000000 --- a/boot-proxy-exc/mach_host_impl.c~ +++ /dev/null @@ -1,545 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include - -#include -#include -#include - -#include "util.h" -#include "list.h" -#include "mach_proxy.h" - -extern mach_port_t privileged_host_port; - -/* Set task priority. */ -kern_return_t -S_task_priority (mach_port_t task, int priority, boolean_t change_threads) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = task_priority (task_pi->task_port, priority, change_threads); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine processor_set_tasks */ -kern_return_t -S_processor_set_tasks (mach_port_t processor_set, task_array_t *task_list, - mach_msg_type_number_t *task_listCnt) -{ - error_t err = 0; - mach_port_t *subhurd_tasks = NULL; - int size = 0; - /* no pseudo task port is created for the kernel task. */ - int num = 0; - int tot_nbtasks = ports_count_class (task_portclass) + num; - - size = tot_nbtasks * sizeof (mach_port_t); - err = vm_allocate (mach_task_self (), - (vm_address_t *) (void *) &subhurd_tasks, - size, 1); - if (err) - goto out; - - int get_pseudo_task_port (struct task_info *task_pi) - { - assert (num < tot_nbtasks); - subhurd_tasks[num++] = ports_get_right (task_pi); - return 0; - } - - foreach_task (get_pseudo_task_port); - assert (num == tot_nbtasks); - debug ("get %d tasks", tot_nbtasks); - *task_list = subhurd_tasks; - *task_listCnt = tot_nbtasks; - -out: - /* I enable the class here, - * so no pseudo task port can be created when I count the number of tasks. */ - ports_enable_class (task_portclass); - /* The array will be deallocated after it is sent, - * but the task ports in it don't need to, - * because I only call ports_get_right() - * and the reference count isn't increased. */ - return err; -} - -/* Get control port for a processor set. */ -kern_return_t -S_host_processor_set_priv (mach_port_t host_priv, mach_port_t set_name, - mach_port_t *set, mach_msg_type_name_t *setPoly) -{ - extern struct port_class *other_portclass; - struct port_info *pi; - kern_return_t ret = 0; - - // TODO create a port for each processor set - debug (""); - // TODO I should create the port for the processor set only once. - ret = ports_create_port (other_portclass, port_bucket, - sizeof (*pi), &pi); - debug ("%s", strerror (ret)); - if (ret) - return ret; - *set = ports_get_right (pi); - *setPoly = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (pi); - return ret; -} - -/* Routine host_reboot */ -kern_return_t -S_host_reboot (mach_port_t host_priv, int options) -{ - debug (""); - assert (0); - // TODO - return EOPNOTSUPP; -} - -/* Routine vm_wire */ -kern_return_t -S_vm_wire (mach_port_t host_priv, mach_port_t task, - vm_address_t address, vm_size_t size, vm_prot_t access) -{ - debug (""); - assert (0); - // TODO - return EOPNOTSUPP; -} - -/* Routine thread_wire */ -kern_return_t -S_thread_wire (mach_port_t host_priv, mach_port_t thread, boolean_t wired) -{ - debug (""); - assert (0); - // TODO - return EOPNOTSUPP; -} - -//////////the request to the host isn't forwarded by the proxy////////// - -/* Routine host_processor_sets */ -kern_return_t -S_host_processor_sets (mach_port_t host, - processor_set_name_array_t *processor_sets, - mach_msg_type_number_t *processor_setsCnt) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Routine host_get_time */ -kern_return_t -S_host_get_time (mach_port_t host, time_value_t *current_time) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Routine host_info */ -kern_return_t -S_host_info (mach_port_t host, int flavor, host_info_t host_info_out, - mach_msg_type_number_t *host_info_outCnt) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Get string describing current kernel version. */ -kern_return_t -S_host_kernel_version (mach_port_t host, kernel_version_t kernel_version) -{ - debug (""); - assert (0); - // the proxy doesn't forward the request to the host port. - return EOPNOTSUPP; -} - -///////////////////the RPCs not used by Hurd////////////////////// - -/* Get list of processors on this host. */ -kern_return_t -S_host_processors (mach_port_t host_priv, - processor_array_t *processor_list, - mach_msg_type_number_t *processor_listCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Start processor. */ -kern_return_t -S_processor_start (mach_port_t processor) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Exit processor -- may not be restartable. */ -kern_return_t -S_processor_exit (mach_port_t processor) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get default processor set for host. */ -kern_return_t -S_processor_set_default (mach_port_t host, mach_port_t *default_set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* - * Create new processor set. Returns real port for manipulations, - * and name port for obtaining information. - */ -kern_return_t -S_processor_set_create (mach_port_t host, mach_port_t *new_set, - mach_port_t *new_name) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Destroy processor set. */ -kern_return_t -S_processor_set_destroy (mach_port_t set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign processor to processor set. */ -kern_return_t -S_processor_assign (mach_port_t processor, mach_port_t new_set, boolean_t wait) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get current assignment for thread. */ -kern_return_t -S_processor_get_assignment (mach_port_t processor, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign task to processor set. */ -kern_return_t -S_task_assign (mach_port_t task, mach_port_t new_set, boolean_t assign_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign task to default set. */ -kern_return_t -S_task_assign_default (mach_port_t task, boolean_t assign_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get current assignment for task. */ -kern_return_t -S_task_get_assignment (mach_port_t task, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Set max priority for processor_set. */ -kern_return_t -S_processor_set_max_priority (mach_port_t processor_set, int max_priority, - boolean_t change_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_policy_enable */ -kern_return_t -S_processor_set_policy_enable (mach_port_t processor_set, int policy) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_policy_disable */ -kern_return_t -S_processor_set_policy_disable (mach_port_t processor_set, int policy, - boolean_t change_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_threads */ -kern_return_t -S_processor_set_threads (mach_port_t processor_set, - thread_array_t *thread_list, - mach_msg_type_number_t *thread_listCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_set_time */ -kern_return_t -S_host_set_time (mach_port_t host_priv, time_value_t new_time) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_adjust_time */ -kern_return_t -S_host_adjust_time (mach_port_t host_priv, time_value_t new_adjustment, - time_value_t *old_adjustment) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_info */ -kern_return_t -S_processor_info (mach_port_t processor, int flavor, mach_port_t *host, - processor_info_t processor_info_out, - mach_msg_type_number_t *processor_info_outCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_info */ -kern_return_t -S_processor_set_info (mach_port_t set_name, int flavor, mach_port_t *host, - processor_set_info_t info_out, - mach_msg_type_number_t *info_outCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_control */ -kern_return_t -S_processor_control (mach_port_t processor, processor_info_t processor_cmd, - mach_msg_type_number_t processor_cmdCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_get_boot_info */ -kern_return_t -S_host_get_boot_info (mach_port_t host_priv, kernel_boot_info_t boot_info) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -///////////////////it's not a proxy for thread requests/////////////////// - -/* Assign thread to processor set. */ -kern_return_t -S_thread_assign (mach_port_t thread, mach_port_t new_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Assign thread to default set. */ -kern_return_t -S_thread_assign_default (mach_port_t thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Get current assignment for thread. */ -kern_return_t -S_thread_get_assignment (mach_port_t thread, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Set priority for thread. */ -kern_return_t S_thread_priority (mach_port_t thread, int priority, - boolean_t set_max) -{ - debug (""); - assert (0); - return thread_priority (thread, priority, set_max); -} - -/* Set max priority for thread. */ -kern_return_t S_thread_max_priority (mach_port_t thread, - mach_port_t processor_set, - int max_priority) -{ - debug (""); - assert (0); - return thread_max_priority (thread, processor_set, max_priority); -} - -/* Routine thread_depress_abort */ -kern_return_t S_thread_depress_abort (mach_port_t thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Set policy for thread */ -kern_return_t S_thread_policy (mach_port_t thread, int policy, int data) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -////////////////////don't support obsolete requests/////////////////////// - -/* Routine yyy_host_info */ -/* obsolete */ -kern_return_t -S_yyy_host_info (mach_port_t host, int flavor, host_info_t host_info_out, - mach_msg_type_number_t *host_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_info */ -/* obsolete */ -kern_return_t -S_yyy_processor_info (mach_port_t processor, int flavor, mach_port_t *host, - processor_info_t processor_info_out, - mach_msg_type_number_t *processor_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_control */ -/* obsolete */ -kern_return_t -S_yyy_processor_control (mach_port_t processor, - processor_info_t processor_cmd, - mach_msg_type_number_t processor_cmdCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* - * Get rights to default processor set for host. - * Replaced by host_processor_set_priv. - */ -kern_return_t -S_xxx_processor_set_default_priv (mach_port_t host, mach_port_t *default_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_set_info */ -/* obsolete */ -kern_return_t -S_yyy_processor_set_info (mach_port_t set_name, int flavor, - mach_port_t *host, processor_set_info_t info_out, - mach_msg_type_number_t *info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} diff --git a/boot-proxy-exc/mach_impl.c~ b/boot-proxy-exc/mach_impl.c~ deleted file mode 100644 index a5c53197..00000000 --- a/boot-proxy-exc/mach_impl.c~ +++ /dev/null @@ -1,906 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" -#include "list.h" - -/* Routine task_create */ -kern_return_t -S_task_create (mach_port_t target_task, boolean_t inherit_memory, - mach_port_t *child_task, mach_msg_type_name_t *child_taskPoly) -{ - struct task_info *target_task_pi; - task_t real_child_task; - task_t pseudo_child_task; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = task_create (target_task_pi->task_port, - inherit_memory, &real_child_task); - debug ("get a request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - if (err) - return err; - - err = create_pseudo_task (real_child_task, &pseudo_child_task); - if (err) - { - task_terminate (real_child_task); - return err; - } - - *child_task = pseudo_child_task; - *child_taskPoly = MACH_MSG_TYPE_COPY_SEND; - - debug ("new task: %d", real_child_task); - return err; -} - -/* Routine task_terminate */ -kern_return_t -S_task_terminate (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = task_terminate (target_task_pi->task_port); - debug ("get request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_destroy_right (target_task_pi); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_info */ -kern_return_t -S_task_info (mach_port_t target_task, int flavor, - task_info_t task_info_out, - mach_msg_type_number_t *task_info_outCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = task_info (target_task_pi->task_port, flavor, - task_info_out, task_info_outCnt); - debug ("%s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_allocate */ -kern_return_t -S_vm_allocate (mach_port_t target_task, vm_address_t *address, - vm_size_t size, boolean_t anywhere) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - /* This should be enough. */ - err = vm_allocate (target_task_pi->task_port, address, size, anywhere); - debug ("request is from task %d, address: %d, size: %d, anywhere: %d, %s", - target_task_pi->task_port, *address, size, anywhere, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_deallocate */ -kern_return_t -S_vm_deallocate (mach_port_t target_task, - vm_address_t address, vm_size_t size) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_deallocate (target_task_pi->task_port, address, size); - debug ("get a request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_protect */ -kern_return_t -S_vm_protect (mach_port_t target_task, vm_address_t address, - vm_size_t size, boolean_t set_maximum, - vm_prot_t new_protection) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_protect (target_task_pi->task_port, address, - size, set_maximum, new_protection); - debug ("request is from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_inherit */ -kern_return_t -S_vm_inherit (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_inherit_t new_inheritance) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_inherit (target_task_pi->task_port, address, - size, new_inheritance); - debug ("%s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_read */ -kern_return_t -S_vm_read (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_offset_t *data, - mach_msg_type_number_t *dataCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = vm_read (target_task_pi->task_port, address, size, data, dataCnt); - debug ("get a request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - /* The deallocation bit is set.*/ - return err; -} - -/* Routine vm_write */ -kern_return_t -S_vm_write (mach_port_t target_task, vm_address_t address, - vm_offset_t data, mach_msg_type_number_t dataCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_write (target_task_pi->task_port, address, data, dataCnt); - debug ("get a request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - /* the proxy get the mapped pages from the client, - * deallocate it here. */ - vm_deallocate (mach_task_self (), data, dataCnt); - return err; -} - -/* Routine vm_copy */ -kern_return_t -S_vm_copy (mach_port_t target_task, vm_address_t source_address, - vm_size_t size, vm_address_t dest_address) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = vm_copy (target_task_pi->task_port, source_address, - size, dest_address); - debug ("%s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_region */ -kern_return_t -S_vm_region (mach_port_t target_task, vm_address_t *address, - vm_size_t *size, vm_prot_t *protection, - vm_prot_t *max_protection, vm_inherit_t *inheritance, - boolean_t *is_shared, mach_port_t *object_name, - vm_offset_t *offset) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = vm_region (target_task_pi->task_port, address, size, protection, - max_protection, inheritance, is_shared, object_name, offset); - debug ("get a request from task %d: %s, object: %d", - target_task_pi->task_port, strerror (err), *object_name); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_statistics */ -kern_return_t -S_vm_statistics (mach_port_t target_task, vm_statistics_data_t *vm_stats) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = vm_statistics (target_task_pi->task_port, vm_stats); - debug ("request is from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine mach_ports_register */ -kern_return_t -S_mach_ports_register (mach_port_t target_task, - mach_port_array_t init_port_set, - mach_msg_type_number_t init_port_setCnt) -{ - debug (""); - assert (0); - // not used by Hurd - return EOPNOTSUPP; -} - -/* Routine mach_ports_lookup */ -kern_return_t -S_mach_ports_lookup (mach_port_t target_task, - mach_port_array_t *init_port_set, - mach_msg_type_number_t *init_port_setCnt) -{ - debug (""); - assert (0); - // not used by Hurd - return EOPNOTSUPP; -} - -/* Routine vm_set_default_memory_manager */ -kern_return_t -S_vm_set_default_memory_manager (mach_port_t host_priv, - mach_port_t *default_manager) -{ - extern mach_port_t defpager; - debug (""); - *default_manager = defpager; - return 0; -} - - -/* Routine xxx_task_info */ -kern_return_t -S_xxx_task_info (mach_port_t target_task, int flavor, - task_info_t task_info_out, - mach_msg_type_number_t *task_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_host_info */ -kern_return_t -S_xxx_host_info (mach_port_t target_task, machine_info_data_t *info) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_slot_info */ -kern_return_t -S_xxx_slot_info (mach_port_t target_task, int slot, machine_slot_data_t *info) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_cpu_control */ -kern_return_t -S_xxx_cpu_control (mach_port_t target_task, int cpu, boolean_t running) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_suspend */ -kern_return_t -S_task_suspend (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = task_suspend (target_task_pi->task_port); - debug ("get request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_resume */ -kern_return_t -S_task_resume (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = task_resume (target_task_pi->task_port); - debug ("get request from task %d: %s", - target_task_pi->task_port, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_get_special_port */ -kern_return_t -S_task_get_special_port (mach_port_t target_task, int which_port, - mach_port_t *special_port, - mach_msg_type_name_t *special_portPoly) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = task_get_special_port (target_task_pi->task_port, - which_port, special_port); - debug ("request is from task %d (%d, %d): %s\n", - target_task_pi->task_port, which_port, *special_port, strerror (err)); - ports_port_deref (target_task_pi); - if (err) - return err; - *special_portPoly = MACH_MSG_TYPE_MOVE_SEND; - return err; -} - -/* Routine task_set_special_port */ -kern_return_t -S_task_set_special_port (mach_port_t target_task, int which_port, - mach_port_t special_port) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - if (which_port == TASK_EXCEPTION_PORT) - { - struct port_info *new_exc_pi; - struct port_info *old_exc_pi; - mach_port_t old_user_exc_port; - mach_port_t new_exc_port; - - err = ports_create_port (exc_portclass, port_bucket, - sizeof (new_exc_pi), &new_exc_pi); - if (err) - { - ports_port_deref (target_task_pi); - return err; - } - new_exc_port = ports_get_send_right (new_exc_pi); - - mutex_lock (&target_task_pi->lock); - old_exc_pi = target_task_pi->exc_pi; - old_user_exc_port = target_task_pi->user_exc_port; - err = task_set_special_port (target_task_pi->task_port, - which_port, new_exc_port); - target_task_pi->user_exc_port = special_port; - target_task_pi->exc_pi = new_exc_pi; - mutex_unlock (&target_task_pi->lock); - - ports_port_deref (new_exc_pi); - if (old_user_exc_port) - mach_port_deallocate (mach_task_self (), old_user_exc_port); - if (old_exc_pi) - ports_destroy_right (old_exc_pi); - } - else - { - err = task_set_special_port (target_task_pi->task_port, - which_port, special_port); - debug ("get request from task %d (%d, %d): %s", - target_task_pi->task_port, which_port, - special_port, strerror (err)); - mach_port_deallocate (mach_task_self (), special_port); - } - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_ras_control */ -kern_return_t -S_task_ras_control (mach_port_t target_task, vm_address_t basepc, - vm_address_t boundspc, int flavor) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = task_ras_control (target_task_pi->task_port, basepc, boundspc, flavor); - debug ("%s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_map */ -kern_return_t -S_vm_map (mach_port_t target_task, vm_address_t *address, vm_size_t size, - vm_address_t mask, boolean_t anywhere, mach_port_t memory_object, - vm_offset_t offset, boolean_t copy, vm_prot_t cur_protection, - vm_prot_t max_protection, vm_inherit_t inheritance) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_map (target_task_pi->task_port, address, size, mask, - anywhere, memory_object, offset, copy, - cur_protection, max_protection, inheritance); - debug ("request is from task %d, anywhere: %d: %s", - target_task_pi->task_port, anywhere, strerror (err)); - ports_port_deref (target_task_pi); - mach_port_deallocate (mach_task_self (), memory_object); - return err; -} - -/* Routine vm_machine_attribute */ -kern_return_t -S_vm_machine_attribute (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_machine_attribute_t attribute, - vm_machine_attribute_val_t *value) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_machine_attribute (target_task_pi->task_port, address, - size, attribute, value); - debug ("%s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_threads */ -kern_return_t -S_task_threads (mach_port_t target_task, thread_array_t *thread_list, - mach_msg_type_number_t *thread_listCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - // TODO: use move send - err = task_threads (target_task_pi->task_port, - thread_list, thread_listCnt); - debug ("get a request from task %d: %s", - target_task_pi->task_port, strerror (err)); -// info ("task_threads: %s, number of threads: %d", -// strerror (err), *thread_listCnt); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine thread_create */ -kern_return_t -S_thread_create (mach_port_t parent_task, mach_port_t *child_thread, - mach_msg_type_name_t *child_threadPoly) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - parent_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = thread_create (target_task_pi->task_port, child_thread); - debug ("get a request from task %d: thread port: %d: %s", - target_task_pi->task_port, *child_thread, strerror (err)); - ports_port_deref (target_task_pi); - *child_threadPoly = MACH_MSG_TYPE_MOVE_SEND; - return err; -} - -////////////////////it doesn't forward thread request//////////////// - -/* Routine thread_suspend */ -kern_return_t -S_thread_suspend (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_resume */ -kern_return_t -S_thread_resume (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_abort */ -kern_return_t -S_thread_abort (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_get_state */ -kern_return_t -S_xxx_thread_get_state (mach_port_t target_thread, int flavor, - thread_state_t old_state, - mach_msg_type_number_t *old_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_set_state */ -kern_return_t -S_xxx_thread_set_state (mach_port_t target_thread, int flavor, - thread_state_t new_state, - mach_msg_type_number_t new_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_info */ -kern_return_t -S_xxx_thread_info (mach_port_t target_thread, int flavor, - thread_info_t thread_info_out, - mach_msg_type_number_t *thread_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_get_special_port */ -kern_return_t -S_thread_get_special_port (mach_port_t thread, int which_port, - mach_port_t *special_port) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_set_special_port */ -kern_return_t -S_thread_set_special_port (mach_port_t thread, int which_port, - mach_port_t special_port) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_terminate */ -kern_return_t -S_thread_terminate (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_get_state */ -kern_return_t -S_thread_get_state (mach_port_t target_thread, int flavor, - thread_state_t old_state, - mach_msg_type_number_t *old_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_set_state */ -kern_return_t -S_thread_set_state (mach_port_t target_thread, int flavor, - thread_state_t new_state, - mach_msg_type_number_t new_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_info */ -kern_return_t -S_thread_info (mach_port_t target_thread, int flavor, - thread_info_t thread_info_out, - mach_msg_type_number_t *thread_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/////////////////////RPC related to memory object//////////////////// -//////////////////they are not needed to be forwarded//////////////// - -/* SimpleRoutine memory_object_data_provided */ -kern_return_t -S_memory_object_data_provided (mach_port_t memory_control, - vm_offset_t offset, vm_offset_t data, - mach_msg_type_number_t dataCnt, - vm_prot_t lock_value) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_unavailable */ -kern_return_t -S_memory_object_data_unavailable (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine memory_object_get_attributes */ -kern_return_t -S_memory_object_get_attributes (mach_port_t memory_control, - boolean_t *object_ready, boolean_t *may_cache, - memory_object_copy_strategy_t *copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine xxx_memory_object_lock_request */ -kern_return_t -S_xxx_memory_object_lock_request (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - boolean_t should_clean, - boolean_t should_flush, - vm_prot_t lock_value, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_lock_request */ -kern_return_t -S_memory_object_lock_request ( mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - memory_object_return_t should_return, - boolean_t should_flush, - vm_prot_t lock_value, mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_error */ -kern_return_t -S_memory_object_data_error (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - kern_return_t error_value) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_set_attributes */ -kern_return_t -S_memory_object_set_attributes (mach_port_t memory_control, - boolean_t object_ready, boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_destroy */ -kern_return_t -S_memory_object_destroy (mach_port_t memory_control, kern_return_t reason) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_supply */ -kern_return_t -S_memory_object_data_supply (mach_port_t memory_control, - vm_offset_t offset, vm_offset_t data, - mach_msg_type_number_t dataCnt, - vm_prot_t lock_value, boolean_t precious, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_ready */ -kern_return_t -S_memory_object_ready (mach_port_t memory_control, boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_change_attributes */ -kern_return_t -S_memory_object_change_attributes (mach_port_t memory_control, - boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -///////////////////////RPCs related to emulation///////////////////// -//////////////////////subhurd doesn't support it.//////////////////// - -/* Routine task_get_emulation_vector */ -kern_return_t -S_task_get_emulation_vector (mach_port_t task, int *vector_start, - emulation_vector_t *emulation_vector, - mach_msg_type_number_t *emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_set_emulation_vector */ -kern_return_t -S_task_set_emulation_vector (mach_port_t task, int vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_task_get_emulation_vector */ -kern_return_t -S_xxx_task_get_emulation_vector (mach_port_t task, int *vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t *emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_task_set_emulation_vector */ -kern_return_t -S_xxx_task_set_emulation_vector (mach_port_t task, int vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_set_emulation */ -kern_return_t -S_task_set_emulation (mach_port_t target_port, - vm_address_t routine_entry_pt, int routine_number) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} diff --git a/boot-proxy-exc/mach_port_impl.c~ b/boot-proxy-exc/mach_port_impl.c~ deleted file mode 100644 index b49ae789..00000000 --- a/boot-proxy-exc/mach_port_impl.c~ +++ /dev/null @@ -1,377 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" - -kern_return_t -S_mach_port_names (mach_port_t task, mach_port_array_t *names, - mach_msg_type_number_t *namesCnt, - mach_port_type_array_t *types, - mach_msg_type_number_t *typesCnt) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_names (task_pi->task_port, - names, namesCnt, types, typesCnt); - debug ("%s", strerror (err)); - /* The deallocation bit is set, - * so 'names' and 'types' will be deallocated after the reply is sent. */ - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_type */ -kern_return_t -S_mach_port_type (mach_port_t task, mach_port_t name, mach_port_type_t *ptype) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_type (task_pi->task_port, name, ptype); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_rename */ -kern_return_t -S_mach_port_rename (mach_port_t task, - mach_port_t old_name, mach_port_t new_name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - /* old_name and new_name are just names, - * so I don't need to deallocate them. - * It should be the same for other RPCs that only deal with port names */ - err = mach_port_rename (task_pi->task_port, old_name, new_name); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_allocate_name */ -kern_return_t -S_mach_port_allocate_name (mach_port_t task, - mach_port_right_t right, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_allocate_name (task_pi->task_port, right, name); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_allocate */ -kern_return_t -S_mach_port_allocate (mach_port_t task, - mach_port_right_t right, mach_port_t *name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_allocate (task_pi->task_port, right, name); - debug ("get a request from task %d: %s", task_pi->task_port, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_destroy */ -kern_return_t -S_mach_port_destroy (mach_port_t task, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_destroy (task_pi->task_port, name); - debug ("get a request from port %d: %s", - task_pi->task_port, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_deallocate */ -kern_return_t -S_mach_port_deallocate (mach_port_t task, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_deallocate (task_pi->task_port, name); - debug ("get a request from task %d, name: %d, %s", - task_pi->task_port, name, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_get_refs */ -kern_return_t -S_mach_port_get_refs (mach_port_t task, mach_port_t name, - mach_port_right_t right, mach_port_urefs_t *refs) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_refs (task_pi->task_port, name, right, refs); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_mod_refs */ -kern_return_t -S_mach_port_mod_refs (mach_port_t task, mach_port_t name, - mach_port_right_t right, mach_port_delta_t delta) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_mod_refs (task_pi->task_port, name, right, delta); - debug ("get a request from task %d: port: %d, right: %d, delta: %d, %s", - task_pi->task_port, name, right, delta, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine old_mach_port_get_receive_status */ -kern_return_t -S_old_mach_port_get_receive_status (mach_port_t task, mach_port_t name, - old_mach_port_status_t *status) -{ - debug ("%s", strerror (EOPNOTSUPP)); - assert (0); - /* Hurd currently doesn't use it. */ - return EOPNOTSUPP; -} - -/* Routine mach_port_set_qlimit */ -kern_return_t -S_mach_port_set_qlimit (mach_port_t task, mach_port_t name, - mach_port_msgcount_t qlimit) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_qlimit (task_pi->task_port, name, qlimit); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_set_mscount */ -kern_return_t -S_mach_port_set_mscount (mach_port_t task, mach_port_t name, - mach_port_mscount_t mscount) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_mscount (task_pi->task_port, name, mscount); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_get_set_status */ -kern_return_t -S_mach_port_get_set_status (mach_port_t task, mach_port_t name, - mach_port_array_t *members, - mach_msg_type_number_t *membersCnt) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_set_status (task_pi->task_port, - name, members, membersCnt); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - /* The deallocation bit is set, - * so 'members' will be deallocated after the reply is sent. */ - return err; -} - -/* Routine mach_port_move_member */ -kern_return_t -S_mach_port_move_member (mach_port_t task, mach_port_t member, - mach_port_t after) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_move_member (task_pi->task_port, member, after); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_request_notification */ -kern_return_t -S_mach_port_request_notification (mach_port_t task, mach_port_t name, - mach_msg_id_t id, mach_port_mscount_t sync, - mach_port_t notify, mach_port_t *previous, - mach_msg_type_name_t *previousPoly) -{ - struct task_info *task_pi; - mach_msg_type_name_t notify_type = MACH_MSG_TYPE_MOVE_SEND_ONCE; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - if (notify == 0) - notify_type = 0; - /* notify is send-once right from the client. */ - err = mach_port_request_notification (task_pi->task_port, name, id, sync, - notify, notify_type, previous); - debug ("get a request from task %d, port: %d, id: %d, notify: %d, notify_type: %d, old port: %d, %s", - task_pi->task_port, name, id, notify, notify_type, *previous, strerror (err)); - ports_port_deref (task_pi); - if (err) - return err; - *previousPoly = MACH_MSG_TYPE_MOVE_SEND_ONCE; - - return 0; -} - -/* Routine mach_port_insert_right */ -kern_return_t -S_mach_port_insert_right (mach_port_t task, mach_port_t name, - mach_port_t poly, mach_msg_type_name_t polyPoly) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - /* polyPoly can only be three possible values: MACH_MSG_TYPE_PORT_SEND, - * MACH_MSG_TYPE_PORT_SEND_ONCE and MACH_MSG_TYPE_PORT_RECEIVE, - * so port will be deallocated when mach_port_insert_right is called. */ - err = mach_port_insert_right (task_pi->task_port, name, poly, polyPoly); - debug ("get a request from task %d: %s", task_pi->task_port, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_extract_right */ -kern_return_t -S_mach_port_extract_right (mach_port_t task, mach_port_t name, - mach_msg_type_name_t msgt_name, mach_port_t *poly, - mach_msg_type_name_t *polyPoly) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_extract_right (task_pi->task_port, name, msgt_name, - poly, polyPoly); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - /* *polyPoly can only be MACH_MSG_TYPE_PORT_SEND, MACH_MSG_TYPE_PORT_RECEIVE, - * or MACH_MSG_TYPE_PORT_SEND_ONCE, so the port extracted from 'task' - * will be moved to the client. */ - return err; -} - -/* Routine mach_port_get_receive_status */ -kern_return_t -S_mach_port_get_receive_status (mach_port_t task, mach_port_t name, - mach_port_status_t *status) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_receive_status (task_pi->task_port, name, status); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_set_seqno */ -kern_return_t -S_mach_port_set_seqno (mach_port_t task, mach_port_t name, - mach_port_seqno_t seqno) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_seqno (task_pi->task_port, name, seqno); - debug ("%s", strerror (err)); - ports_port_deref (task_pi); - return err; -} diff --git a/boot-proxy-exc/mach_proxy.c~ b/boot-proxy-exc/mach_proxy.c~ deleted file mode 100644 index 1bb46821..00000000 --- a/boot-proxy-exc/mach_proxy.c~ +++ /dev/null @@ -1,97 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include - -#include "util.h" -#include "mach_proxy.h" - -static LIST_HEADER (tasks_head); - -static struct mutex tasks_lock = MUTEX_INITIALIZER; - -int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task) -{ - /* the first task is the kernel task. */ - struct task_info *task_pi; - task_t pseudo_task; - error_t err; - - err = ports_create_port (task_portclass, port_bucket, - sizeof (struct task_info), &task_pi); - if (err) - return err; - - task_pi->task_port = real_task; - task_pi->exc_pi = NULL; - task_pi->user_exc_port = 0; - mutex_info (&task_pi->lock); - entry_init (&task_pi->list); - mutex_lock (&tasks_lock); - add_entry_end (&tasks_head, &task_pi->list); - mutex_unlock (&tasks_lock); - - pseudo_task = ports_get_right (task_pi); - mach_port_insert_right (mach_task_self (), pseudo_task, pseudo_task, - MACH_MSG_TYPE_MAKE_SEND); - ports_port_deref (task_pi); - - if (ret_pseudo_task) - *ret_pseudo_task = pseudo_task; - - err = task_set_kernel_port (real_task, pseudo_task); - if (err) - { - debug ("fail to set the kernel port: %s", strerror (err)); - ports_destroy_right (task_pi); - } - - return err; -} - -void clean_pseudo_task (void *pi) -{ - struct task_info *task = pi; - - debug ("remove a pseudo task from the list"); - mutex_lock (&tasks_lock); - remove_entry (&task->list); - mutex_unlock (&tasks_lock); - - if (task->exc_pi) - ports_destroy_right (task->exc_pi); - if (task->user_exc_port) - mach_port_deallocate (mach_task_self (), task->user_exc_port); -} - -void foreach_task (task_callback_t callback) -{ - struct list *entry = &tasks_head; - mutex_lock (&tasks_lock); - for (entry = tasks_head.next; entry != &tasks_head; entry = entry->next) - { -// mutex_unlock (&tasks_lock); - struct task_info *task_pi = LIST_ENTRY (entry, struct task_info, list); - if (callback (task_pi)) - break; -// mutex_lock (&tasks_lock); - } - mutex_unlock (&tasks_lock); -} diff --git a/boot-proxy-exc/mach_proxy.h~ b/boot-proxy-exc/mach_proxy.h~ deleted file mode 100644 index a7806c1f..00000000 --- a/boot-proxy-exc/mach_proxy.h~ +++ /dev/null @@ -1,59 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef PROXY_H -#define PROXY_H - -#include -#include -#include - -#include "list.h" - -struct task_info -{ - struct port_info task; - task_t task_port; - struct port_info *exc_pi; - volatile mach_port_t user_exc_port; - struct mutex lock; - /* The linked list is used to keep the order of tasks */ - struct list list; -}; - -struct thread_info -{ - struct port_info thread; - thread_t thread_port; -}; - -typedef int (*task_callback_t) (struct task_info *); - -extern struct port_bucket *port_bucket; -extern struct port_class *task_portclass; -extern struct port_class *thread_portclass; - -int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task); -void clean_pseudo_task (void *pi); -void foreach_task (task_callback_t callback); - -#define UNTESTED - -#endif diff --git a/boot-proxy-exc/util.h~ b/boot-proxy-exc/util.h~ deleted file mode 100644 index 7073cdd2..00000000 --- a/boot-proxy-exc/util.h~ +++ /dev/null @@ -1,113 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef UTIL_H -#define UTIL_H - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#define DEBUG 0 -#define INFO 1 -#define LOGLEVEL INFO - -extern FILE *logfile; - -#define LOG_START() do \ -{ \ - logfile = fopen("boot.log", "a"); \ - assert (logfile != NULL); \ -} while (0) - -#define LOG_END() fclose (logfile) - -#define output(format, ...) do \ -{ \ - char buf[1024]; \ - snprintf (buf, 1024, "boot: %s: %s\r\n", __func__, format); \ - fprintf (stderr , buf, ## __VA_ARGS__); \ - fflush (stderr); \ -} while (0) - -#if DEBUG >= LOGLEVEL -#define debug(format, ...) do \ -{ \ - char buf[1024]; \ - snprintf (buf, 1024, "boot: %s: %s\r\n", __func__, format); \ - fprintf (logfile , buf, ## __VA_ARGS__); \ - fflush (logfile); \ -} while (0) -#else -#define debug(format, ...) do {} while (0) -#endif - -#if INFO >= LOGLEVEL -#define info output -#else -#define info(format, ...) do {} while (0) -#endif - -#if ERROR >= LOGLEVEL -#define logerror(format, ...) do \ -{ \ - char buf[1024]; \ - snprintf (buf, 1024, "boot ERROR: %s: %s\r\n", __func__, format); \ - fprintf (stderr , buf, ## __VA_ARGS__); \ - fflush (stderr); \ -} while (0) -#else -#define logerror(format, ...) do {} while (0) -#endif - -#define print_port_type(port) do \ -{ \ - mach_port_type_t ptype; \ - error_t err = mach_port_type (mach_task_self (), port, &ptype); \ - if (err) \ - debug ("mach_port_type: %s", strerror (err)); \ - else if (ptype & MACH_PORT_TYPE_SEND) \ - debug ("port %d has send right", port); \ - else if (ptype & MACH_PORT_TYPE_RECEIVE) \ - debug ("port %d has receive right", port); \ - else if (ptype & MACH_PORT_TYPE_SEND_ONCE) \ - debug ("port %d has send once right", port); \ - else if (ptype & MACH_PORT_TYPE_PORT_SET) \ - debug ("port %d is port set", port); \ - else if (ptype & MACH_PORT_TYPE_DEAD_NAME) \ - debug ("port %d is a dead name", port); \ - else \ - debug ("the type of port %d is %d", port, ptype); \ - mach_port_urefs_t refs; \ - err = mach_port_get_refs (mach_task_self (), port, \ - MACH_PORT_RIGHT_SEND, &refs); \ - if (!err) \ - debug ("port send right references: %d", refs); \ -} while (0) - -#endif diff --git a/boot.backup1/Makefile~ b/boot.backup1/Makefile~ deleted file mode 100644 index 33c475fb..00000000 --- a/boot.backup1/Makefile~ +++ /dev/null @@ -1,56 +0,0 @@ -# Copyright (C) 1993,94,95,96,97,2001 Free Software Foundation, Inc. -# This file is part of the GNU Hurd. -# -# The GNU Hurd is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# The GNU Hurd is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with the GNU Hurd; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -dir := boot -makemode := utility - -SRCS = mach-crt0.c boot.c ux.c sigvec.S syscall.S \ - boot_script.c userland-boot.c list.c mach_proxy.c -COMMON-OBJS = notifyServer.o ourdeviceServer.o \ - ioServer.o io_replyUser.o device_replyUser.o \ - termServer.o bootstrapServer.o boot_script.o userland-boot.o \ - ourmach_hostServer.o ourmachServer.o ourmach_portServer.o excServer.o -OBJS = boot.o mach_host_impl.o mach_impl.o mach_port_impl.o \ - exc_impl.o list.o mach_proxy.o $(COMMON-OBJS) -UX-OBJS = mach-crt0.o uxboot.o sigvec.o syscall.o ux.o $(COMMON-OBJS) -LCLHDRS = boot_script.h ux.h util.h -target = boot -io-MIGSFLAGS=-DREPLY_PORTS -DIST_FILES=frank1.ld frankemul.ld -HURDLIBS=store shouldbeinlibc threads ports - -include ../Makeconf - -#install: /usr/local/bin/uxboot -# -#/usr/local/bin/uxboot: uxboot -# cp $< $@ - -all: boot # uxboot - -ourdevice.defs: device.defs - $(CPP) $(CPPFLAGS) -x c $< | sed -e '/out[ ]*device[ ]*:[ ]*device_t/s/device_t/mach_port_send_t/' > $@ - -uxboot.o: boot.c - $(COMPILE.c) -DUX $< -o $@ - -uxboot.0: $(UX-OBJS) ../libthreads/libthreads.a - $(LINK.o) -o $@ -static -nostartfiles -Wl,-T -Wl,$(srcdir)/frank1.ld $^ -uxboot.1: frankemul.ld uxboot.0 - $(LD) -o $@ -T $^ -uxboot: uxboot.1 - -$(OBJCOPY) -S --remove-section=.comment -O a.out-mach3 $< $@ diff --git a/boot.backup1/boot.c~ b/boot.backup1/boot.c~ deleted file mode 100644 index 94bcdac5..00000000 --- a/boot.backup1/boot.c~ +++ /dev/null @@ -1,2073 +0,0 @@ -/* Load a task using the single server, and then run it - as if we were the kernel. - Copyright (C) 1993,94,95,96,97,98,99,2000,01,02,2006 - Free Software Foundation, Inc. - -This file is part of the GNU Hurd. - -The GNU Hurd is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -The GNU Hurd is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with the GNU Hurd; see the file COPYING. If not, write to -the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* Written by Michael I. Bushnell. */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "notify_S.h" -#include "ourdevice_S.h" -#include "io_S.h" -#include "device_reply_U.h" -#include "io_reply_U.h" -#include "term_S.h" -#include "bootstrap_S.h" -/* #include "tioctl_S.h" */ -#include "util.h" -#include "boot_script.h" -#include "mach_proxy.h" - -#include - -#ifdef UX -#undef STORE /* We can't use libstore when under UX. */ -#else -#define STORE -#endif - -#ifdef UX - -#include "ux.h" - -#else /* !UX */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -//task_t kernel_task; -static struct termios orig_tty_state; -static int isig; -static char *kernel_command_line; - -struct port_bucket *port_bucket; -struct port_class *task_portclass; -struct port_class *thread_portclass; - -static void -init_termstate () -{ - struct termios tty_state; - - if (tcgetattr (0, &tty_state) < 0) - error (10, errno, "tcgetattr"); - - orig_tty_state = tty_state; - cfmakeraw (&tty_state); - if (isig) - tty_state.c_lflag |= ISIG; - - if (tcsetattr (0, 0, &tty_state) < 0) - error (11, errno, "tcsetattr"); -} - -static void -restore_termstate () -{ - tcsetattr (0, 0, &orig_tty_state); -} - -#define host_fstat fstat -typedef struct stat host_stat_t; -#define host_exit exit - -#endif /* UX */ - -mach_port_t privileged_host_port, /*master_device_port,*/ defpager; -mach_port_t pseudo_master_device_port; -mach_port_t pseudo_privileged_host_port; -mach_port_t receive_set; -mach_port_t pseudo_console, pseudo_root; -auth_t authserver; - -struct store *root_store; - -spin_lock_t queuelock = SPIN_LOCK_INITIALIZER; -spin_lock_t readlock = SPIN_LOCK_INITIALIZER; - -mach_port_t php_child_name, psmdp_child_name, taskname; - -task_t child_task; -mach_port_t bootport; - -int console_mscount; - -vm_address_t fs_stack_base; -vm_size_t fs_stack_size; - -void init_termstate (); -void restore_termstate (); - -char *fsname; - -char bootstrap_args[100] = "-"; -char *bootdevice = 0; -char *bootscript = 0; - - -void safe_gets (char *buf, int buf_len) -{ - fgets (buf, buf_len, stdin); -} - -char *useropen_dir; - -int -useropen (const char *name, int flags, int mode) -{ - if (useropen_dir) - { - static int dlen; - if (!dlen) dlen = strlen (useropen_dir); - { - int len = strlen (name); - char try[dlen + 1 + len + 1]; - int fd; - memcpy (try, useropen_dir, dlen); - try[dlen] = '/'; - memcpy (&try[dlen + 1], name, len + 1); - fd = open (try, flags, mode); - if (fd >= 0) - return fd; - } - } - return open (name, flags, mode); -} - -int -request_server (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern int io_server (mach_msg_header_t *, mach_msg_header_t *); - extern int device_server (mach_msg_header_t *, mach_msg_header_t *); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - extern int term_server (mach_msg_header_t *, mach_msg_header_t *); -/* extern int tioctl_server (mach_msg_header_t *, mach_msg_header_t *); */ - extern int bootstrap_server (mach_msg_header_t *, mach_msg_header_t *); - extern boolean_t mach_host_server (mach_msg_header_t *InHeadP, - mach_msg_header_t *OutHeadP); - extern boolean_t mach_server (mach_msg_header_t *InHeadP, - mach_msg_header_t *OutHeadP); - extern void bootstrap_compat (); - -#if 0 - if (inp->msgh_local_port == bootport && boot_like_cmudef) - { - if (inp->msgh_id == 999999) - { - bootstrap_compat (inp, outp); - return 1; - } - else - return bootstrap_server (inp, outp); - } - else -#endif - return (io_server (inp, outp) - || device_server (inp, outp) - || notify_server (inp, outp) - || term_server (inp, outp) - || mach_host_server (inp, outp) - || mach_server (inp, outp) - /* || tioctl_server (inp, outp) */); -} - -int -mach_proxy_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern boolean_t mach_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t mach_host_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t mach_port_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern boolean_t exc_server - (mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - return (mach_server (inp, outp) - || mach_host_server (inp, outp) - || mach_port_server (inp, outp) - || notify_server (inp, outp) - || exc_server (inp, outp)); -} - -void -mach_proxy_thread () -{ - ports_manage_port_operations_one_thread (port_bucket, - mach_proxy_demuxer, 0); -} - -vm_address_t -load_image (task_t t, - char *file) -{ - int fd; - union - { - struct exec a; - Elf32_Ehdr e; - } hdr; - char msg[] = ": cannot open bootstrap file\n"; - - fd = useropen (file, O_RDONLY, 0); - - if (fd == -1) - { - write (2, file, strlen (file)); - write (2, msg, sizeof msg - 1); - task_terminate (t); - host_exit (1); - } - - read (fd, &hdr, sizeof hdr); - if (*(Elf32_Word *) hdr.e.e_ident == *(Elf32_Word *) "\177ELF") - { - Elf32_Phdr phdrs[hdr.e.e_phnum], *ph; - lseek (fd, hdr.e.e_phoff, SEEK_SET); - read (fd, phdrs, sizeof phdrs); - for (ph = phdrs; ph < &phdrs[sizeof phdrs/sizeof phdrs[0]]; ++ph) - if (ph->p_type == PT_LOAD) - { - vm_address_t buf; - vm_size_t offs = ph->p_offset & (ph->p_align - 1); - vm_size_t bufsz = round_page (ph->p_filesz + offs); - - buf = (vm_address_t) mmap (0, bufsz, - PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - - lseek (fd, ph->p_offset, SEEK_SET); - read (fd, (void *)(buf + offs), ph->p_filesz); - - ph->p_memsz = ((ph->p_vaddr + ph->p_memsz + ph->p_align - 1) - & ~(ph->p_align - 1)); - ph->p_vaddr &= ~(ph->p_align - 1); - ph->p_memsz -= ph->p_vaddr; - - vm_allocate (t, (vm_address_t*)&ph->p_vaddr, ph->p_memsz, 0); - vm_write (t, ph->p_vaddr, buf, bufsz); - munmap ((caddr_t) buf, bufsz); - vm_protect (t, ph->p_vaddr, ph->p_memsz, 0, - ((ph->p_flags & PF_R) ? VM_PROT_READ : 0) | - ((ph->p_flags & PF_W) ? VM_PROT_WRITE : 0) | - ((ph->p_flags & PF_X) ? VM_PROT_EXECUTE : 0)); - } - return hdr.e.e_entry; - } - else - { - /* a.out */ - int magic = N_MAGIC (hdr.a); - int headercruft; - vm_address_t base = 0x10000; - int rndamount, amount; - vm_address_t bsspagestart, bssstart; - char *buf; - - headercruft = sizeof (struct exec) * (magic == ZMAGIC); - - amount = headercruft + hdr.a.a_text + hdr.a.a_data; - rndamount = round_page (amount); - buf = mmap (0, rndamount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - lseek (fd, sizeof hdr.a - headercruft, SEEK_SET); - read (fd, buf, amount); - vm_allocate (t, &base, rndamount, 0); - vm_write (t, base, (vm_address_t) buf, rndamount); - if (magic != OMAGIC) - vm_protect (t, base, trunc_page (headercruft + hdr.a.a_text), - 0, VM_PROT_READ | VM_PROT_EXECUTE); - munmap ((caddr_t) buf, rndamount); - - bssstart = base + hdr.a.a_text + hdr.a.a_data + headercruft; - bsspagestart = round_page (bssstart); - vm_allocate (t, &bsspagestart, - hdr.a.a_bss - (bsspagestart - bssstart), 0); - - return hdr.a.a_entry; - } -} - - -void read_reply (); -void msg_thread (); - -/* Callbacks for boot_script.c; see boot_script.h. */ - -mach_port_t -boot_script_read_file (const char *filename) -{ - static const char msg[] = ": cannot open\n"; - int fd = useropen (filename, O_RDONLY, 0); - host_stat_t st; - error_t err; - mach_port_t memobj; - vm_address_t region; - - write (2, filename, strlen (filename)); - if (fd < 0) - { - write (2, msg, sizeof msg - 1); - host_exit (1); - } - else - write (2, msg + sizeof msg - 2, 1); - - host_fstat (fd, &st); - - err = default_pager_object_create (defpager, &memobj, - round_page (st.st_size)); - if (err) - { - static const char msg[] = "cannot create default-pager object\n"; - write (2, msg, sizeof msg - 1); - host_exit (1); - } - - region = 0; - vm_map (mach_task_self (), ®ion, round_page (st.st_size), - 0, 1, memobj, 0, 0, VM_PROT_ALL, VM_PROT_ALL, VM_INHERIT_NONE); - read (fd, (char *) region, st.st_size); - munmap ((caddr_t) region, round_page (st.st_size)); - - close (fd); - return memobj; -} - -int -boot_script_exec_cmd (void *hook, - mach_port_t task, char *path, int argc, - char **argv, char *strings, int stringlen) -{ - char *args, *p; - int arg_len, i; - size_t reg_size; - void *arg_pos; - vm_offset_t stack_start, stack_end; - vm_address_t startpc, str_start; - thread_t thread; - - write (2, path, strlen (path)); - for (i = 1; i < argc; ++i) - { - write (2, " ", 1); - write (2, argv[i], strlen (argv[i])); - } - write (2, "\r\n", 2); - - debug ("load the executable file..."); - startpc = load_image (task, path); - arg_len = stringlen + (argc + 2) * sizeof (char *) + sizeof (integer_t); - arg_len += 5 * sizeof (int); - stack_end = VM_MAX_ADDRESS; - stack_start = VM_MAX_ADDRESS - 16 * 1024 * 1024; - vm_allocate (task, &stack_start, stack_end - stack_start, FALSE); - arg_pos = (void *) ((stack_end - arg_len) & ~(sizeof (natural_t) - 1)); - args = mmap (0, stack_end - trunc_page ((vm_offset_t) arg_pos), - PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - str_start = ((vm_address_t) arg_pos - + (argc + 2) * sizeof (char *) + sizeof (integer_t)); - p = args + ((vm_address_t) arg_pos & (vm_page_size - 1)); - *(int *) p = argc; - p = (void *) p + sizeof (int); - for (i = 0; i < argc; i++) - { - *(char **) p = argv[i] - strings + (char *) str_start; - p = (void *) p + sizeof (char *); - } - *(char **) p = 0; - p = (void *) p + sizeof (char *); - *(char **) p = 0; - p = (void *) p + sizeof (char *); - memcpy (p, strings, stringlen); - bzero (args, (vm_offset_t) arg_pos & (vm_page_size - 1)); - vm_write (task, trunc_page ((vm_offset_t) arg_pos), (vm_address_t) args, - stack_end - trunc_page ((vm_offset_t) arg_pos)); - munmap ((caddr_t) args, - stack_end - trunc_page ((vm_offset_t) arg_pos)); - - thread_create (task, &thread); -#ifdef i386_THREAD_STATE_COUNT - { - struct i386_thread_state regs; - reg_size = i386_THREAD_STATE_COUNT; - thread_get_state (thread, i386_THREAD_STATE, - (thread_state_t) ®s, ®_size); - regs.eip = (int) startpc; - regs.uesp = (int) arg_pos; - thread_set_state (thread, i386_THREAD_STATE, - (thread_state_t) ®s, reg_size); - } -#elif defined(ALPHA_THREAD_STATE_COUNT) - { - struct alpha_thread_state regs; - reg_size = ALPHA_THREAD_STATE_COUNT; - thread_get_state (thread, ALPHA_THREAD_STATE, - (thread_state_t) ®s, ®_size); - regs.r30 = (natural_t) arg_pos; - regs.pc = (natural_t) startpc; - thread_set_state (thread, ALPHA_THREAD_STATE, - (thread_state_t) ®s, reg_size); - } -#else -# error needs to be ported -#endif - - thread_resume (thread); - mach_port_deallocate (mach_task_self (), thread); - return 0; -} - -const char *argp_program_version = STANDARD_HURD_VERSION (boot); - -static struct argp_option options[] = -{ - { "boot-root", 'D', "DIR", 0, - "Root of a directory tree in which to find files specified in BOOT-SCRIPT" }, - { "single-user", 's', 0, 0, - "Boot in single user mode" }, - { "kernel-command-line", 'c', "COMMAND LINE", 0, - "Simulated multiboot command line to supply" }, - { "pause" , 'd', 0, 0, - "Pause for user confirmation at various times during booting" }, - { "isig", 'I', 0, 0, - "Do not disable terminal signals, so you can suspend and interrupt boot."}, - { "device-map", 'm', "DEBICENAME=DEVICEFILE", 0, - "Map the device in subhurd to the device in the main Hurd."}, - { "defpager", 'p', "PAGER TRANSLATOR", 0, - "Specify the default pager for subhurd."}, - { 0 } -}; -static char args_doc[] = "BOOT-SCRIPT"; -static char doc[] = "Boot a second hurd"; - -struct dev_map -{ - char *name; - mach_port_t port; - struct dev_map *next; -}; - -static struct dev_map *dev_map_head; - -static struct dev_map *add_dev_map (char *dev_name, char *dev_file) -{ - struct dev_map *map = (struct dev_map *) malloc (sizeof (*map)); - - assert (map); - map->name = dev_name; - map->port = file_name_lookup (dev_file, 0, 0); - if (map->port == MACH_PORT_NULL) - error (1, errno, "file_name_lookup: %s", dev_file); - map->next = dev_map_head; - dev_map_head = map; - return map; -} - -static struct dev_map *lookup_dev (char *dev_name) -{ - struct dev_map *map; - - for (map = dev_map_head; map; map = map->next) - { - if (strcmp (map->name, dev_name) == 0) - return map; - } - return NULL; -} - -char *pager_file; - -static error_t -parse_opt (int key, char *arg, struct argp_state *state) -{ - char *dev_file; - - switch (key) - { - size_t len; - - case 'c': kernel_command_line = arg; break; - - case 'D': useropen_dir = arg; break; - - case 'I': isig = 1; break; - - case 's': case 'd': - len = strlen (bootstrap_args); - if (len >= sizeof bootstrap_args - 1) - argp_error (state, "Too many bootstrap args"); - bootstrap_args[len++] = key; - bootstrap_args[len] = '\0'; - break; - - case 'm': - dev_file = strchr (arg, '='); - if (dev_file == NULL) - return ARGP_ERR_UNKNOWN; - *dev_file = 0; - add_dev_map (arg, dev_file+1); - break; - - case 'p': - pager_file = arg; - break; - - case ARGP_KEY_ARG: - if (state->arg_num == 0) - bootscript = arg; - else - return ARGP_ERR_UNKNOWN; - break; - - case ARGP_KEY_INIT: - state->child_inputs[0] = state->input; break; - - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -void init_kernel_task () -{ - error_t err; - task_t pseudo_task; - task_t kernel_task; - int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task); - - err = proc_pid2task (getproc (), 2, &kernel_task); - if (err) - error (4, err, "cannot get the kernel task port"); - create_pseudo_task (kernel_task, &pseudo_task); -} - -int -main (int argc, char **argv, char **envp) -{ - error_t err; - mach_port_t foo; - char *buf = 0; - int i, len; - char *root_store_name; - const struct argp_child kids[] = { { &store_argp }, { 0 }}; - struct argp argp = { options, parse_opt, args_doc, doc, kids }; - struct store_argp_params store_argp_params = { 0 }; - -#ifdef UNTESTED - fprintf (stderr, "running untested code\n"); -#else - fprintf (stderr, "running tested code\n"); -#endif - - port_bucket = ports_create_bucket (); - task_portclass = ports_create_class (clean_pseudo_task, 0); - thread_portclass = ports_create_class (0, 0); - init_kernel_task (); - cthread_detach (cthread_fork ((cthread_fn_t) mach_proxy_thread, (any_t) 0)); - - argp_parse (&argp, argc, argv, 0, 0, &store_argp_params); - err = store_parsed_name (store_argp_params.result, &root_store_name); - if (err) - error (2, err, "store_parsed_name"); - - err = store_parsed_open (store_argp_params.result, 0, &root_store); - if (err) - error (4, err, "%s", root_store_name); - -// get_privileged_ports (&privileged_host_port, 0 /*&master_device_port*/); -// if (privileged_host_port == MACH_PORT_NULL) -// { -// debug ("Cannot get the privileged host port"); -// exit (4); -// } -// if (master_device_port == MACH_PORT_NULL) -// { -// debug ("Cannot get the master device port"); -// exit (4); -// } - - if (pager_file == NULL) - { - fprintf (stderr, "The default pager must be specified for subhurd."); - exit (4); - } - defpager = file_name_lookup (pager_file, O_EXEC, 0); - if (defpager == MACH_PORT_NULL) - error (4, errno, "file_name_look: %s", pager_file); -// defpager = MACH_PORT_NULL; -// err = vm_set_default_memory_manager (privileged_host_port, &defpager); -// if (err) -// error (4, err, "vm_set_default_memory_manager"); - - strcat (bootstrap_args, "f"); - - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_PORT_SET, - &receive_set); - - if (root_store->class == &store_device_class && root_store->name - && (root_store->flags & STORE_ENFORCED) - && root_store->num_runs == 1 && root_store->runs[0].start == 0) - /* Let known device nodes pass through directly. */ - bootdevice = root_store->name; - else - /* Pass a magic value that we can use to do I/O to ROOT_STORE. */ - { - bootdevice = "pseudo-root"; - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_root); - mach_port_move_member (mach_task_self (), pseudo_root, receive_set); - } - - /* Initialize the pseudo master device port. */ - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_master_device_port); - mach_port_insert_right (mach_task_self (), - pseudo_master_device_port, - pseudo_master_device_port, - MACH_MSG_TYPE_MAKE_SEND); - mach_port_move_member (mach_task_self (), pseudo_master_device_port, - receive_set); - mach_port_request_notification (mach_task_self (), pseudo_master_device_port, - MACH_NOTIFY_NO_SENDERS, 1, - pseudo_master_device_port, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - - /* Initialize the pseudo privileged host port. */ - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_privileged_host_port); - mach_port_insert_right (mach_task_self (), - pseudo_privileged_host_port, - pseudo_privileged_host_port, - MACH_MSG_TYPE_MAKE_SEND); - mach_port_move_member (mach_task_self (), pseudo_privileged_host_port, - receive_set); - mach_port_request_notification (mach_task_self (), - pseudo_privileged_host_port, - MACH_NOTIFY_NO_SENDERS, 1, - pseudo_privileged_host_port, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - - /* Initialize the pseudo console port. */ - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &pseudo_console); - mach_port_move_member (mach_task_self (), pseudo_console, receive_set); - mach_port_request_notification (mach_task_self (), pseudo_console, - MACH_NOTIFY_NO_SENDERS, 1, pseudo_console, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - - if (kernel_command_line == 0) - asprintf (&kernel_command_line, "%s %s root=%s", - argv[0], bootstrap_args, bootdevice); - - /* Initialize boot script variables. */ - if (boot_script_set_variable ("host-port", VAL_PORT, -// (int) privileged_host_port) - (int) pseudo_privileged_host_port) - || boot_script_set_variable ("device-port", VAL_PORT, - (integer_t) pseudo_master_device_port) - || boot_script_set_variable ("kernel-command-line", VAL_STR, - (integer_t) kernel_command_line) - || boot_script_set_variable ("root-device", - VAL_STR, (integer_t) bootdevice) - || boot_script_set_variable ("boot-args", - VAL_STR, (integer_t) bootstrap_args)) - { - static const char msg[] = "error setting variable"; - - write (2, msg, strlen (msg)); - host_exit (1); - } - - /* Turn each `FOO=BAR' word in the command line into a boot script - variable ${FOO} with value BAR. */ - { - int len = strlen (kernel_command_line) + 1; - char *s = memcpy (alloca (len), kernel_command_line, len); - char *word; - - while ((word = strsep (&s, " \t")) != 0) - { - char *eq = strchr (word, '='); - if (eq == 0) - continue; - *eq++ = '\0'; - err = boot_script_set_variable (word, VAL_STR, (integer_t) eq); - if (err) - { - char *msg; - asprintf (&msg, "cannot set boot-script variable %s: %s\n", - word, boot_script_error_string (err)); - assert (msg); - write (2, msg, strlen (msg)); - free (msg); - host_exit (1); - } - } - } - - /* Parse the boot script. */ - { - char *p, *line; - static const char filemsg[] = "Can't open boot script\n"; - static const char memmsg[] = "Not enough memory\n"; - int amt, fd, err; - - fd = open (bootscript, O_RDONLY, 0); - if (fd < 0) - { - write (2, filemsg, sizeof (filemsg)); - host_exit (1); - } - p = buf = malloc (500); - if (!buf) - { - write (2, memmsg, sizeof (memmsg)); - host_exit (1); - } - len = 500; - amt = 0; - while (1) - { - i = read (fd, p, len - (p - buf)); - if (i <= 0) - break; - p += i; - amt += i; - if (p == buf + len) - { - char *newbuf; - - len += 500; - newbuf = realloc (buf, len); - if (!newbuf) - { - write (2, memmsg, sizeof (memmsg)); - host_exit (1); - } - p = newbuf + (p - buf); - buf = newbuf; - } - } - line = p = buf; - while (1) - { - while (p < buf + amt && *p != '\n') - p++; - *p = '\0'; - err = boot_script_parse_line (0, line); - if (err) - { - char *str; - int i; - - str = boot_script_error_string (err); - i = strlen (str); - write (2, str, i); - write (2, " in `", 5); - write (2, line, strlen (line)); - write (2, "'\n", 2); - host_exit (1); - } - if (p == buf + amt) - break; - line = ++p; - } - } - - if (index (bootstrap_args, 'd')) - { - static const char msg[] = "Pausing. . ."; - char c; - write (2, msg, sizeof (msg) - 1); - read (0, &c, 1); - } - - init_termstate (); - - /* The boot script has now been parsed into internal data structures. - Now execute its directives. */ - { - int err; - - err = boot_script_exec (); - if (err) - { - char *str = boot_script_error_string (err); - int i = strlen (str); - - write (2, str, i); - host_exit (1); - } - free (buf); - } - - mach_port_deallocate (mach_task_self (), pseudo_master_device_port); - mach_port_deallocate (mach_task_self (), pseudo_privileged_host_port); - - cthread_detach (cthread_fork ((cthread_fn_t) msg_thread, (any_t) 0)); - - debug ("start the select loop..."); - for (;;) - { - fd_set rmask; - FD_ZERO (&rmask); - FD_SET (0, &rmask); - if (select (1, &rmask, 0, 0, 0) == 1) - read_reply (); - else /* We hosed */ - error (5, errno, "select"); - } - -/* mach_msg_server (request_server, __vm_page_size * 2, receive_set); */ -} - -void -msg_thread() -{ - while (1) - mach_msg_server (request_server, 0, receive_set); -} - - -enum read_type -{ - DEV_READ, - DEV_READI, - IO_READ, -}; -struct qr -{ - enum read_type type; - mach_port_t reply_port; - mach_msg_type_name_t reply_type; - int amount; - struct qr *next; -}; -struct qr *qrhead, *qrtail; - -/* Queue a read for later reply. */ -kern_return_t -queue_read (enum read_type type, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int amount) -{ - struct qr *qr; - - qr = malloc (sizeof (struct qr)); - if (!qr) - return D_NO_MEMORY; - - spin_lock (&queuelock); - - qr->type = type; - qr->reply_port = reply_port; - qr->reply_type = reply_type; - qr->amount = amount; - qr->next = 0; - if (qrtail) - qrtail->next = qr; - else - qrhead = qrtail = qr; - - spin_unlock (&queuelock); - return D_SUCCESS; -} - -/* TRUE if there's data available on stdin, which should be used to satisfy - console read requests. */ -static int should_read = 0; - -/* Reply to a queued read. */ -void -read_reply () -{ - int avail; - struct qr *qr; - char * buf; - int amtread; - - /* By forcing SHOULD_READ to true before trying the lock, we ensure that - either we get the lock ourselves or that whoever currently holds the - lock will service this read when he unlocks it. */ - should_read = 1; - if (! spin_try_lock (&readlock)) - return; - - /* Since we're commited to servicing the read, no one else need do so. */ - should_read = 0; - - ioctl (0, FIONREAD, &avail); - if (!avail) - { - spin_unlock (&readlock); - return; - } - - spin_lock (&queuelock); - - if (!qrhead) - { - spin_unlock (&queuelock); - spin_unlock (&readlock); - return; - } - - qr = qrhead; - qrhead = qr->next; - if (qr == qrtail) - qrtail = 0; - - spin_unlock (&queuelock); - - if (qr->type == DEV_READ) - buf = mmap (0, qr->amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - else - buf = alloca (qr->amount); - amtread = read (0, buf, qr->amount); - - spin_unlock (&readlock); - - switch (qr->type) - { - case DEV_READ: - if (amtread >= 0) - ds_device_read_reply (qr->reply_port, qr->reply_type, 0, - (io_buf_ptr_t) buf, amtread); - else - ds_device_read_reply (qr->reply_port, qr->reply_type, errno, 0, 0); - break; - - case DEV_READI: - if (amtread >= 0) - ds_device_read_reply_inband (qr->reply_port, qr->reply_type, 0, - buf, amtread); - else - ds_device_read_reply_inband (qr->reply_port, qr->reply_type, errno, - 0, 0); - break; - - case IO_READ: - if (amtread >= 0) - io_read_reply (qr->reply_port, qr->reply_type, 0, - buf, amtread); - else - io_read_reply (qr->reply_port, qr->reply_type, errno, 0, 0); - break; - } - - free (qr); -} - -/* Unlock READLOCK, and also service any new read requests that it was - blocking. */ -static void -unlock_readlock () -{ - spin_unlock (&readlock); - while (should_read) - read_reply (); -} - -/* - * Handle bootstrap requests. - */ -/* These two functions from .../mk/bootstrap/default_pager.c. */ - -kern_return_t -do_bootstrap_privileged_ports(bootstrap, hostp, devicep) - mach_port_t bootstrap; - mach_port_t *hostp, *devicep; -{ - *hostp = pseudo_privileged_host_port; -// *hostp = privileged_host_port; - *devicep = pseudo_master_device_port; - return KERN_SUCCESS; -} - -void -bootstrap_compat(in, out) - mach_msg_header_t *in, *out; -{ - mig_reply_header_t *reply = (mig_reply_header_t *) out; - mach_msg_return_t mr; - - struct imsg { - mach_msg_header_t hdr; - mach_msg_type_t port_desc_1; - mach_port_t port_1; - mach_msg_type_t port_desc_2; - mach_port_t port_2; - } imsg; - - /* - * Send back the host and device ports. - */ - - imsg.hdr.msgh_bits = MACH_MSGH_BITS_COMPLEX | - MACH_MSGH_BITS(MACH_MSGH_BITS_REMOTE(in->msgh_bits), 0); - /* msgh_size doesn't need to be initialized */ - imsg.hdr.msgh_remote_port = in->msgh_remote_port; - imsg.hdr.msgh_local_port = MACH_PORT_NULL; - /* msgh_seqno doesn't need to be initialized */ - imsg.hdr.msgh_id = in->msgh_id + 100; /* this is a reply msg */ - - imsg.port_desc_1.msgt_name = MACH_MSG_TYPE_COPY_SEND; - imsg.port_desc_1.msgt_size = (sizeof(mach_port_t) * 8); - imsg.port_desc_1.msgt_number = 1; - imsg.port_desc_1.msgt_inline = TRUE; - imsg.port_desc_1.msgt_longform = FALSE; - imsg.port_desc_1.msgt_deallocate = FALSE; - imsg.port_desc_1.msgt_unused = 0; - - imsg.port_1 = pseudo_privileged_host_port; -// imsg.port_1 = privileged_host_port; - - imsg.port_desc_2 = imsg.port_desc_1; - - imsg.port_desc_2.msgt_name = MACH_MSG_TYPE_MAKE_SEND; - imsg.port_2 = pseudo_master_device_port; - - /* - * Send the reply message. - * (mach_msg_server can not do this, because the reply - * is not in standard format.) - */ - - mr = mach_msg(&imsg.hdr, MACH_SEND_MSG, - sizeof imsg, 0, MACH_PORT_NULL, - MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); - if (mr != MACH_MSG_SUCCESS) - (void) mach_port_deallocate(mach_task_self (), - imsg.hdr.msgh_remote_port); - - /* - * Tell mach_msg_server to do nothing. - */ - - reply->RetCode = MIG_NO_REPLY; -} - -/* Implementation of device interface */ - -kern_return_t -ds_device_open (mach_port_t master_port, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - dev_name_t name, - mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - struct dev_map *map; - - if (master_port != pseudo_master_device_port) - return D_INVALID_OPERATION; - - debug ("open %s", name); - if (!strcmp (name, "console")) - { -#if 0 - mach_port_insert_right (mach_task_self (), pseudo_console, - pseudo_console, MACH_MSG_TYPE_MAKE_SEND); - console_send_rights++; -#endif - console_mscount++; - *device = pseudo_console; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - return 0; - } - else if (strcmp (name, "pseudo-root") == 0) - /* Magic root device. */ - { - *device = pseudo_root; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - return 0; - } - - map = lookup_dev (name); - if (map) - { - error_t err; - *devicetype = MACH_MSG_TYPE_MOVE_SEND; - err = device_open (map->port, mode, "", device); - return err; - } - - return D_NO_SUCH_DEVICE; -// *devicetype = MACH_MSG_TYPE_MOVE_SEND; -// return device_open (master_device_port, mode, name, device); -} - -kern_return_t -ds_device_close (device_t device) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return 0; -} - -kern_return_t -ds_device_write (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - io_buf_ptr_t data, - size_t datalen, - int *bytes_written) -{ - if (device == pseudo_console) - { - debug ("device_write to console: %d", datalen); -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *bytes_written = write (1, data, datalen); - - return (*bytes_written == -1 ? D_IO_ERROR : D_SUCCESS); - } - else if (device == pseudo_root) - { - size_t wrote; - debug ("device_write to pseudo root: %d", datalen); - if (store_write (root_store, recnum, data, datalen, &wrote) != 0) - return D_IO_ERROR; - *bytes_written = wrote; - return D_SUCCESS; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_write_inband (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - io_buf_ptr_inband_t data, - size_t datalen, - int *bytes_written) -{ - if (device == pseudo_console) - { -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *bytes_written = write (1, data, datalen); - - return (*bytes_written == -1 ? D_IO_ERROR : D_SUCCESS); - } - else if (device == pseudo_root) - { - size_t wrote; - debug ("device_write_inband to pseudo root: %d", datalen); - if (store_write (root_store, recnum, data, datalen, &wrote) != 0) - return D_IO_ERROR; - *bytes_written = wrote; - return D_SUCCESS; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_read (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - int bytes_wanted, - io_buf_ptr_t *data, - size_t *datalen) -{ - if (device == pseudo_console) - { - int avail; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - *data = mmap (0, bytes_wanted, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - *datalen = read (0, *data, bytes_wanted); - unlock_readlock (); - return (*datalen == -1 ? D_IO_ERROR : D_SUCCESS); - } - else - { - kern_return_t err; - - unlock_readlock (); - err = queue_read (DEV_READ, reply_port, reply_type, bytes_wanted); - if (err) - return err; - return MIG_NO_REPLY; - } - } - else if (device == pseudo_root) - { - *datalen = 0; - return - (store_read (root_store, recnum, bytes_wanted, (void **)data, datalen) == 0 - ? D_SUCCESS - : D_IO_ERROR); - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_read_inband (device_t device, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - dev_mode_t mode, - recnum_t recnum, - int bytes_wanted, - io_buf_ptr_inband_t data, - size_t *datalen) -{ - if (device == pseudo_console) - { - int avail; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - *datalen = read (0, data, bytes_wanted); - unlock_readlock (); - return (*datalen == -1 ? D_IO_ERROR : D_SUCCESS); - } - else - { - kern_return_t err; - - unlock_readlock (); - err = queue_read (DEV_READI, reply_port, reply_type, bytes_wanted); - if (err) - return err; - return MIG_NO_REPLY; - } - } - else if (device == pseudo_root) - { - error_t err; - void *returned = data; - - *datalen = bytes_wanted; - err = - store_read (root_store, recnum, bytes_wanted, (void **)&returned, datalen); - - if (! err) - { - if (returned != data) - { - bcopy (returned, (void *)data, *datalen); - munmap ((caddr_t) returned, *datalen); - } - return D_SUCCESS; - } - else - return D_IO_ERROR; - } - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_xxx_device_set_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t statu_cnt) -{ - if (device != pseudo_console) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t *statuscnt) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, - mach_port_t rec, - int pri, - filter_array_t filt, - size_t len) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_map (device_t device, - vm_prot_t prot, - vm_offset_t offset, - vm_size_t size, - memory_object_t *pager, - int unmap) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_set_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t statuslen) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_get_status (device_t device, - dev_flavor_t flavor, - dev_status_t status, - size_t *statuslen) -{ - if (device == pseudo_console) - return D_INVALID_OPERATION; - else if (device == pseudo_root) - if (flavor == DEV_GET_SIZE) - if (*statuslen < DEV_GET_SIZE_COUNT) - return D_INVALID_SIZE; - else - { - status[DEV_GET_SIZE_DEVICE_SIZE] = root_store->size; - status[DEV_GET_SIZE_RECORD_SIZE] = root_store->block_size; - *statuslen = DEV_GET_SIZE_COUNT; - return D_SUCCESS; - } - else - return D_INVALID_OPERATION; - else - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_set_filter (device_t device, - mach_port_t receive_port, - int priority, - filter_array_t filter, - size_t filterlen) -{ - if (device != pseudo_console && device != pseudo_root) - return D_NO_SUCH_DEVICE; - return D_INVALID_OPERATION; -} - - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - static int no_console; - mach_port_t foo; - error_t err; - - err = ports_do_mach_notify_no_senders (notify, mscount); - if (!err) - { - info ("a task die"); - return 0; - } - - if (notify == pseudo_master_device_port) - { - if (no_console && pseudo_privileged_host_port == MACH_PORT_NULL) - goto bye; - pseudo_master_device_port = MACH_PORT_NULL; - return 0; - } - if (notify == pseudo_privileged_host_port) - { - if (no_console && pseudo_master_device_port == MACH_PORT_NULL) - goto bye; - pseudo_privileged_host_port = MACH_PORT_NULL; - return 0; - } - if (notify == pseudo_console) - { - if (mscount == console_mscount && - pseudo_master_device_port == MACH_PORT_NULL && - pseudo_privileged_host_port == MACH_PORT_NULL) - { - bye: - restore_termstate (); - write (2, "bye\n", 4); - host_exit (0); - } - else - { - no_console = (mscount == console_mscount); - - mach_port_request_notification (mach_task_self (), pseudo_console, - MACH_NOTIFY_NO_SENDERS, - console_mscount == mscount - ? mscount + 1 - : console_mscount, - pseudo_console, - MACH_MSG_TYPE_MAKE_SEND_ONCE, &foo); - if (foo != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), foo); - } - } - - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ -#if 0 - if (name == child_task && notify == bootport) - host_exit (0); -#endif - return EOPNOTSUPP; -} - - -/* Implementation of the Hurd I/O interface, which - we support for the console port only. */ - -kern_return_t -S_io_write (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char *data, - mach_msg_type_number_t datalen, - off_t offset, - mach_msg_type_number_t *amtwritten) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - *amtwritten = write (1, data, datalen); - return *amtwritten == -1 ? errno : 0; -} - -kern_return_t -S_io_read (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char **data, - mach_msg_type_number_t *datalen, - off_t offset, - mach_msg_type_number_t amount) -{ - mach_msg_type_number_t avail; - - if (object != pseudo_console) - return EOPNOTSUPP; - -#if 0 - if (console_send_rights) - { - mach_port_mod_refs (mach_task_self (), pseudo_console, - MACH_PORT_TYPE_SEND, -console_send_rights); - console_send_rights = 0; - } -#endif - - spin_lock (&readlock); - ioctl (0, FIONREAD, &avail); - if (avail) - { - if (amount > *datalen) - *data = mmap (0, amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - *datalen = read (0, *data, amount); - unlock_readlock (); - return *datalen == -1 ? errno : 0; - } - else - { - kern_return_t err; - unlock_readlock (); - err = queue_read (IO_READ, reply_port, reply_type, amount); - if (err) - return err; - return MIG_NO_REPLY; - } -} - -kern_return_t -S_io_seek (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - off_t offset, - int whence, - off_t *newp) -{ - return object == pseudo_console ? ESPIPE : EOPNOTSUPP; -} - -kern_return_t -S_io_readable (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_msg_type_number_t *amt) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - ioctl (0, FIONREAD, amt); - return 0; -} - -kern_return_t -S_io_set_all_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int *modes) -{ - *modes = O_READ | O_WRITE; - return object == pseudo_console ? 0 : EOPNOTSUPP; -} - -kern_return_t -S_io_set_some_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_clear_some_openmodes (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int bits) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_async (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t notify, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_mod_owner (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - pid_t owner) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_owner (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - pid_t *owner) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_icky_async_id (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_select (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int *type) -{ - fd_set r, w, x; - int n; - - if (object != pseudo_console) - return EOPNOTSUPP; - - FD_ZERO (&r); - FD_ZERO (&w); - FD_ZERO (&x); - FD_SET (0, &r); - FD_SET (0, &w); - FD_SET (0, &x); - - n = select (1, - (*type & SELECT_READ) ? &r : 0, - (*type & SELECT_WRITE) ? &w : 0, - (*type & SELECT_URG) ? &x : 0, - 0); - if (n < 0) - return errno; - - if (! FD_ISSET (0, &r)) - *type &= ~SELECT_READ; - if (! FD_ISSET (0, &w)) - *type &= ~SELECT_WRITE; - if (! FD_ISSET (0, &x)) - *type &= ~SELECT_URG; - - return 0; -} - -kern_return_t -S_io_stat (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - struct stat *st) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - - bzero (st, sizeof (struct stat)); - st->st_blksize = 1024; - return 0; -} - -kern_return_t -S_io_reauthenticate (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t rend) -{ - uid_t *gu, *au; - gid_t *gg, *ag; - size_t gulen = 0, aulen = 0, gglen = 0, aglen = 0; - error_t err; - - err = mach_port_insert_right (mach_task_self (), object, object, - MACH_MSG_TYPE_MAKE_SEND); - assert_perror (err); - - if (! auth_server_authenticate (authserver, - rend, MACH_MSG_TYPE_COPY_SEND, - object, MACH_MSG_TYPE_COPY_SEND, - &gu, &gulen, - &au, &aulen, - &gg, &gglen, - &ag, &aglen)) - { - mig_deallocate ((vm_address_t) gu, gulen * sizeof *gu); - mig_deallocate ((vm_address_t) au, aulen * sizeof *gu); - mig_deallocate ((vm_address_t) gg, gglen * sizeof *gu); - mig_deallocate ((vm_address_t) au, aulen * sizeof *gu); - } - mach_port_deallocate (mach_task_self (), rend); - mach_port_deallocate (mach_task_self (), object); - - return 0; -} - -kern_return_t -S_io_restrict_auth (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *newobject, - mach_msg_type_name_t *newobjtype, - uid_t *uids, - size_t nuids, - uid_t *gids, - size_t ngids) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - *newobject = pseudo_console; - *newobjtype = MACH_MSG_TYPE_MAKE_SEND; - console_mscount++; - return 0; -} - -kern_return_t -S_io_duplicate (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *newobj, - mach_msg_type_name_t *newobjtype) -{ - if (object != pseudo_console) - return EOPNOTSUPP; - *newobj = pseudo_console; - *newobjtype = MACH_MSG_TYPE_MAKE_SEND; - console_mscount++; - return 0; -} - -kern_return_t -S_io_server_version (mach_port_t object, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - char *name, - int *maj, - int *min, - int *edit) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_map (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *rd, - mach_msg_type_name_t *rdtype, - mach_port_t *wr, - mach_msg_type_name_t *wrtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_map_cntl (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - mach_port_t *mem, - mach_msg_type_name_t *memtype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_get_conch (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_release_conch (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_eofnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) - -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_prenotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_postnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_readsleep (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_readnotify (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - - -kern_return_t -S_io_sigio (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type) -{ - return EOPNOTSUPP; -} - - -kern_return_t -S_io_pathconf (mach_port_t obj, - mach_port_t reply_port, - mach_msg_type_name_t reply_type, - int name, int *value) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_identity (mach_port_t obj, - mach_port_t reply, - mach_msg_type_name_t replytype, - mach_port_t *id, - mach_msg_type_name_t *idtype, - mach_port_t *fsid, - mach_msg_type_name_t *fsidtype, - ino_t *fileno) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_io_revoke (mach_port_t obj, - mach_port_t reply, mach_msg_type_name_t replyPoly) -{ - return EOPNOTSUPP; -} - - - -/* Implementation of the Hurd terminal driver interface, which we only - support on the console device. */ - -kern_return_t -S_termctty_open_terminal (mach_port_t object, - int flags, - mach_port_t *result, - mach_msg_type_name_t *restype) -{ - return EOPNOTSUPP; -} - -kern_return_t -S_term_getctty (mach_port_t object, - mach_port_t *cttyid, mach_msg_type_name_t *cttyPoly) -{ - static mach_port_t id = MACH_PORT_NULL; - - if (object != pseudo_console) - return EOPNOTSUPP; - - if (id == MACH_PORT_NULL) - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_DEAD_NAME, &id); - - *cttyid = id; - *cttyPoly = MACH_MSG_TYPE_COPY_SEND; - return 0; -} - - -kern_return_t S_term_open_ctty -( - io_t terminal, - pid_t pid, - pid_t pgrp, - mach_port_t *newtty, - mach_msg_type_name_t *newttytype -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_set_nodename -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_nodename -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_peername -( - io_t terminal, - string_t name -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_set_filenode -( - io_t terminal, - file_t filenode -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_get_bottom_type -( - io_t terminal, - int *ttype -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_machdev -( - io_t terminal, - mach_port_t machdev -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_hurddev -( - io_t terminal, - io_t hurddev -) -{ return EOPNOTSUPP; } - -kern_return_t S_term_on_pty -( - io_t terminal, - io_t *ptymaster -) -{ return EOPNOTSUPP; } diff --git a/boot.backup1/exc_impl.c~ b/boot.backup1/exc_impl.c~ deleted file mode 100644 index bd48d542..00000000 --- a/boot.backup1/exc_impl.c~ +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" - -kern_return_t -catch_exception_raise (mach_port_t exception_port, mach_port_t thread, - mach_port_t task, integer_t exception, - integer_t code, integer_t subcode) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} diff --git a/boot.backup1/list.h~ b/boot.backup1/list.h~ deleted file mode 100644 index c94c0628..00000000 --- a/boot.backup1/list.h~ +++ /dev/null @@ -1,40 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef __LIST_H__ -#define __LIST_H__ - -#include - -struct list -{ - struct list *next, *prev; -}; - -void entry_init (struct list *entry); -void add_entry_head (struct list *head, struct list *entry); -void add_entry_end (struct list *head, struct list *entry); -void remove_entry (struct list *entry); - -#define LIST_HEADER_INIT() {&head, &head} -#define EMPTY_LIST(head) ((head)->next == (head)) -#define LIST_ENTRY(entry, type, field) ((type *) (((char *) entry) - offsetof (type, field))) - -#endif diff --git a/boot.backup1/mach_host_impl.c~ b/boot.backup1/mach_host_impl.c~ deleted file mode 100644 index 4947751a..00000000 --- a/boot.backup1/mach_host_impl.c~ +++ /dev/null @@ -1,551 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include - -#include -#include -#include - -#include "util.h" -#include "list.h" -#include "mach_proxy.h" - -extern mach_port_t privileged_host_port; - -/* Set task priority. */ -kern_return_t -S_task_priority (mach_port_t task, int priority, boolean_t change_threads) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = task_priority (task_pi->task_port, priority, change_threads); - ports_port_deref (task_pi); - return err; -} - -/* Routine processor_set_tasks */ -kern_return_t -S_processor_set_tasks (mach_port_t processor_set, task_array_t *task_list, - mach_msg_type_number_t *task_listCnt) -{ -// extern task_t kernel_task; - error_t err = 0; - mach_port_t *subhurd_tasks = NULL; - int size = 0; - struct list *entry; - /* no pseudo task port is created for the kernel task. */ - int num = 0; - int tot_nbtasks = ports_count_class (task_portclass) + num; - - size = tot_nbtasks * sizeof (mach_port_t); - err = vm_allocate (mach_task_self (), - (vm_address_t *) (void *) &subhurd_tasks, - size, 1); - if (err) - goto out; - -// subhurd_tasks[0] = kernel_task; - entry = &tasks_head; - for (entry = tasks_head.next; entry != &tasks_head; entry = entry->next) - { - struct task_info *task_pi = LIST_ENTRY (entry, struct task_info, list); - assert (num < tot_nbtasks); - subhurd_tasks[num++] = ports_get_right (task_pi); - } - assert (num == tot_nbtasks); - debug ("get %d tasks", tot_nbtasks); - *task_list = subhurd_tasks; - *task_listCnt = tot_nbtasks; - -out: - /* I enable the class here, - * so no pseudo task port can be created when I count the number of tasks. */ - ports_enable_class (task_portclass); - /* The array will be deallocated after it is sent, - * but the task ports in it don't need to, - * because I only call ports_get_right() - * and the reference count isn't increased. */ - return err; -} - -/* Get control port for a processor set. */ -kern_return_t -S_host_processor_set_priv (mach_port_t host_priv, mach_port_t set_name, - mach_port_t *set, mach_msg_type_name_t *setPoly) -{ - static mach_port_t set_port = MACH_PORT_NULL; - kern_return_t ret = 0; - - // TODO create a port for each processor set - debug (""); - if (set_port == MACH_PORT_NULL) - { - extern mach_port_t receive_set; - // TODO use libports - mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &set_port); - mach_port_move_member (mach_task_self (), set_port, - receive_set); - mach_port_insert_right (mach_task_self (), set_port, - set_port, MACH_MSG_TYPE_MAKE_SEND); - } - *set = set_port; - *setPoly = MACH_MSG_TYPE_COPY_SEND; - return ret; -} - -/* Routine host_reboot */ -kern_return_t -S_host_reboot (mach_port_t host_priv, int options) -{ - debug (""); - assert (0); - // TODO - return EOPNOTSUPP; -} - -/* Routine vm_wire */ -kern_return_t -S_vm_wire (mach_port_t host_priv, mach_port_t task, - vm_address_t address, vm_size_t size, vm_prot_t access) -{ - debug (""); - assert (0); - // TODO - return 0; -} - -/* Routine thread_wire */ -kern_return_t -S_thread_wire (mach_port_t host_priv, mach_port_t thread, boolean_t wired) -{ - debug (""); - assert (0); - // TODO - return 0; -} - -//////////the request to the host isn't forwarded by the proxy////////// - -/* Routine host_processor_sets */ -kern_return_t -S_host_processor_sets (mach_port_t host, - processor_set_name_array_t *processor_sets, - mach_msg_type_number_t *processor_setsCnt) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Routine host_get_time */ -kern_return_t -S_host_get_time (mach_port_t host, time_value_t *current_time) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Routine host_info */ -kern_return_t -S_host_info (mach_port_t host, int flavor, host_info_t host_info_out, - mach_msg_type_number_t *host_info_outCnt) -{ - debug (""); - assert (0); - // the request to the host isn't forwarded. - return EOPNOTSUPP; -} - -/* Get string describing current kernel version. */ -kern_return_t -S_host_kernel_version (mach_port_t host, kernel_version_t kernel_version) -{ - debug (""); - assert (0); - // the proxy doesn't forward the request to the host port. - return EOPNOTSUPP; -} - -///////////////////the RPCs not used by Hurd////////////////////// - -/* Get list of processors on this host. */ -kern_return_t -S_host_processors (mach_port_t host_priv, - processor_array_t *processor_list, - mach_msg_type_number_t *processor_listCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Start processor. */ -kern_return_t -S_processor_start (mach_port_t processor) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Exit processor -- may not be restartable. */ -kern_return_t -S_processor_exit (mach_port_t processor) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get default processor set for host. */ -kern_return_t -S_processor_set_default (mach_port_t host, mach_port_t *default_set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* - * Create new processor set. Returns real port for manipulations, - * and name port for obtaining information. - */ -kern_return_t -S_processor_set_create (mach_port_t host, mach_port_t *new_set, - mach_port_t *new_name) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Destroy processor set. */ -kern_return_t -S_processor_set_destroy (mach_port_t set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign processor to processor set. */ -kern_return_t -S_processor_assign (mach_port_t processor, mach_port_t new_set, boolean_t wait) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get current assignment for thread. */ -kern_return_t -S_processor_get_assignment (mach_port_t processor, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - // TODO change the interface of the function. - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign task to processor set. */ -kern_return_t -S_task_assign (mach_port_t task, mach_port_t new_set, boolean_t assign_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Assign task to default set. */ -kern_return_t -S_task_assign_default (mach_port_t task, boolean_t assign_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Get current assignment for task. */ -kern_return_t -S_task_get_assignment (mach_port_t task, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Set max priority for processor_set. */ -kern_return_t -S_processor_set_max_priority (mach_port_t processor_set, int max_priority, - boolean_t change_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_policy_enable */ -kern_return_t -S_processor_set_policy_enable (mach_port_t processor_set, int policy) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_policy_disable */ -kern_return_t -S_processor_set_policy_disable (mach_port_t processor_set, int policy, - boolean_t change_threads) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_threads */ -kern_return_t -S_processor_set_threads (mach_port_t processor_set, - thread_array_t *thread_list, - mach_msg_type_number_t *thread_listCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_set_time */ -kern_return_t -S_host_set_time (mach_port_t host_priv, time_value_t new_time) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_adjust_time */ -kern_return_t -S_host_adjust_time (mach_port_t host_priv, time_value_t new_adjustment, - time_value_t *old_adjustment) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_info */ -kern_return_t -S_processor_info (mach_port_t processor, int flavor, mach_port_t *host, - processor_info_t processor_info_out, - mach_msg_type_number_t *processor_info_outCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_set_info */ -kern_return_t -S_processor_set_info (mach_port_t set_name, int flavor, mach_port_t *host, - processor_set_info_t info_out, - mach_msg_type_number_t *info_outCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine processor_control */ -kern_return_t -S_processor_control (mach_port_t processor, processor_info_t processor_cmd, - mach_msg_type_number_t processor_cmdCnt) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -/* Routine host_get_boot_info */ -kern_return_t -S_host_get_boot_info (mach_port_t host_priv, kernel_boot_info_t boot_info) -{ - debug (""); - assert (0); - // Hurd currently doesn't use it. - return EOPNOTSUPP; -} - -///////////////////it's not a proxy for thread requests/////////////////// - -/* Assign thread to processor set. */ -kern_return_t -S_thread_assign (mach_port_t thread, mach_port_t new_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Assign thread to default set. */ -kern_return_t -S_thread_assign_default (mach_port_t thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Get current assignment for thread. */ -kern_return_t -S_thread_get_assignment (mach_port_t thread, mach_port_t *assigned_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Set priority for thread. */ -kern_return_t S_thread_priority (mach_port_t thread, int priority, - boolean_t set_max) -{ - debug (""); - assert (0); - return thread_priority (thread, priority, set_max); -} - -/* Set max priority for thread. */ -kern_return_t S_thread_max_priority (mach_port_t thread, - mach_port_t processor_set, - int max_priority) -{ - debug (""); - assert (0); - return thread_max_priority (thread, processor_set, max_priority); -} - -/* Routine thread_depress_abort */ -kern_return_t S_thread_depress_abort (mach_port_t thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Set policy for thread */ -kern_return_t S_thread_policy (mach_port_t thread, int policy, int data) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -////////////////////don't support obsolete requests/////////////////////// - -/* Routine yyy_host_info */ -/* obsolete */ -kern_return_t -S_yyy_host_info (mach_port_t host, int flavor, host_info_t host_info_out, - mach_msg_type_number_t *host_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_info */ -/* obsolete */ -kern_return_t -S_yyy_processor_info (mach_port_t processor, int flavor, mach_port_t *host, - processor_info_t processor_info_out, - mach_msg_type_number_t *processor_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_control */ -/* obsolete */ -kern_return_t -S_yyy_processor_control (mach_port_t processor, - processor_info_t processor_cmd, - mach_msg_type_number_t processor_cmdCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* - * Get rights to default processor set for host. - * Replaced by host_processor_set_priv. - */ -kern_return_t -S_xxx_processor_set_default_priv (mach_port_t host, mach_port_t *default_set) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine yyy_processor_set_info */ -/* obsolete */ -kern_return_t -S_yyy_processor_set_info (mach_port_t set_name, int flavor, - mach_port_t *host, processor_set_info_t info_out, - mach_msg_type_number_t *info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} diff --git a/boot.backup1/mach_impl.c~ b/boot.backup1/mach_impl.c~ deleted file mode 100644 index 6e294218..00000000 --- a/boot.backup1/mach_impl.c~ +++ /dev/null @@ -1,869 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" -#include "list.h" - -/* Routine task_create */ -kern_return_t -S_task_create (mach_port_t target_task, boolean_t inherit_memory, - mach_port_t *child_task, mach_msg_type_name_t *child_taskPoly) -{ - struct task_info *target_task_pi; - task_t real_child_task; - task_t pseudo_child_task; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", target_task_pi->task_port); - err = task_create (target_task_pi->task_port, - inherit_memory, &real_child_task); - ports_port_deref (target_task_pi); - if (err) - return err; - - err = create_pseudo_task (real_child_task, &pseudo_child_task); - if (err) - { - task_terminate (real_child_task); - return err; - } - - *child_task = pseudo_child_task; - *child_taskPoly = MACH_MSG_TYPE_COPY_SEND; - - debug ("new task: %d", real_child_task); - return err; -} - -/* Routine task_terminate */ -kern_return_t -S_task_terminate (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get request from task %d", target_task_pi->task_port); - err = task_terminate (target_task_pi->task_port); - debug ("task_terminate: %s", strerror (err)); - ports_destroy_right (target_task_pi); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_info */ -kern_return_t -S_task_info (mach_port_t target_task, int flavor, - task_info_t task_info_out, - mach_msg_type_number_t *task_info_outCnt) -{ - struct task_info *target_task_pi; - error_t err; - - debug (""); - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = task_info (target_task_pi->task_port, flavor, - task_info_out, task_info_outCnt); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_allocate */ -kern_return_t -S_vm_allocate (mach_port_t target_task, vm_address_t *address, - vm_size_t size, boolean_t anywhere) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("request is from task %d", target_task_pi->task_port); - - /* This should be enough. */ - err = vm_allocate (target_task_pi->task_port, address, size, anywhere); - debug ("address: %d, size: %d, anywhere: %d, %s", - *address, size, anywhere, strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_deallocate */ -kern_return_t -S_vm_deallocate (mach_port_t target_task, - vm_address_t address, vm_size_t size) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", target_task_pi->task_port); - err = vm_deallocate (target_task_pi->task_port, address, size); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_protect */ -kern_return_t -S_vm_protect (mach_port_t target_task, vm_address_t address, - vm_size_t size, boolean_t set_maximum, - vm_prot_t new_protection) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("request is from task %d", target_task_pi->task_port); - err = vm_protect (target_task_pi->task_port, address, - size, set_maximum, new_protection); - debug ("vm_protect: %s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_inherit */ -kern_return_t -S_vm_inherit (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_inherit_t new_inheritance) -{ - struct task_info *target_task_pi; - error_t err; - - debug (""); - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_inherit (target_task_pi->task_port, address, - size, new_inheritance); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_read */ -kern_return_t -S_vm_read (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_offset_t *data, - mach_msg_type_number_t *dataCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("get a request from task %d", target_task_pi->task_port); - err = vm_read (target_task_pi->task_port, address, size, data, dataCnt); - ports_port_deref (target_task_pi); - /* The deallocation bit is set.*/ - return err; -} - -/* Routine vm_write */ -kern_return_t -S_vm_write (mach_port_t target_task, vm_address_t address, - vm_offset_t data, mach_msg_type_number_t dataCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", target_task_pi->task_port); - err = vm_write (target_task_pi->task_port, address, data, dataCnt); - ports_port_deref (target_task_pi); - /* the proxy get the mapped pages from the client, - * deallocate it here. */ - vm_deallocate (mach_task_self (), data, dataCnt); - return err; -} - -/* Routine vm_copy */ -kern_return_t -S_vm_copy (mach_port_t target_task, vm_address_t source_address, - vm_size_t size, vm_address_t dest_address) -{ - struct task_info *target_task_pi; - error_t err; - - debug (""); - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - err = vm_copy (target_task_pi->task_port, source_address, - size, dest_address); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_region */ -kern_return_t -S_vm_region (mach_port_t target_task, vm_address_t *address, - vm_size_t *size, vm_prot_t *protection, - vm_prot_t *max_protection, vm_inherit_t *inheritance, - boolean_t *is_shared, mach_port_t *object_name, - vm_offset_t *offset) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("get a request from task %d", target_task_pi->task_port); - err = vm_region (target_task_pi->task_port, address, size, protection, - max_protection, inheritance, is_shared, object_name, offset); - debug ("vm_region: %s, object: %d", strerror (err), *object_name); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_statistics */ -kern_return_t -S_vm_statistics (mach_port_t target_task, vm_statistics_data_t *vm_stats) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("request is from task %d", target_task_pi->task_port); - err = vm_statistics (target_task_pi->task_port, vm_stats); - ports_port_deref (target_task_pi); - debug ("vm_statistics: %s", strerror (err)); - return err; -} - -/* Routine mach_ports_register */ -kern_return_t -S_mach_ports_register (mach_port_t target_task, - mach_port_array_t init_port_set, - mach_msg_type_number_t init_port_setCnt) -{ - debug (""); - assert (0); - // not used by Hurd - return EOPNOTSUPP; -} - -/* Routine mach_ports_lookup */ -kern_return_t -S_mach_ports_lookup (mach_port_t target_task, - mach_port_array_t *init_port_set, - mach_msg_type_number_t *init_port_setCnt) -{ - debug (""); - assert (0); - // not used by Hurd - return EOPNOTSUPP; -} - -/* Routine vm_set_default_memory_manager */ -kern_return_t -S_vm_set_default_memory_manager (mach_port_t host_priv, - mach_port_t *default_manager) -{ - extern mach_port_t defpager; - debug (""); - *default_manager = defpager; - return 0; -} - - -/* Routine xxx_task_info */ -kern_return_t -S_xxx_task_info (mach_port_t target_task, int flavor, - task_info_t task_info_out, - mach_msg_type_number_t *task_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_host_info */ -kern_return_t -S_xxx_host_info (mach_port_t target_task, machine_info_data_t *info) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_slot_info */ -kern_return_t -S_xxx_slot_info (mach_port_t target_task, int slot, machine_slot_data_t *info) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_cpu_control */ -kern_return_t -S_xxx_cpu_control (mach_port_t target_task, int cpu, boolean_t running) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_suspend */ -kern_return_t -S_task_suspend (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get request from task %d", target_task_pi->task_port); - err = task_suspend (target_task_pi->task_port); - debug ("task_suspend: %s", strerror (err)); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_resume */ -kern_return_t -S_task_resume (mach_port_t target_task) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("get request from task %d", target_task_pi->task_port); - err = task_resume (target_task_pi->task_port); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_get_special_port */ -kern_return_t -S_task_get_special_port (mach_port_t target_task, int which_port, - mach_port_t *special_port, - mach_msg_type_name_t *special_portPoly) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("request is from task %d", target_task_pi->task_port); - err = task_get_special_port (target_task_pi->task_port, - which_port, special_port); - debug ("task_get_special_port (%d, %d): %s\n", - which_port, *special_port, strerror (err)); - ports_port_deref (target_task_pi); - if (err) - return err; - *special_portPoly = MACH_MSG_TYPE_MOVE_SEND; - return err; -} - -/* Routine task_set_special_port */ -kern_return_t -S_task_set_special_port (mach_port_t target_task, int which_port, - mach_port_t special_port) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("get request from task %d", target_task_pi->task_port); - err = task_set_special_port (target_task_pi->task_port, which_port, - special_port); - ports_port_deref (target_task_pi); - debug ("task_set_special_port (%d, %d): %s", - which_port, special_port, strerror (err)); - mach_port_deallocate (mach_task_self (), special_port); - return err; -} - -/* Routine task_ras_control */ -kern_return_t -S_task_ras_control (mach_port_t target_task, vm_address_t basepc, - vm_address_t boundspc, int flavor) -{ - struct task_info *target_task_pi; - error_t err; - - debug (""); - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = task_ras_control (target_task_pi->task_port, basepc, boundspc, flavor); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine vm_map */ -kern_return_t -S_vm_map (mach_port_t target_task, vm_address_t *address, vm_size_t size, - vm_address_t mask, boolean_t anywhere, mach_port_t memory_object, - vm_offset_t offset, boolean_t copy, vm_prot_t cur_protection, - vm_prot_t max_protection, vm_inherit_t inheritance) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("request is from task %d", target_task_pi->task_port); - err = vm_map (target_task_pi->task_port, address, size, mask, - anywhere, memory_object, offset, copy, - cur_protection, max_protection, inheritance); - ports_port_deref (target_task_pi); - debug ("vm_map: %s", strerror (err)); - mach_port_deallocate (mach_task_self (), memory_object); - return err; -} - -/* Routine vm_machine_attribute */ -kern_return_t -S_vm_machine_attribute (mach_port_t target_task, vm_address_t address, - vm_size_t size, vm_machine_attribute_t attribute, - vm_machine_attribute_val_t *value) -{ - struct task_info *target_task_pi; - error_t err; - - debug (""); - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - err = vm_machine_attribute (target_task_pi->task_port, address, - size, attribute, value); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine task_threads */ -kern_return_t -S_task_threads (mach_port_t target_task, thread_array_t *thread_list, - mach_msg_type_number_t *thread_listCnt) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - target_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - - debug ("get a request from task %d", target_task_pi->task_port); - // TODO: use move send - err = task_threads (target_task_pi->task_port, - thread_list, thread_listCnt); - info ("task_threads: %s, number of threads: %d", - strerror (err), *thread_listCnt); - ports_port_deref (target_task_pi); - return err; -} - -/* Routine thread_create */ -kern_return_t -S_thread_create (mach_port_t parent_task, mach_port_t *child_thread, - mach_msg_type_name_t *child_threadPoly) -{ - struct task_info *target_task_pi; - error_t err; - - target_task_pi = ports_lookup_port (port_bucket, - parent_task, task_portclass); - if (target_task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", target_task_pi->task_port); - err = thread_create (target_task_pi->task_port, child_thread); - debug ("thread_create: thread port: %d: %s", - *child_thread, strerror (err)); - ports_port_deref (target_task_pi); - *child_threadPoly = MACH_MSG_TYPE_MOVE_SEND; - return err; -} - -////////////////////it doesn't forward thread request//////////////// - -/* Routine thread_suspend */ -kern_return_t -S_thread_suspend (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_resume */ -kern_return_t -S_thread_resume (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_abort */ -kern_return_t -S_thread_abort (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_get_state */ -kern_return_t -S_xxx_thread_get_state (mach_port_t target_thread, int flavor, - thread_state_t old_state, - mach_msg_type_number_t *old_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_set_state */ -kern_return_t -S_xxx_thread_set_state (mach_port_t target_thread, int flavor, - thread_state_t new_state, - mach_msg_type_number_t new_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_thread_info */ -kern_return_t -S_xxx_thread_info (mach_port_t target_thread, int flavor, - thread_info_t thread_info_out, - mach_msg_type_number_t *thread_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_get_special_port */ -kern_return_t -S_thread_get_special_port (mach_port_t thread, int which_port, - mach_port_t *special_port) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_set_special_port */ -kern_return_t -S_thread_set_special_port (mach_port_t thread, int which_port, - mach_port_t special_port) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_terminate */ -kern_return_t -S_thread_terminate (mach_port_t target_thread) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_get_state */ -kern_return_t -S_thread_get_state (mach_port_t target_thread, int flavor, - thread_state_t old_state, - mach_msg_type_number_t *old_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_set_state */ -kern_return_t -S_thread_set_state (mach_port_t target_thread, int flavor, - thread_state_t new_state, - mach_msg_type_number_t new_stateCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine thread_info */ -kern_return_t -S_thread_info (mach_port_t target_thread, int flavor, - thread_info_t thread_info_out, - mach_msg_type_number_t *thread_info_outCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/////////////////////RPC related to memory object//////////////////// -//////////////////they are not needed to be forwarded//////////////// - -/* SimpleRoutine memory_object_data_provided */ -kern_return_t -S_memory_object_data_provided (mach_port_t memory_control, - vm_offset_t offset, vm_offset_t data, - mach_msg_type_number_t dataCnt, - vm_prot_t lock_value) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_unavailable */ -kern_return_t -S_memory_object_data_unavailable (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine memory_object_get_attributes */ -kern_return_t -S_memory_object_get_attributes (mach_port_t memory_control, - boolean_t *object_ready, boolean_t *may_cache, - memory_object_copy_strategy_t *copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine xxx_memory_object_lock_request */ -kern_return_t -S_xxx_memory_object_lock_request (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - boolean_t should_clean, - boolean_t should_flush, - vm_prot_t lock_value, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_lock_request */ -kern_return_t -S_memory_object_lock_request ( mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - memory_object_return_t should_return, - boolean_t should_flush, - vm_prot_t lock_value, mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_error */ -kern_return_t -S_memory_object_data_error (mach_port_t memory_control, - vm_offset_t offset, vm_size_t size, - kern_return_t error_value) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_set_attributes */ -kern_return_t -S_memory_object_set_attributes (mach_port_t memory_control, - boolean_t object_ready, boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_destroy */ -kern_return_t -S_memory_object_destroy (mach_port_t memory_control, kern_return_t reason) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_data_supply */ -kern_return_t -S_memory_object_data_supply (mach_port_t memory_control, - vm_offset_t offset, vm_offset_t data, - mach_msg_type_number_t dataCnt, - vm_prot_t lock_value, boolean_t precious, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_ready */ -kern_return_t -S_memory_object_ready (mach_port_t memory_control, boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* SimpleRoutine memory_object_change_attributes */ -kern_return_t -S_memory_object_change_attributes (mach_port_t memory_control, - boolean_t may_cache, - memory_object_copy_strategy_t copy_strategy, - mach_port_t reply_to, - mach_msg_type_name_t reply_toPoly) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -///////////////////////RPCs related to emulation///////////////////// -//////////////////////subhurd doesn't support it.//////////////////// - -/* Routine task_get_emulation_vector */ -kern_return_t -S_task_get_emulation_vector (mach_port_t task, int *vector_start, - emulation_vector_t *emulation_vector, - mach_msg_type_number_t *emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_set_emulation_vector */ -kern_return_t -S_task_set_emulation_vector (mach_port_t task, int vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_task_get_emulation_vector */ -kern_return_t -S_xxx_task_get_emulation_vector (mach_port_t task, int *vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t *emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine xxx_task_set_emulation_vector */ -kern_return_t -S_xxx_task_set_emulation_vector (mach_port_t task, int vector_start, - emulation_vector_t emulation_vector, - mach_msg_type_number_t emulation_vectorCnt) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} - -/* Routine task_set_emulation */ -kern_return_t -S_task_set_emulation (mach_port_t target_port, - vm_address_t routine_entry_pt, int routine_number) -{ - debug (""); - assert (0); - return EOPNOTSUPP; -} diff --git a/boot.backup1/mach_port_impl.c~ b/boot.backup1/mach_port_impl.c~ deleted file mode 100644 index 2933950e..00000000 --- a/boot.backup1/mach_port_impl.c~ +++ /dev/null @@ -1,378 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* This file implements the server-side RPC functions of mach_host. */ - -#include -#include -#include -#include - -#include "util.h" -#include "mach_proxy.h" - -kern_return_t -S_mach_port_names (mach_port_t task, mach_port_array_t *names, - mach_msg_type_number_t *namesCnt, - mach_port_type_array_t *types, - mach_msg_type_number_t *typesCnt) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_names (task_pi->task_port, - names, namesCnt, types, typesCnt); - /* The deallocation bit is set, - * so 'names' and 'types' will be deallocated after the reply is sent. */ - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_type */ -kern_return_t -S_mach_port_type (mach_port_t task, mach_port_t name, mach_port_type_t *ptype) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_type (task_pi->task_port, name, ptype); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_rename */ -kern_return_t -S_mach_port_rename (mach_port_t task, - mach_port_t old_name, mach_port_t new_name) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - /* old_name and new_name are just names, - * so I don't need to deallocate them. - * It should be the same for other RPCs that only deal with port names */ - err = mach_port_rename (task_pi->task_port, old_name, new_name); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_allocate_name */ -kern_return_t -S_mach_port_allocate_name (mach_port_t task, - mach_port_right_t right, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_allocate_name (task_pi->task_port, right, name); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_allocate */ -kern_return_t -S_mach_port_allocate (mach_port_t task, - mach_port_right_t right, mach_port_t *name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", task_pi->task_port); - print_port_type (task_pi->task_port); - err = mach_port_allocate (task_pi->task_port, right, name); - debug ("mach_port_allocate: %s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_destroy */ -kern_return_t -S_mach_port_destroy (mach_port_t task, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from port %d", task_pi->task_port); - err = mach_port_destroy (task_pi->task_port, name); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_deallocate */ -kern_return_t -S_mach_port_deallocate (mach_port_t task, mach_port_t name) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", task_pi->task_port); - err = mach_port_deallocate (task_pi->task_port, name); - debug ("mach_port_deallocate port: %d: %s", name, strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_get_refs */ -kern_return_t -S_mach_port_get_refs (mach_port_t task, mach_port_t name, - mach_port_right_t right, mach_port_urefs_t *refs) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_refs (task_pi->task_port, name, right, refs); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_mod_refs */ -kern_return_t -S_mach_port_mod_refs (mach_port_t task, mach_port_t name, - mach_port_right_t right, mach_port_delta_t delta) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", task_pi->task_port); - err = mach_port_mod_refs (task_pi->task_port, name, right, delta); - debug ("mach_port_mod_refs: %s, port: %d, delta: %d", - strerror (err), right, delta); - ports_port_deref (task_pi); - return err; -} - -/* Routine old_mach_port_get_receive_status */ -kern_return_t -S_old_mach_port_get_receive_status (mach_port_t task, mach_port_t name, - old_mach_port_status_t *status) -{ - debug (""); - assert (0); - /* Hurd currently doesn't use it. */ - return EOPNOTSUPP; -} - -/* Routine mach_port_set_qlimit */ -kern_return_t -S_mach_port_set_qlimit (mach_port_t task, mach_port_t name, - mach_port_msgcount_t qlimit) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_qlimit (task_pi->task_port, name, qlimit); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_set_mscount */ -kern_return_t -S_mach_port_set_mscount (mach_port_t task, mach_port_t name, - mach_port_mscount_t mscount) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_mscount (task_pi->task_port, name, mscount); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_get_set_status */ -kern_return_t -S_mach_port_get_set_status (mach_port_t task, mach_port_t name, - mach_port_array_t *members, - mach_msg_type_number_t *membersCnt) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_set_status (task_pi->task_port, - name, members, membersCnt); - ports_port_deref (task_pi); - /* The deallocation bit is set, - * so 'members' will be deallocated after the reply is sent. */ - return err; -} - -/* Routine mach_port_move_member */ -kern_return_t -S_mach_port_move_member (mach_port_t task, mach_port_t member, - mach_port_t after) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_move_member (task_pi->task_port, member, after); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_request_notification */ -kern_return_t -S_mach_port_request_notification (mach_port_t task, mach_port_t name, - mach_msg_id_t id, mach_port_mscount_t sync, - mach_port_t notify, mach_port_t *previous, - mach_msg_type_name_t *previousPoly) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", task_pi->task_port); - /* notify is send-once right from the client. */ - err = mach_port_request_notification (task_pi->task_port, name, id, sync, - notify, MACH_MSG_TYPE_MOVE_SEND_ONCE, - previous); - debug ("mach_port_request_notification, id: %d, old port: %d, %s", - id, *previous, strerror (err)); - ports_port_deref (task_pi); - if (err) - return err; - *previousPoly = MACH_MSG_TYPE_MOVE_SEND_ONCE; - return 0; -} - -/* Routine mach_port_insert_right */ -kern_return_t -S_mach_port_insert_right (mach_port_t task, mach_port_t name, - mach_port_t poly, mach_msg_type_name_t polyPoly) -{ - struct task_info *task_pi; - error_t err; - - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - debug ("get a request from task %d", task_pi->task_port); - /* polyPoly can only be three possible values: MACH_MSG_TYPE_PORT_SEND, - * MACH_MSG_TYPE_PORT_SEND_ONCE and MACH_MSG_TYPE_PORT_RECEIVE, - * so port will be deallocated when mach_port_insert_right is called. */ - err = mach_port_insert_right (task_pi->task_port, name, poly, polyPoly); - debug ("mach_port_insert_right: %s", strerror (err)); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_extract_right */ -kern_return_t -S_mach_port_extract_right (mach_port_t task, mach_port_t name, - mach_msg_type_name_t msgt_name, mach_port_t *poly, - mach_msg_type_name_t *polyPoly) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_extract_right (task_pi->task_port, name, msgt_name, - poly, polyPoly); - ports_port_deref (task_pi); - /* *polyPoly can only be MACH_MSG_TYPE_PORT_SEND, MACH_MSG_TYPE_PORT_RECEIVE, - * or MACH_MSG_TYPE_PORT_SEND_ONCE, so the port extracted from 'task' - * will be moved to the client. */ - return err; -} - -/* Routine mach_port_get_receive_status */ -kern_return_t -S_mach_port_get_receive_status (mach_port_t task, mach_port_t name, - mach_port_status_t *status) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_get_receive_status (task_pi->task_port, name, status); - ports_port_deref (task_pi); - return err; -} - -/* Routine mach_port_set_seqno */ -kern_return_t -S_mach_port_set_seqno (mach_port_t task, mach_port_t name, - mach_port_seqno_t seqno) -{ - struct task_info *task_pi; - error_t err; - - debug (""); - task_pi = ports_lookup_port (port_bucket, task, task_portclass); - if (task_pi == NULL) - return EOPNOTSUPP; - err = mach_port_set_seqno (task_pi->task_port, name, seqno); - ports_port_deref (task_pi); - return err; -} diff --git a/boot.backup1/mach_proxy.c~ b/boot.backup1/mach_proxy.c~ deleted file mode 100644 index 54c84edd..00000000 --- a/boot.backup1/mach_proxy.c~ +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include - -#include "util.h" -#include "mach_proxy.h" - -LIST_HEADER (tasks_head); - -int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task) -{ - /* the first task is the kernel task. */ - struct task_info *task_pi; - task_t pseudo_task; - error_t err; - - err = ports_create_port (task_portclass, port_bucket, - sizeof (struct task_info), &task_pi); - if (err) - return err; - - pseudo_task = ports_get_right (task_pi); - mach_port_insert_right (mach_task_self (), pseudo_task, pseudo_task, - MACH_MSG_TYPE_MAKE_SEND); - ports_port_deref (task_pi); - - task_pi->task_port = real_task; - entry_init (&task_pi->list); - add_entry_end (&tasks_head, &task_pi->list); - /* 0 is used by kernel task */ - if (ret_pseudo_task) - *ret_pseudo_task = pseudo_task; - - err = task_set_kernel_port (real_task, pseudo_task); - if (err) - { - debug ("fail to set the kernel port: %s", strerror (err)); - // TODO: I hope I destroy it in the right way. - ports_destroy_right (task_pi); - } - - return err; -} - -void clean_pseudo_task (void *pi) -{ - struct task_info *task = pi; - debug ("remove a pseudo task from the list"); - remove_entry (&task->list); -} diff --git a/boot.backup1/mach_proxy.h~ b/boot.backup1/mach_proxy.h~ deleted file mode 100644 index 28778402..00000000 --- a/boot.backup1/mach_proxy.h~ +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (C) 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef PROXY_H -#define PROXY_H - -#include -#include -#include - -#include "list.h" - -struct task_info -{ - struct port_info task; - task_t task_port; - /* The linked list is used to keep the order of tasks */ - struct list list; -}; - -struct thread_info -{ - struct port_info thread; - thread_t thread_port; -}; - -extern struct port_bucket *port_bucket; -extern struct port_class *task_portclass; -extern struct port_class *thread_portclass; -extern struct list task_list; - -int create_pseudo_task (task_t real_task, task_t *ret_pseudo_task); -void clean_pseudo_task (void *pi); - -#define UNTESTED - -#endif diff --git a/boot.backup1/ourmach.defs~ b/boot.backup1/ourmach.defs~ deleted file mode 100644 index 5265269f..00000000 --- a/boot.backup1/ourmach.defs~ +++ /dev/null @@ -1,770 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University. - * Copyright (c) 1993,1994 The University of Utah and - * the Computer Systems Laboratory (CSL). - * All rights reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON, THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF - * THIS SOFTWARE IN ITS "AS IS" CONDITION, AND DISCLAIM ANY LIABILITY - * OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF - * THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * Matchmaker definitions file for Mach kernel interface. - */ - -#ifdef MACH_KERNEL -simport ; /* for obsolete routines */ -#endif /* MACH_KERNEL */ - -subsystem -#if KERNEL_USER - KernelUser -#endif /* KERNEL_USER */ -#if KERNEL_SERVER - KernelServer -#endif /* KERNEL_SERVER */ - mach 2000; - -serverprefix S_; - -#ifdef KERNEL_USER -userprefix r_; -#endif /* KERNEL_USER */ - -#include -#include - -skip; /* old port_allocate */ -skip; /* old port_deallocate */ -skip; /* old port_enable */ -skip; /* old port_disable */ -skip; /* old port_select */ -skip; /* old port_set_backlog */ -skip; /* old port_status */ - -/* - * Create a new task with an empty set of IPC rights, - * and having an address space constructed from the - * target task (or empty, if inherit_memory is FALSE). - */ -routine task_create( - target_task : task_t; - inherit_memory : boolean_t; - out child_task : mach_port_send_t); - -/* - * Destroy the target task, causing all of its threads - * to be destroyed, all of its IPC rights to be deallocated, - * and all of its address space to be deallocated. - */ -routine task_terminate( - target_task : task_t); - -/* - * Get user-level handler entry points for all - * emulated system calls. - */ -routine task_get_emulation_vector( - task : task_t; - out vector_start : int; - out emulation_vector: emulation_vector_t); - -/* - * Establish user-level handlers for the specified - * system calls. Non-emulated system calls are specified - * with emulation_vector[i] == EML_ROUTINE_NULL. - */ -routine task_set_emulation_vector( - task : task_t; - vector_start : int; - emulation_vector: emulation_vector_t); - -/* - * Returns the set of threads belonging to the target task. - */ -routine task_threads( - target_task : task_t; - out thread_list : thread_array_t = - array[] of mach_port_move_send_t, - dealloc); - -/* - * Returns information about the target task. - */ -routine task_info( - target_task : task_t; - flavor : int; - out task_info_out : task_info_t, CountInOut); - - -skip; /* old task_status */ -skip; /* old task_set_notify */ -skip; /* old thread_create */ - -/* - * Destroy the target thread. - */ -routine thread_terminate( - target_thread : thread_t); - -/* - * Return the selected state information for the target - * thread. If the thread is currently executing, the results - * may be stale. [Flavor THREAD_STATE_FLAVOR_LIST provides a - * list of valid flavors for the target thread.] - */ -routine thread_get_state( - target_thread : thread_t; - flavor : int; - out old_state : thread_state_t, CountInOut); - -/* - * Set the selected state information for the target thread. - * If the thread is currently executing, the state change - * may be ill-defined. - */ -routine thread_set_state( - target_thread : thread_t; - flavor : int; - new_state : thread_state_t); - -/* - * Returns information about the target thread. - */ -routine thread_info( - target_thread : thread_t; - flavor : int; - out thread_info_out : thread_info_t, CountInOut); - -skip; /* old thread_mutate */ - -/* - * Allocate zero-filled memory in the address space - * of the target task, either at the specified address, - * or wherever space can be found (if anywhere is TRUE), - * of the specified size. The address at which the - * allocation actually took place is returned. - */ -#ifdef EMULATOR -skip; /* the emulator redefines vm_allocate using vm_map */ -#else /* EMULATOR */ -routine vm_allocate( - target_task : vm_task_t; - inout address : vm_address_t; - size : vm_size_t; - anywhere : boolean_t); -#endif /* EMULATOR */ - -skip; /* old vm_allocate_with_pager */ - -/* - * Deallocate the specified range from the virtual - * address space of the target task. - */ -routine vm_deallocate( - target_task : vm_task_t; - address : vm_address_t; - size : vm_size_t); - -/* - * Set the current or maximum protection attribute - * for the specified range of the virtual address - * space of the target task. The current protection - * limits the memory access rights of threads within - * the task; the maximum protection limits the accesses - * that may be given in the current protection. - * Protections are specified as a set of {read, write, execute} - * *permissions*. - */ -routine vm_protect( - target_task : vm_task_t; - address : vm_address_t; - size : vm_size_t; - set_maximum : boolean_t; - new_protection : vm_prot_t); - -/* - * Set the inheritance attribute for the specified range - * of the virtual address space of the target task. - * The inheritance value is one of {none, copy, share}, and - * specifies how the child address space should acquire - * this memory at the time of a task_create call. - */ -routine vm_inherit( - target_task : vm_task_t; - address : vm_address_t; - size : vm_size_t; - new_inheritance : vm_inherit_t); - -/* - * Returns the contents of the specified range of the - * virtual address space of the target task. [The - * range must be aligned on a virtual page boundary, - * and must be a multiple of pages in extent. The - * protection on the specified range must permit reading.] - */ -routine vm_read( - target_task : vm_task_t; - address : vm_address_t; - size : vm_size_t; - out data : pointer_t, dealloc); - -/* - * Writes the contents of the specified range of the - * virtual address space of the target task. [The - * range must be aligned on a virtual page boundary, - * and must be a multiple of pages in extent. The - * protection on the specified range must permit writing.] - */ -routine vm_write( - target_task : vm_task_t; - address : vm_address_t; - data : pointer_t); - -/* - * Copy the contents of the source range of the virtual - * address space of the target task to the destination - * range in that same address space. [Both of the - * ranges must be aligned on a virtual page boundary, - * and must be multiples of pages in extent. The - * protection on the source range must permit reading, - * and the protection on the destination range must - * permit writing.] - */ -routine vm_copy( - target_task : vm_task_t; - source_address : vm_address_t; - size : vm_size_t; - dest_address : vm_address_t); - -/* - * Returns information about the contents of the virtual - * address space of the target task at the specified - * address. The returned protection, inheritance, sharing - * and memory object values apply to the entire range described - * by the address range returned; the memory object offset - * corresponds to the beginning of the address range. - * [If the specified address is not allocated, the next - * highest address range is described. If no addresses beyond - * the one specified are allocated, the call returns KERN_NO_SPACE.] - */ -routine vm_region( - target_task : vm_task_t; - inout address : vm_address_t; - out size : vm_size_t; - out protection : vm_prot_t; - out max_protection : vm_prot_t; - out inheritance : vm_inherit_t; - out is_shared : boolean_t; - /* avoid out-translation of the argument */ - out object_name : memory_object_name_t = - MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; - out offset : vm_offset_t); - -/* - * Return virtual memory statistics for the host - * on which the target task resides. [Note that the - * statistics are not specific to the target task.] - */ -routine vm_statistics( - target_task : vm_task_t; - out vm_stats : vm_statistics_data_t); - -skip; /* old task_by_u*x_pid */ -skip; /* old vm_pageable */ - -/* - * Stash a handful of ports for the target task; child - * tasks inherit this stash at task_create time. - */ -routine mach_ports_register( - target_task : task_t; - init_port_set : mach_port_array_t = - ^array[] of mach_port_t); - -/* - * Retrieve the stashed ports for the target task. - */ -routine mach_ports_lookup( - target_task : task_t; - out init_port_set : mach_port_array_t = - ^array[] of mach_port_t); - -skip; /* old u*x_pid */ -skip; /* old netipc_listen */ -skip; /* old netipc_ignore */ - -/* - * Provide the data contents of a range of the given memory - * object, with the access restriction specified. [Only - * whole virtual pages of data can be accepted; partial pages - * will be discarded. Data should be provided on request, but - * may be provided in advance as desired. When data already - * held by this kernel is provided again, the new data is ignored. - * The access restriction is the subset of {read, write, execute} - * which are prohibited. The kernel may not provide any data (or - * protection) consistency among pages with different virtual page - * alignments within the same object.] - */ -simpleroutine memory_object_data_provided( - memory_control : memory_object_control_t; - offset : vm_offset_t; - data : pointer_t; - lock_value : vm_prot_t); - -/* - * Indicate that a range of the given temporary memory object does - * not exist, and that the backing memory object should be used - * instead (or zero-fill memory be used, if no backing object exists). - * [This call is intended for use only by the default memory manager. - * It should not be used to indicate a real error -- - * memory_object_data_error should be used for that purpose.] - */ -simpleroutine memory_object_data_unavailable( - memory_control : memory_object_control_t; - offset : vm_offset_t; - size : vm_size_t); - -/* - * Retrieves the attributes currently associated with - * a memory object. - */ -routine memory_object_get_attributes( - memory_control : memory_object_control_t; - out object_ready : boolean_t; - out may_cache : boolean_t; - out copy_strategy : memory_object_copy_strategy_t); - -/* - * Sets the default memory manager, the port to which - * newly-created temporary memory objects are delivered. - * [See (memory_object_default)memory_object_create.] - * The old memory manager port is returned. - */ -routine vm_set_default_memory_manager( - host_priv : host_priv_t; - inout default_manager : mach_port_copy_send_t); - -skip; /* old pager_flush_request */ - -/* - * Control use of the data associated with the given - * memory object. For each page in the given range, - * perform the following operations, in order: - * 1) restrict access to the page (disallow - * forms specified by "prot"); - * 2) write back modifications (if "should_return" - * is RETURN_DIRTY and the page is dirty, or - * "should_return" is RETURN_ALL and the page - * is either dirty or precious); and, - * 3) flush the cached copy (if "should_flush" - * is asserted). - * The set of pages is defined by a starting offset - * ("offset") and size ("size"). Only pages with the - * same page alignment as the starting offset are - * considered. - * - * A single acknowledgement is sent (to the "reply_to" - * port) when these actions are complete. - * - * There are two versions of this routine because IPC distinguishes - * between booleans and integers (a 2-valued integer is NOT a - * boolean). The new routine is backwards compatible at the C - * language interface. - */ -simpleroutine xxx_memory_object_lock_request( - memory_control : memory_object_control_t; - offset : vm_offset_t; - size : vm_size_t; - should_clean : boolean_t; - should_flush : boolean_t; - lock_value : vm_prot_t; - reply_to : mach_port_t = - MACH_MSG_TYPE_MAKE_SEND_ONCE|polymorphic); - - -simpleroutine memory_object_lock_request( - memory_control : memory_object_control_t; - offset : vm_offset_t; - size : vm_size_t; - should_return : memory_object_return_t; - should_flush : boolean_t; - lock_value : vm_prot_t; - reply_to : mach_port_t = - MACH_MSG_TYPE_MAKE_SEND_ONCE|polymorphic); - -/* obsolete */ -routine xxx_task_get_emulation_vector( - task : task_t; - out vector_start : int; - out emulation_vector: xxx_emulation_vector_t, IsLong); - -/* obsolete */ -routine xxx_task_set_emulation_vector( - task : task_t; - vector_start : int; - emulation_vector: xxx_emulation_vector_t, IsLong); - -/* - * Returns information about the host on which the - * target object resides. [This object may be - * a task, thread, or memory_object_control port.] - */ -routine xxx_host_info( - target_task : mach_port_t; - out info : machine_info_data_t); - -/* - * Returns information about a particular processor on - * the host on which the target task resides. - */ -routine xxx_slot_info( - target_task : task_t; - slot : int; - out info : machine_slot_data_t); - -/* - * Performs control operations (currently only - * turning off or on) on a particular processor on - * the host on which the target task resides. - */ -routine xxx_cpu_control( - target_task : task_t; - cpu : int; - running : boolean_t); - -skip; /* old thread_statistics */ -skip; /* old task_statistics */ -skip; /* old netport_init */ -skip; /* old netport_enter */ -skip; /* old netport_remove */ -skip; /* old thread_set_priority */ - -/* - * Increment the suspend count for the target task. - * No threads within a task may run when the suspend - * count for that task is non-zero. - */ -routine task_suspend( - target_task : task_t); - -/* - * Decrement the suspend count for the target task, - * if the count is currently non-zero. If the resulting - * suspend count is zero, then threads within the task - * that also have non-zero suspend counts may execute. - */ -routine task_resume( - target_task : task_t); - -/* - * Returns the current value of the selected special port - * associated with the target task. - */ -routine task_get_special_port( - task : task_t; - which_port : int; - out special_port : mach_port_send_t); - -/* - * Set one of the special ports associated with the - * target task. - */ -routine task_set_special_port( - task : task_t; - which_port : int; - special_port : mach_port_t); - -/* obsolete */ -routine xxx_task_info( - target_task : task_t; - flavor : int; - out task_info_out : task_info_t, IsLong); - - -/* - * Create a new thread within the target task, returning - * the port representing that new thread. The - * initial execution state of the thread is undefined. - */ -routine thread_create( - parent_task : task_t; - out child_thread : mach_port_send_t); - -/* - * Increment the suspend count for the target thread. - * Once this call has completed, the thread will not - * execute any further user or meta- instructions. - * Once suspended, a thread may not execute again until - * its suspend count is zero, and the suspend count - * for its task is also zero. - */ -routine thread_suspend( - target_thread : thread_t); - -/* - * Decrement the suspend count for the target thread, - * if that count is not already zero. - */ -routine thread_resume( - target_thread : thread_t); - -/* - * Cause any user or meta- instructions currently being - * executed by the target thread to be aborted. [Meta- - * instructions consist of the basic traps for IPC - * (e.g., msg_send, msg_receive) and self-identification - * (e.g., task_self, thread_self, thread_reply). Calls - * described by MiG interfaces are not meta-instructions - * themselves.] - */ -routine thread_abort( - target_thread : thread_t); - -/* obsolete */ -routine xxx_thread_get_state( - target_thread : thread_t; - flavor : int; - out old_state : thread_state_t, IsLong); - -/* obsolete */ -routine xxx_thread_set_state( - target_thread : thread_t; - flavor : int; - new_state : thread_state_t, IsLong); - -/* - * Returns the current value of the selected special port - * associated with the target thread. - */ -routine thread_get_special_port( - thread : thread_t; - which_port : int; - out special_port : mach_port_t); - -/* - * Set one of the special ports associated with the - * target thread. - */ -routine thread_set_special_port( - thread : thread_t; - which_port : int; - special_port : mach_port_t); - -/* obsolete */ -routine xxx_thread_info( - target_thread : thread_t; - flavor : int; - out thread_info_out : thread_info_t, IsLong); - -/* - * Establish a user-level handler for the specified - * system call. - */ -routine task_set_emulation( - target_port : task_t; - routine_entry_pt: vm_address_t; - routine_number : int); - -/* - * Establish restart pc for interrupted atomic sequences. - * This reuses the message number for the old task_get_io_port. - * See task_info.h for description of flavors. - * - */ -routine task_ras_control( - target_task : task_t; - basepc : vm_address_t; - boundspc : vm_address_t; - flavor : int); - - - -skip; /* old host_ipc_statistics */ -skip; /* old port_names */ -skip; /* old port_type */ -skip; /* old port_rename */ -skip; /* old port_allocate */ -skip; /* old port_deallocate */ -skip; /* old port_set_backlog */ -skip; /* old port_status */ -skip; /* old port_set_allocate */ -skip; /* old port_set_deallocate */ -skip; /* old port_set_add */ -skip; /* old port_set_remove */ -skip; /* old port_set_status */ -skip; /* old port_insert_send */ -skip; /* old port_extract_send */ -skip; /* old port_insert_receive */ -skip; /* old port_extract_receive */ - -/* - * Map a user-defined memory object into the virtual address - * space of the target task. If desired (anywhere is TRUE), - * the kernel will find a suitable address range of the - * specified size; else, the specific address will be allocated. - * - * The beginning address of the range will be aligned on a virtual - * page boundary, be at or beyond the address specified, and - * meet the mask requirements (bits turned on in the mask must not - * be turned on in the result); the size of the range, in bytes, - * will be rounded up to an integral number of virtual pages. - * - * The memory in the resulting range will be associated with the - * specified memory object, with the beginning of the memory range - * referring to the specified offset into the memory object. - * - * The mapping will take the current and maximum protections and - * the inheritance attributes specified; see the vm_protect and - * vm_inherit calls for a description of these attributes. - * - * If desired (copy is TRUE), the memory range will be filled - * with a copy of the data from the memory object; this copy will - * be private to this mapping in this target task. Otherwise, - * the memory in this mapping will be shared with other mappings - * of the same memory object at the same offset (in this task or - * in other tasks). [The Mach kernel only enforces shared memory - * consistency among mappings on one host with similar page alignments. - * The user-defined memory manager for this object is responsible - * for further consistency.] - */ -#ifdef EMULATOR -routine htg_vm_map( - target_task : vm_task_t; - ureplyport reply_port : mach_port_make_send_once_t; - inout address : vm_address_t; - size : vm_size_t; - mask : vm_address_t; - anywhere : boolean_t; - memory_object : memory_object_t; - offset : vm_offset_t; - copy : boolean_t; - cur_protection : vm_prot_t; - max_protection : vm_prot_t; - inheritance : vm_inherit_t); -#else /* EMULATOR */ -routine vm_map( - target_task : vm_task_t; - inout address : vm_address_t; - size : vm_size_t; - mask : vm_address_t; - anywhere : boolean_t; - memory_object : memory_object_t; - offset : vm_offset_t; - copy : boolean_t; - cur_protection : vm_prot_t; - max_protection : vm_prot_t; - inheritance : vm_inherit_t); -#endif /* EMULATOR */ - -/* - * Indicate that a range of the specified memory object cannot - * be provided at this time. [Threads waiting for memory pages - * specified by this call will experience a memory exception. - * Only threads waiting at the time of the call are affected.] - */ -simpleroutine memory_object_data_error( - memory_control : memory_object_control_t; - offset : vm_offset_t; - size : vm_size_t; - error_value : kern_return_t); - -/* - * Make decisions regarding the use of the specified - * memory object. - */ -simpleroutine memory_object_set_attributes( - memory_control : memory_object_control_t; - object_ready : boolean_t; - may_cache : boolean_t; - copy_strategy : memory_object_copy_strategy_t); - -/* - */ -simpleroutine memory_object_destroy( - memory_control : memory_object_control_t; - reason : kern_return_t); - -/* - * Provide the data contents of a range of the given memory - * object, with the access restriction specified, optional - * precious attribute, and reply message. [Only - * whole virtual pages of data can be accepted; partial pages - * will be discarded. Data should be provided on request, but - * may be provided in advance as desired. When data already - * held by this kernel is provided again, the new data is ignored. - * The access restriction is the subset of {read, write, execute} - * which are prohibited. The kernel may not provide any data (or - * protection) consistency among pages with different virtual page - * alignments within the same object. The precious value controls - * how the kernel treats the data. If it is FALSE, the kernel treats - * its copy as a temporary and may throw it away if it hasn't been - * changed. If the precious value is TRUE, the kernel treats its - * copy as a data repository and promises to return it to the manager; - * the manager may tell the kernel to throw it away instead by flushing - * and not cleaning the data -- see memory_object_lock_request. The - * reply_to port is for a compeletion message; it will be - * memory_object_supply_completed.] - */ - -simpleroutine memory_object_data_supply( - memory_control : memory_object_control_t; - offset : vm_offset_t; - data : pointer_t, Dealloc[]; - lock_value : vm_prot_t; - precious : boolean_t; - reply_to : mach_port_t = - MACH_MSG_TYPE_MAKE_SEND_ONCE|polymorphic); - -simpleroutine memory_object_ready( - memory_control : memory_object_control_t; - may_cache : boolean_t; - copy_strategy : memory_object_copy_strategy_t); - -simpleroutine memory_object_change_attributes( - memory_control : memory_object_control_t; - may_cache : boolean_t; - copy_strategy : memory_object_copy_strategy_t; - reply_to : mach_port_t = - MACH_MSG_TYPE_MAKE_SEND_ONCE|polymorphic); - -skip; /* old host_callout_statistics_reset */ -skip; /* old port_set_select */ -skip; /* old port_set_backup */ - -/* - * Set/Get special properties of memory associated - * to some virtual address range, such as cachability, - * migrability, replicability. Machine-dependent. - */ -routine vm_machine_attribute( - target_task : vm_task_t; - address : vm_address_t; - size : vm_size_t; - attribute : vm_machine_attribute_t; - inout value : vm_machine_attribute_val_t); - -skip; /* old host_fpa_counters_reset */ - -/* - * There is no more room in this interface for additional calls. - */ diff --git a/boot.backup1/ourmach_host.defs~ b/boot.backup1/ourmach_host.defs~ deleted file mode 100644 index 0e7e367e..00000000 --- a/boot.backup1/ourmach_host.defs~ +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University. - * Copyright (c) 1993,1994 The University of Utah and - * the Computer Systems Laboratory (CSL). - * All rights reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON, THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF - * THIS SOFTWARE IN ITS "AS IS" CONDITION, AND DISCLAIM ANY LIABILITY - * OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF - * THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * File: mach/mach_host.defs - * - * Abstract: - * Mach host operations support. Includes processor allocation and - * control. - */ - -#ifdef MACH_KERNEL -simport ; /* for obsolete routines */ -#endif - -subsystem -#if KERNEL_SERVER - KernelServer -#endif - mach_host 2600; - -serverprefix S_; - -/* - * Basic types - */ - -#include -#include - -/* - * Get list of processors on this host. - */ - -routine host_processors( - host_priv : host_priv_t; - out processor_list : processor_array_t); - -/* obsolete */ -routine yyy_host_info( - host : host_t; - flavor : int; - out host_info_out : host_info_t, IsLong); - - -/* obsolete */ -routine yyy_processor_info( - processor : processor_t; - flavor : int; - out host : host_t; - out processor_info_out: processor_info_t, IsLong); - -/* - * Start processor. - */ - -routine processor_start( - processor : processor_t); - -/* - * Exit processor -- may not be restartable. - */ - -routine processor_exit( - processor : processor_t); - -/* obsolete */ -routine yyy_processor_control( - processor : processor_t; - processor_cmd : processor_info_t, IsLong); - -/* - * Get default processor set for host. - */ -routine processor_set_default( - host : host_t; - out default_set : processor_set_name_t); - -/* - * Get rights to default processor set for host. - * Replaced by host_processor_set_priv. - */ -routine xxx_processor_set_default_priv( - host : host_priv_t; - out default_set : processor_set_t); - -/* - * Create new processor set. Returns real port for manipulations, - * and name port for obtaining information. - */ -routine processor_set_create( - host : host_t; - out new_set : processor_set_t; - out new_name : processor_set_name_t); - -/* - * Destroy processor set. - */ -routine processor_set_destroy( - set : processor_set_t); - -/* obsolete */ -routine yyy_processor_set_info( - set_name : processor_set_name_t; - flavor : int; - out host : host_t; - out info_out : processor_set_info_t, IsLong); - -/* - * Assign processor to processor set. - */ -routine processor_assign( - processor : processor_t; - new_set : processor_set_t; - wait : boolean_t); - -/* - * Get current assignment for processor. - */ - -routine processor_get_assignment( - processor : processor_t; - out assigned_set : processor_set_name_t); - -/* - * Assign thread to processor set. - */ -routine thread_assign( - thread : thread_t; - new_set : processor_set_t); - -/* - * Assign thread to default set. - */ -routine thread_assign_default( - thread : thread_t); - -/* - * Get current assignment for thread. - */ -routine thread_get_assignment( - thread : thread_t; - out assigned_set : processor_set_name_t); - -/* - * Assign task to processor set. - */ -routine task_assign( - task : task_t; - new_set : processor_set_t; - assign_threads : boolean_t); -/* - * Assign task to default set. - */ -routine task_assign_default( - task : task_t; - assign_threads : boolean_t); - -/* - * Get current assignment for task. - */ -routine task_get_assignment( - task : task_t; - out assigned_set : processor_set_name_t); - -/* - * Get string describing current kernel version. - */ -routine host_kernel_version( - host : host_t; - out kernel_version : kernel_version_t); - -/* - * Set priority for thread. - */ -routine thread_priority( - thread : thread_t; - priority : int; - set_max : boolean_t); - -/* - * Set max priority for thread. - */ -routine thread_max_priority( - thread : thread_t; - processor_set : processor_set_t; - max_priority : int); - -/* - * Set task priority. - */ -routine task_priority( - task : task_t; - priority : int; - change_threads : boolean_t); - -/* - * Set max priority for processor_set. - */ -routine processor_set_max_priority( - processor_set : processor_set_t; - max_priority : int; - change_threads : boolean_t); - -/* - * Set policy for thread - */ -routine thread_policy( - thread : thread_t; - policy : int; - data : int); - -/* - * Enable policy for processor set - */ -routine processor_set_policy_enable( - processor_set : processor_set_t; - policy : int); - -/* - * Disable policy for processor set - */ -routine processor_set_policy_disable( - processor_set : processor_set_t; - policy : int; - change_threads : boolean_t); -/* - * List all tasks in processor set. - */ -routine processor_set_tasks( - processor_set : processor_set_t; - out task_list : task_array_t); - -/* - * List all threads in processor set. - */ -routine processor_set_threads( - processor_set : processor_set_t; - out thread_list : thread_array_t); - -/* - * List all processor sets on host. - */ -routine host_processor_sets( - host : host_t; - out processor_sets : processor_set_name_array_t); - -/* - * Get control port for a processor set. - */ -routine host_processor_set_priv( - host_priv : host_priv_t; - set_name : processor_set_name_t; - out set : mach_port_send_t); - -routine thread_depress_abort( - thread : thread_t); - -/* - * Set the time on this host. - * Only available to privileged users. - */ -routine host_set_time( - host_priv : host_priv_t; - new_time : time_value_t); - -/* - * Arrange for the time on this host to be gradually changed - * by an adjustment value, and return the old value. - * Only available to privileged users. - */ -routine host_adjust_time( - host_priv : host_priv_t; - in new_adjustment : time_value_t; - out old_adjustment : time_value_t); - -/* - * Get the time on this host. - * Available to all. - */ -routine host_get_time( - host : host_t; - out current_time : time_value_t); - -/* - * Reboot this host. - * Only available to privileged users. - */ -routine host_reboot( - host_priv : host_priv_t; - options : int); - -/* - * Specify that the range of the virtual address space - * of the target task must not cause page faults for - * the indicated accesses. - * - * [ To unwire the pages, specify VM_PROT_NONE. ] - */ -routine vm_wire( - host_priv : host_priv_t; - task : vm_task_t; - address : vm_address_t; - size : vm_size_t; - access : vm_prot_t); - -/* - * Specify that the target thread must always be able - * to run and to allocate memory. - */ -routine thread_wire( - host_priv : host_priv_t; - thread : thread_t; - wired : boolean_t); - -/* - * Return information about this host. - */ - -routine host_info( - host : host_t; - flavor : int; - out host_info_out : host_info_t, CountInOut); - - -/* - * Return information about this processor. - */ -routine processor_info( - processor : processor_t; - flavor : int; - out host : host_t; - out processor_info_out: processor_info_t, CountInOut); - -/* - * Get information about processor set. - */ -routine processor_set_info( - set_name : processor_set_name_t; - flavor : int; - out host : host_t; - out info_out : processor_set_info_t, CountInOut); - -/* - * Do something machine-dependent to processor. - */ -routine processor_control( - processor : processor_t; - processor_cmd : processor_info_t); - -/* - * Get boot configuration information from kernel. - */ -routine host_get_boot_info( - host_priv : host_priv_t; - out boot_info : kernel_boot_info_t); diff --git a/boot.backup1/ourmach_port.defs~ b/boot.backup1/ourmach_port.defs~ deleted file mode 100644 index fb3e552c..00000000 --- a/boot.backup1/ourmach_port.defs~ +++ /dev/null @@ -1,348 +0,0 @@ -/* - * Mach Operating System - * Copyright (c) 1991,1990,1989 Carnegie Mellon University. - * Copyright (c) 1993,1994 The University of Utah and - * the Computer Systems Laboratory (CSL). - * All rights reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON, THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF - * THIS SOFTWARE IN ITS "AS IS" CONDITION, AND DISCLAIM ANY LIABILITY - * OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF - * THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ -/* - * File: mach/mach_port.defs - * Author: Rich Draves - * - * Copyright (c) 1989 Richard P. Draves, Jr. - * - * Exported kernel calls. - */ - -subsystem -#if KERNEL_SERVER - KernelServer -#endif - mach_port 3200; - -#include -#include - -/* - * Returns the set of port and port set names - * to which the target task has access, along with - * the type (set or port) for each name. - */ - -routine mach_port_names( - task : ipc_space_t; - out names : mach_port_name_array_t = - ^array[] of mach_port_name_t - ctype: mach_port_array_t, - dealloc; - out types : mach_port_type_array_t = - ^array[] of mach_port_type_t, - dealloc); - -/* - * Returns the type (set or port) for the port name - * within the target task. Also indicates whether - * there is a dead-name request for the name. - */ - -routine mach_port_type( - task : ipc_space_t; - name : mach_port_name_t; - out ptype : mach_port_type_t); - -/* - * Changes the name by which a port (or port set) is known to - * the target task. The new name can't be in use. The - * old name becomes available for recycling. - */ - -routine mach_port_rename( - task : ipc_space_t; - old_name : mach_port_name_t; - new_name : mach_port_name_t); - -/* - * Allocates the specified kind of object, with the given name. - * The right must be one of - * MACH_PORT_RIGHT_RECEIVE - * MACH_PORT_RIGHT_PORT_SET - * MACH_PORT_RIGHT_DEAD_NAME - * New port sets are empty. New ports don't have any - * send/send-once rights or queued messages. The make-send - * count is zero and their queue limit is MACH_PORT_QLIMIT_DEFAULT. - * New sets, ports, and dead names have one user reference. - */ - -routine mach_port_allocate_name( - task : ipc_space_t; - right : mach_port_right_t; - name : mach_port_name_t); - -/* - * Allocates the specified kind of object. - * The right must be one of - * MACH_PORT_RIGHT_RECEIVE - * MACH_PORT_RIGHT_PORT_SET - * MACH_PORT_RIGHT_DEAD_NAME - * Like port_allocate_name, but the kernel picks a name. - * It can use any name not associated with a right. - */ - -routine mach_port_allocate( - task : ipc_space_t; - right : mach_port_right_t; - out name : mach_port_name_t); - -/* - * Destroys all rights associated with the name and makes it - * available for recycling immediately. The name can be a - * port (possibly with multiple user refs), a port set, or - * a dead name (again, with multiple user refs). - */ - -routine mach_port_destroy( - task : ipc_space_t; - name : mach_port_name_t); - -/* - * Releases one send/send-once/dead-name user ref. - * Just like mach_port_mod_refs -1, but deduces the - * correct type of right. This allows a user task - * to release a ref for a port without worrying - * about whether the port has died or not. - */ - -routine mach_port_deallocate( - task : ipc_space_t; - name : mach_port_name_t); - -/* - * A port set always has one user ref. - * A send-once right always has one user ref. - * A dead name always has one or more user refs. - * A send right always has one or more user refs. - * A receive right always has one user ref. - * The right must be one of - * MACH_PORT_RIGHT_RECEIVE - * MACH_PORT_RIGHT_PORT_SET - * MACH_PORT_RIGHT_DEAD_NAME - * MACH_PORT_RIGHT_SEND - * MACH_PORT_RIGHT_SEND_ONCE - */ - -routine mach_port_get_refs( - task : ipc_space_t; - name : mach_port_name_t; - right : mach_port_right_t; - out refs : mach_port_urefs_t); - -/* - * The delta is a signed change to the task's - * user ref count for the right. Only dead names - * and send rights can have a positive delta. - * The resulting user ref count can't be negative. - * If it is zero, the right is deallocated. - * If the name isn't a composite right, it becomes - * available for recycling. The right must be one of - * MACH_PORT_RIGHT_RECEIVE - * MACH_PORT_RIGHT_PORT_SET - * MACH_PORT_RIGHT_DEAD_NAME - * MACH_PORT_RIGHT_SEND - * MACH_PORT_RIGHT_SEND_ONCE - */ - -routine mach_port_mod_refs( - task : ipc_space_t; - name : mach_port_name_t; - right : mach_port_right_t; - delta : mach_port_delta_t); - -/* - * Temporary compatibility call. - */ - -routine old_mach_port_get_receive_status( - task : ipc_space_t; - name : mach_port_name_t; - out status : old_mach_port_status_t); - -/* - * Only valid for receive rights. - * Sets the queue-limit for the port. - * The limit must be - * 1 <= qlimit <= MACH_PORT_QLIMIT_MAX - */ - -routine mach_port_set_qlimit( - task : ipc_space_t; - name : mach_port_name_t; - qlimit : mach_port_msgcount_t); - -/* - * Only valid for receive rights. - * Sets the make-send count for the port. - */ - -routine mach_port_set_mscount( - task : ipc_space_t; - name : mach_port_name_t; - mscount : mach_port_mscount_t); - -/* - * Only valid for port sets. Returns a list of - * the members. - */ - -routine mach_port_get_set_status( - task : ipc_space_t; - name : mach_port_name_t; - out members : mach_port_name_array_t = - ^array[] of mach_port_name_t - ctype: mach_port_array_t); - -/* - * Puts the member port (the task must have receive rights) - * into the after port set. (Or removes it from any port set - * if after is MACH_PORT_NULL.) If the port is already in - * a set, does an atomic move. - */ - -routine mach_port_move_member( - task : ipc_space_t; - member : mach_port_name_t; - after : mach_port_name_t); - -/* - * Requests a notification from the kernel. The request - * must supply the send-once right which is used for - * the notification. If a send-once right was previously - * registered, it is returned. The msg_id must be one of - * MACH_NOTIFY_PORT_DESTROYED (receive rights) - * MACH_NOTIFY_DEAD_NAME (send/receive/send-once rights) - * MACH_NOTIFY_NO_SENDERS (receive rights) - * - * The sync value specifies whether a notification should - * get sent immediately, if appropriate. The exact meaning - * depends on the notification: - * MACH_NOTIFY_PORT_DESTROYED: must be zero. - * MACH_NOTIFY_DEAD_NAME: if non-zero, then name can be dead, - * and the notification gets sent immediately. - * If zero, then name can't be dead. - * MACH_NOTIFY_NO_SENDERS: the notification gets sent - * immediately if the current mscount is greater - * than or equal to the sync value and there are no - * extant send rights. - */ - -routine mach_port_request_notification( - task : ipc_space_t; - name : mach_port_name_t; - id : mach_msg_id_t; - sync : mach_port_mscount_t; - notify : mach_port_send_once_t; - out previous : mach_port_send_once_t); - -/* - * Inserts the specified rights into the target task, - * using the specified name. If inserting send/receive - * rights and the task already has send/receive rights - * for the port, then the names must agree. In any case, - * the task gains a user ref for the port. - */ - -routine mach_port_insert_right( - task : ipc_space_t; - name : mach_port_name_t; - poly : mach_port_poly_t); - -/* - * Returns the specified right for the named port - * in the target task, extracting that right from - * the target task. The target task loses a user - * ref and the name may be available for recycling. - * msgt_name must be one of - * MACH_MSG_TYPE_MOVE_RECEIVE - * MACH_MSG_TYPE_COPY_SEND - * MACH_MSG_TYPE_MAKE_SEND - * MACH_MSG_TYPE_MOVE_SEND - * MACH_MSG_TYPE_MAKE_SEND_ONCE - * MACH_MSG_TYPE_MOVE_SEND_ONCE - */ - -routine mach_port_extract_right( - task : ipc_space_t; - name : mach_port_name_t; - msgt_name : mach_msg_type_name_t; - out poly : mach_port_poly_t); - -/* - * The task must have receive rights for the named port. - * Returns a status structure (see mach/port.h). - */ - -routine mach_port_get_receive_status( - task : ipc_space_t; - name : mach_port_name_t; - out status : mach_port_status_t); - -/* - * Only valid for receive rights. - * Sets the sequence number for the port. - */ - -routine mach_port_set_seqno( - task : ipc_space_t; - name : mach_port_name_t; - seqno : mach_port_seqno_t); - -#ifdef MIGRATING_THREADS -/* - * Only valid for receive rights. - * Set the user-mode entry info for RPCs coming through this port. - * Do this BEFORE attaching an ActPool to this port, - * unless you can be sure no RPCs will be coming through it yet. - */ - -routine mach_port_set_rpcinfo( - task : ipc_space_t; - name : mach_port_name_t; - rpc_info : thread_info_t); /* XXX */ - -/* - * Only valid for receive rights. - * Create a new activation for migrating RPC, and attach it to the port's ActPool. - * Create an ActPool for the port if it doesn't already have one. - * Supply a stack and receive memory buffer. - */ - -routine mach_port_create_act( - task : task_t; - name : mach_port_name_t; - user_stack : vm_offset_t; - user_rbuf : vm_offset_t; - user_rbuf_size : vm_size_t; - out new_act : thread_t); - -#endif /* MIGRATING_THREADS */ - diff --git a/boot.backup1/util.h~ b/boot.backup1/util.h~ deleted file mode 100644 index 81a1a671..00000000 --- a/boot.backup1/util.h~ +++ /dev/null @@ -1,96 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef UTIL_H -#define UTIL_H - -#include -#include - -#include -#include -#include -#include - -#include -#include - -#define DEBUG 0 -#define INFO 1 -#define LOGLEVEL DEBUG - -#define output(format, ...) do \ -{ \ - char buf[1024]; \ - snprintf (buf, 1024, "boot: %s: %s\r\n", __func__, format); \ - fprintf (stderr , buf, ## __VA_ARGS__); \ - fflush (stderr); \ -} while (0) - -#if DEBUG >= LOGLEVEL -#define debug output -#else -#define debug(format, ...) do {} while (0) -#endif - -#if INFO >= LOGLEVEL -#define info output -#else -#define info(format, ...) do {} while (0) -#endif - -#if ERROR >= LOGLEVEL -#define logerror(format, ...) do \ -{ \ - char buf[1024]; \ - snprintf (buf, 1024, "boot ERROR: %s: %s\r\n", __func__, format); \ - fprintf (stderr , buf, ## __VA_ARGS__); \ - fflush (stderr); \ -} while (0) -#else -#define logerror(format, ...) do {} while (0) -#endif - -#define print_port_type(port) do \ -{ \ - mach_port_type_t ptype; \ - error_t err = mach_port_type (mach_task_self (), port, &ptype); \ - if (err) \ - debug ("mach_port_type: %s", strerror (err)); \ - else if (ptype & MACH_PORT_TYPE_SEND) \ - debug ("port %d has send right", port); \ - else if (ptype & MACH_PORT_TYPE_RECEIVE) \ - debug ("port %d has receive right", port); \ - else if (ptype & MACH_PORT_TYPE_SEND_ONCE) \ - debug ("port %d has send once right", port); \ - else if (ptype & MACH_PORT_TYPE_PORT_SET) \ - debug ("port %d is port set", port); \ - else if (ptype & MACH_PORT_TYPE_DEAD_NAME) \ - debug ("port %d is a dead name", port); \ - else \ - debug ("the type of port %d is %d", port, ptype); \ - mach_port_urefs_t refs; \ - err = mach_port_get_refs (mach_task_self (), port, \ - MACH_PORT_RIGHT_SEND, &refs); \ - if (!err) \ - debug ("port send right references: %d", refs); \ -} while (0) - -#endif diff --git a/configure.in~ b/configure.in~ deleted file mode 100644 index 3fbfb28f..00000000 --- a/configure.in~ +++ /dev/null @@ -1,252 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_REVISION([$Id: configure.in,v 1.37.8.1 2008/08/13 13:52:37 zhengda Exp $]) -AC_PREREQ(2.54) dnl Minimum Autoconf version required. -AC_INIT -AC_CONFIG_SRCDIR([hurd/hurd_types.h]) dnl File to look for in srcdir. - -AC_PREFIX_DEFAULT() dnl Default to empty prefix, not /usr/local. - -AC_CANONICAL_HOST -case "$host_os" in -gnu*) ;; -none) AC_MSG_ERROR([ -*** You must specify a host of $host_cpu-gnu or $host_cpu-$host_vendor-gnu -*** to configure; you will need to use the same host specification -*** to configure other packages for the GNU/Hurd system.]) ;; -*) AC_MSG_ERROR([this is the gnu os, host cannot be $host_os -*** Host configuration must be \`MACHINE-gnu' or \`MACHINE-VENDOR-gnu'. -*** To cross-compile, you must specify both --host and --build; -*** for example \`--build=$host --host=$host_cpu-gnu'. -*** Run $0 --help for more information.]) ;; -esac - -case "$host_cpu" in -alpha*) - asm_syntax=alpha - ;; -arm*) - asm_syntax=arm - ;; -m68k | m680?0) - asm_syntax=m68k - ;; -mips*) - asm_syntax=mips - ;; -i?86) - asm_syntax=i386 - ;; -powerpc*) - asm_syntax=ppc - ;; -sparc64* | ultrasparc*) - asm_syntax=sparc64 - ;; -sparc*) - asm_syntax=sparc - ;; -*) - asm_syntax="$host_cpu" - ;; -esac -AC_SUBST(asm_syntax) - -test -r "$srcdir/libthreads/$asm_syntax/cthreads.h" || { - AC_MSG_WARN([unsupported CPU type $host_cpu]) -} - -AC_ARG_ENABLE(profile, -[ --disable-profile do not build profiled libraries and programs]) -AC_SUBST(enable_profile) - -define([default_static],['ext2fs,ufs'])dnl -AC_ARG_ENABLE(static-progs, -[ --enable-static-progs=PROGRAMS... - build statically-linked PROGRAM.static versions - of (only) the listed programs ]dnl -changequote(',')[default_static]changequote([,])) -case "$enable_static_progs" in -'no') enable_static_progs= ;; # we got --disable-static -'') enable_static_progs=default_static ;; -esac -# Convert comma/space-separated list into space-separated list. -enable_static_progs=`echo "$enable_static_progs" | sed 's/[[, ]][[, ]]*/ /g'` -AC_SUBST(enable_static_progs) - -AC_PROG_INSTALL -AC_PROG_AWK - -AC_PROG_CC -# Require GCC. -if test x$GCC != xyes; then - AC_MSG_ERROR([this code uses GNU C extensions, you must compile with GCC]) -fi - -AC_CHECK_TOOL(LD, ld) -AC_CHECK_TOOL(OBJCOPY, objcopy) -AC_CHECK_TOOL(AR, ar) -AC_CHECK_TOOL(RANLIB, ranlib) -AC_CHECK_TOOL(MIG, mig) -# Require MiG. -if test x${MIG} = x; then - AC_MSG_ERROR([ -*** You need GNU MiG to compile the GNU Hurd, please see -*** http://www.gnu.org/software/hurd/mig.html for further details, or -*** download it directly from the main GNU server (ftp.gnu.org) or any -*** GNU mirror.]) -fi - -dnl Let these propagate from the environment. -AC_SUBST(CFLAGS) AC_SUBST(CPPFLAGS) AC_SUBST(LDFLAGS) - -# See if there's a separate libcrypt (many systems put crypt there). -AC_CHECK_LIB(crypt, crypt, LIBCRYPT=-lcrypt) -AC_SUBST(LIBCRYPT) - -hurd_MIG_RETCODE - -# See if --version-script is available. -AC_CACHE_CHECK(for ld --version-script, hurd_cv_ld_version_script_option, [dnl -cat > conftest.c <<\EOF -void foobar() {} -EOF -cat > conftest.map <<\EOF -VERS_1 { - global: sym; -}; - -VERS_2 { - global: sym; -} VERS_1; -EOF - -if AC_TRY_COMMAND([eval $ac_compile 1>&AS_MESSAGE_LOG_FD()]) && - AC_TRY_COMMAND([${CC-cc} $CFLAGS -shared -o conftest.so conftest.o - -nostartfiles -nostdlib - -Wl,--version-script,conftest.map - 1>&AS_MESSAGE_LOG_FD()]); then - hurd_cv_ld_version_script_option=yes -else - hurd_cv_ld_version_script_option=no -fi -rm -f conftest*]) - -# See if libc was built with --enable-libio. -AC_CACHE_CHECK([for libio], - hurd_cv_libio, - AC_TRY_COMPILE([#include -#ifndef _STDIO_USES_IOSTREAM -# error No libio found. -#endif],, - hurd_cv_libio=yes, - hurd_cv_libio=no)) - -# The versions of the symbols in libthreads have to match those in -# libc.so. Since the symbols in a libc that includes libio will be -# versioned differently from the ones in a libc that uses stdio, this -# isn't easy to accomplish. Instead we leave things unversioned if -# libio isn't found. -if test $hurd_cv_libio = yes; then - VERSIONING=$hurd_cv_ld_version_script_option -else - VERSIONING=no -fi -AC_SUBST(VERSIONING) - -# Check if libc contains getgrouplist and/or uselocale. -AC_CHECK_FUNCS(getgrouplist uselocale) - - -# From glibc HEAD, 2007-11-07. -AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl -cat > conftest.c <&AS_MESSAGE_LOG_FD]) -then - libc_cv_gnu89_inline=yes -else - libc_cv_gnu89_inline=no -fi -rm -f conftest*]) -if test $libc_cv_gnu89_inline = yes; then - libc_cv_gnu89_inline=-fgnu89-inline -else - libc_cv_gnu89_inline= -fi -AC_SUBST(libc_cv_gnu89_inline) - - -AC_ARG_WITH(parted, dnl -[ --without-parted don't try to use GNU Parted libraries], - , with_parted=yes) - -AC_ARG_ENABLE(boot-store-types, -[ --enable-boot-store-types=TYPES... - list of store types included in statically - linked filesystems used for booting])dnl -if test -z "$enable_boot_store_types"; then - boot_store_types='device remap gunzip bunzip2' - - # Check for Parted's static store module. - if test "x$with_parted" != xno; then - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -static" - AC_CHECK_LIB(store_part, store_part_open, [dnl - boot_store_types="$boot_store_types part"], , -luuid -lstore) - LDFLAGS="$save_LDFLAGS" - fi -elif test "x$enable_boot_store_types" = xno; then - AC_MSG_WARN([you probably wanted --disable-static-progs]) -else - boot_store_types="$enable_boot_store_types" -fi -AC_SUBST(boot_store_types)dnl -AC_MSG_CHECKING(boot store types) -AC_MSG_RESULT($boot_store_types) - -AC_ARG_ENABLE(pcap, AS_HELP_STRING([--disable-pcap --enable-pcap], [Disable pcap]), - [install_pcap=$enableval pcap_fail=yes], [install_pcap=yes pcap_fail=no]) - -if test "$install_pcap" = "yes"; then - AC_CHECK_LIB(pcap, pcap_compile, LIBPCAP=-lpcap, LIBPCAP=no) - AC_SUBST(LIBPCAP) - if test "$LIBPCAP" = "no"; then - if test "$pcap_fail" = "yes"; then - AC_MSG_ERROR([libpcap must be install in order to use eth-filter]) - else - LIBPCAP="" - fi - fi -fi - -# Check for ncursesw, which is needed for the console-curses client. -hurd_LIB_NCURSESW - -if test -f ./$ac_unique_file; then - # Configuring in source directory; don't create any Makefiles. - makefiles= -else - # We are configuring in a separate build tree. - # Create a Makefile in the top-level build directory and - # one for each subdirectory Makefile in the source. - makefiles="Makeconf:build.mkcf.in \ - `cd $srcdir; for file in Makefile */Makefile; do \ - echo ${file}:build.mk.in; done`" -fi - -AC_CONFIG_FILES([config.make ${makefiles}]) -AC_OUTPUT - -dnl Local Variables: -dnl comment-start: "dnl " -dnl comment-end: "" -dnl comment-start-skip: "\\bdnl\\b\\s *" -dnl compile-command: "autoconf" -dnl End: diff --git a/devnode/ChangeLog~ b/devnode/ChangeLog~ deleted file mode 100644 index 5efa8a5e..00000000 --- a/devnode/ChangeLog~ +++ /dev/null @@ -1,25 +0,0 @@ -2008-08-28 Zheng Da - - * devnode.c (ds_device_open): Return the error instead of stopping the - translator. - -2008-08-20 Zheng Da - - * devnode.c (ds_device_open): Test device_name before using it. - - * util.h (DEBUG): Remove the macro. - -2008-08-18 Zheng Da - - * README: New file. - - * devnode.c (options): Replace the option '-i' with '-d'. - (parse_opt): Handle the option '-d'. - -2008-08-17 Zheng Da - - * Makefile: New file. - - * util.h: New file. - - * devnode.c: New file. diff --git a/devnode/README~ b/devnode/README~ deleted file mode 100644 index 5686da7b..00000000 --- a/devnode/README~ +++ /dev/null @@ -1,25 +0,0 @@ -[Introduction] - -devnode is a translator that creates the device file for the kernel device. It provides another way for other programs to open the kernel device. -The device file should be created in /dev with the device name as its file name, so clients can find the device file easily. -Clients need to get the port to the devnode translator by calling file_name_lookup() and uses this port as a master device port to open the device by calling device_open(). The device name used in device_open() is specified by '-n' option of devnode. - - -[Usage] - -Usage: devnode [OPTION...] device -Hurd devnode translator. - - -n, --name=DEVICENAME Accept open from clients only with DEVICENAME - -M, --master_device=FILE Get a pseudo master device port - -?, --help Give this help list - --usage Give a short usage message - -V, --version Print program version - -The '-n' option specifies the device name used by clients in device_open(). It can be optional. If it's specified, clients must use the name to open the device. Otherwise, every device name used by clients in device_open() is acceptable. -The '-M' option specifies the file where devnode can get the master device port. This option can be useful to open the virtual interface created by eth-multiplexer, for example. - - -[Internal] - -devnode is very simple. It implements the server side functions in device.defs, so it can receive the request of opening a device from other programs. Only ds_device_open is actually implemented, which opens the device and returns the port to the device. Normally, devnode shouldn't get other requests. diff --git a/devnode/devnode.c~ b/devnode/devnode.c~ deleted file mode 100644 index 5b85fcb5..00000000 --- a/devnode/devnode.c~ +++ /dev/null @@ -1,337 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * This program is a translator that sits on the top of the network - * interface and helps socket servers open the interface. - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "ourdevice_S.h" -#include "notify_S.h" -#include "util.h" - -/* The name of the network interface that the translator sits on. */ -static char *device_name; -/* The device name used by the socket servers. */ -static char *user_device_name; -/* The master device port for opening the interface. */ -static mach_port_t master_device; - -const char *argp_program_version = "devnode 0.1"; -const char *argp_program_bug_address = ""; -static const char args_doc[] = "device"; -static const char doc[] = "Hurd devnode translator."; -static const struct argp_option options[] = -{ - {"name", 'n', "DEVICENAME", 0, - "The device name used by clients in device_open()", 2}, - {"master-device", 'M', "FILE", 0, - "Get a pseudo master device port", 3}, - {0} -}; - -/* Port bucket we service requests on. */ -struct port_bucket *port_bucket; - -/* Trivfs hooks. */ -int trivfs_fstype = FSTYPE_MISC; -int trivfs_fsid = 0; -int trivfs_support_read = 0; -int trivfs_support_write = 0; -int trivfs_support_exec = 0; -int trivfs_allow_open = 0; - -struct port_class *trivfs_protid_portclasses[1]; -struct port_class *trivfs_cntl_portclasses[1]; -int trivfs_protid_nportclasses = 1; -int trivfs_cntl_nportclasses = 1; - -static int -devnode_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern int device_server (mach_msg_header_t *, mach_msg_header_t *); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - return device_server (inp, outp) || notify_server (inp, outp) - || trivfs_demuxer (inp, outp); -} - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - return ports_do_mach_notify_no_senders (notify, mscount); -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -/* Implementation of device interface */ -kern_return_t -ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statu_cnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuscnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, mach_port_t rec, - int pri, filter_array_t filt, size_t len) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_open (mach_port_t master_port, mach_port_t reply_port, - mach_msg_type_name_t reply_portPoly, - dev_mode_t mode, dev_name_t name, mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - error_t err; - - debug ("ds_device_open is called\n"); - - if ((user_device_name && strcmp (user_device_name, name)) - || device_name == NULL) - return D_NO_SUCH_DEVICE; - - err = device_open (master_device, mode, device_name, device); - *devicetype = MACH_MSG_TYPE_MOVE_SEND; - return err; -} - -kern_return_t -ds_device_close (device_t device) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_write (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_t data, size_t datalen, - int *bytes_written) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_write_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_inband_t data, - size_t datalen, int *bytes_written) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_read (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_t *data, size_t *datalen) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_read_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_inband_t data, size_t *datalen) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, - vm_size_t size, memory_object_t *pager, int unmap) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statuslen) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuslen) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_set_filter (device_t device, mach_port_t receive_port, - int priority, filter_array_t filter, size_t filterlen) -{ - return D_INVALID_OPERATION; -} - -void -trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) -{ -} - -error_t -trivfs_goaway (struct trivfs_control *fsys, int flags) -{ - int count; - - /* Stop new requests. */ - ports_inhibit_class_rpcs (trivfs_cntl_portclasses[0]); - ports_inhibit_class_rpcs (trivfs_protid_portclasses[0]); - - count = ports_count_class (trivfs_protid_portclasses[0]); - debug ("the number of ports alive: %d\n", count); - - if (count && !(flags & FSYS_GOAWAY_FORCE)) - { - /* We won't go away, so start things going again... */ - ports_enable_class (trivfs_protid_portclasses[0]); - ports_resume_class_rpcs (trivfs_cntl_portclasses[0]); - ports_resume_class_rpcs (trivfs_protid_portclasses[0]); - return EBUSY; - } - - mach_port_deallocate (mach_task_self (), master_device); - debug ("the translator is gone away\n"); - exit (0); -} - -static error_t -parse_opt (int opt, char *arg, struct argp_state *state) -{ - switch (opt) - { - case 'M': - master_device = file_name_lookup (arg, 0, 0); - if (master_device == MACH_PORT_NULL) - error (1, errno, "file_name_lookup"); - break; - case 'n': - user_device_name = arg; - break; - case ARGP_KEY_ARG: - device_name = arg; - break; - case ARGP_KEY_ERROR: - case ARGP_KEY_SUCCESS: - case ARGP_KEY_INIT: - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -int -main (int argc, char *argv[]) -{ - error_t err; - mach_port_t bootstrap; - struct trivfs_control *fsys; - const struct argp argp = { options, parse_opt, args_doc, doc }; - - port_bucket = ports_create_bucket (); - trivfs_cntl_portclasses[0] = ports_create_class (trivfs_clean_cntl, 0); - trivfs_protid_portclasses[0] = ports_create_class (trivfs_clean_protid, 0); - - argp_parse (&argp, argc, argv, 0, 0, 0); - - task_get_bootstrap_port (mach_task_self (), &bootstrap); - if (bootstrap == MACH_PORT_NULL) - error (1, 0, "must be started as a translator"); - - if (master_device == MACH_PORT_NULL) - { - err = get_privileged_ports (0, &master_device); - if (err) - error (1, err, "get_privileged_ports"); - } - - /* Reply to our parent. */ - err = trivfs_startup (bootstrap, 0, - trivfs_cntl_portclasses[0], port_bucket, - trivfs_protid_portclasses[0], port_bucket, &fsys); - mach_port_deallocate (mach_task_self (), bootstrap); - if (err) - error (1, err, "Contacting parent"); - - /* Launch. */ - do - { - ports_manage_port_operations_one_thread (port_bucket, - devnode_demuxer, 0); - } while (trivfs_goaway (fsys, 0)); - return 0; -} diff --git a/eth-filter.multi-thread/Makefile~ b/eth-filter.multi-thread/Makefile~ deleted file mode 100644 index 53578306..00000000 --- a/eth-filter.multi-thread/Makefile~ +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 2008 Free Software Foundation, Inc. -# This file is part of the GNU Hurd. -# -# The GNU Hurd is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# The GNU Hurd is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with the GNU Hurd; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -dir := eth-filter -makemode := server - -SRCS = bpf_impl.c filter.c queue.c pcap_filter.c #msg_queue.c -LCLHDRS = bpf_impl.h queue.h util.h #filter.h msg_queue.h -DIST_FILES = ourdevice.defs notify.defs #device_reply.defs -HURDLIBS = threads ports trivfs fshelp ihash shouldbeinlibc -target = eth-filter -MIGSTUBS = ourdeviceServer.o notifyServer.o #device_replyUser.o -OBJS = $(SRCS:.c=.o) $(MIGSTUBS) - -include ../Makeconf - -CFLAGS += -I../pfinet/linux-src/include -I../pfinet/glue-include -LDFLAGS += -lpcap - -ourdevice.defs: device.defs - $(CPP) $(CPPFLAGS) -x c $< | sed -e '/out[ ]*device[ ]*:[ ]*device_t/s/device_t/mach_port_send_t/' > $@ diff --git a/eth-filter.multi-thread/filter.c~ b/eth-filter.multi-thread/filter.c~ deleted file mode 100644 index 0746f5a4..00000000 --- a/eth-filter.multi-thread/filter.c~ +++ /dev/null @@ -1,878 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * This program is a filter translator which sits on the top of the network - * interface. - * It provides two filters: for outgoing packets and for incoming packets. - * Only one pfinet server are allowed to run on the top of the translator. - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "ourdevice_S.h" -#include "notify_S.h" -#include "device_reply_U.h" -#include "bpf_impl.h" -#include "util.h" -#include "filter.h" -#include "msg_queue.h" - -#ifdef DEBUG - -FILE *logfile; - -#endif - -static struct hurd_ihash proxy_deliverport_ht -= HURD_IHASH_INITIALIZER (offsetof (struct proxy, p_deliverport_hashloc)); - -/* The name of the network interface that the filter translator sits on. */ -static char *device_file; -const char *argp_program_version = "eth-filter 0.1"; -const char *argp_program_bug_address = ""; -static const char doc[] = "Hurd filter translator."; -static const struct argp_option options[] = -{ - {"interface", 'i', "DEVICE", 0, - "Network interface to use", 2}, - {"send-filter", 's', "string", 0, - "The filter rule which applies to the outgoing packet", 4}, - {"receive-filter", 'r', "string", 0, - "The filter rule which applies to the ingoing packet", 5}, - {"send-ip-range", 'S', "IP range", 0, - "A range of IP to create the send filter", 6}, - {"receive-ip-range", 'R', "IP range", 0, - "A range of IP to create the receive filter", 7}, - {0} -}; - -/* A filter allows every packet to be sent and be received. */ -static struct bpf_insn default_snd_filter[] = -{ - {NETF_OUT|NETF_BPF, 0, 0, 0}, - {6, 0, 0, 1500} -}; -static struct bpf_insn default_rcv_filter[] = -{ - {NETF_IN|NETF_BPF, 0, 0, 0}, - {6, 0, 0, 1500} -}; -static struct bpf_insn *snd_filter = NULL; -static int snd_filter_length; -static struct bpf_insn *rcv_filter = NULL; -static int rcv_filter_length; - -static cthread_t send_thread; -static int send_thread_running = 1; - -/* Port bucket we service requests on. */ -struct port_bucket *port_bucket; - -struct port_class *user_portclass; -struct port_class *device_portclass; -struct port_class *other_portclass; - -/* Trivfs hooks. */ -int trivfs_fstype = FSTYPE_MISC; -int trivfs_fsid = 0; -int trivfs_support_read = 0; -int trivfs_support_write = 0; -int trivfs_support_exec = 0; -int trivfs_allow_open = 0; - -struct port_class *trivfs_protid_portclasses[1]; -struct port_class *trivfs_cntl_portclasses[1]; -int trivfs_protid_nportclasses = 1; -int trivfs_cntl_nportclasses = 1; - -/* For getting the notification of ports from the kernel. */ -struct port_info *notify_pi; - -/* Write the data from the client to the device. */ -int -filter_device_write (struct filter_msg *msg) -{ - error_t err = 0; - int ret_count = 0; - int has_filter = 0; - net_hash_entry_t entp, *hash_headp; - net_rcv_port_t infp, nextfp; - int bytes_written; - struct filter_write_msg *write_msg = (struct filter_write_msg *) msg; - - /* The packet can be sent as long as it passes one filter, - * even thought there is usually only one filter in the list. */ - FILTER_ITERATE (&snd_port_list, infp, nextfp, &infp->chain) - { - has_filter = 1; - ret_count = mach_bpf_do_filter (infp, - write_msg->data + sizeof (struct ethhdr), - write_msg->datalen - sizeof (struct ethhdr), - write_msg->data, sizeof (struct ethhdr), - &hash_headp, &entp); - if (ret_count) - break; - } - FILTER_ITERATE_END - - if (ret_count || !has_filter) - err = device_write (msg->proxy->device_port, write_msg->mode, - write_msg->recnum, write_msg->data, - write_msg->datalen, &bytes_written); - ds_device_write_reply (write_msg->reply_port, write_msg->reply_type, - err, bytes_written); - return 0; -} - -/* Deliver the data from the device to the client. */ -int -filter_deliver (struct filter_msg *msg) -{ - deliver_msg (((struct filter_deliver_msg *)msg)->net_msg, - &rcv_port_list, msg->proxy->deliver_port); - return 0; -} - -error_t -create_proxy_user (struct proxy *proxy, mach_port_t *port) -{ - error_t err; - struct proxy_user *user; - - err = ports_create_port (user_portclass, port_bucket, sizeof (*user), &user); - if (err) - return err; - user->proxy = proxy; - - *port = ports_get_right (user); - ports_port_deref (user); - return 0; -} - -error_t -create_proxy_device (struct proxy *proxy, mach_port_t *port) -{ - error_t err; - struct proxy_device *device; - - err = ports_create_port (device_portclass, port_bucket, sizeof (*device), &device); - if (err) - return err; - device->proxy = proxy; - proxy->device = device; - - *port = ports_get_right (device); - ports_port_deref (device); - return 0; -} - -void -clean_proxy_user (void *p) -{ - struct proxy_user *user = p; - struct proxy *proxy = user->proxy; - - if (proxy->p_deliverport_hashloc) - hurd_ihash_locp_remove (&proxy_deliverport_ht, proxy->p_deliverport_hashloc); - - if (proxy->deliver_port != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), proxy->deliver_port); - if (proxy->device_port != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), proxy->device_port); - - if (proxy->device) - ports_destroy_right (proxy->device); - - free (proxy); -} - -void -clean_proxy_device (void *p) -{ - struct proxy_device *device = p; - if (device->proxy) - device->proxy->device = NULL; -} - -static int -filter_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern int device_server (mach_msg_header_t *, mach_msg_header_t *); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - extern int ethernet_demuxer (mach_msg_header_t *, mach_msg_header_t *); - return device_server (inp, outp) || notify_server (inp, outp) - || ethernet_demuxer (inp, outp) || trivfs_demuxer (inp, outp); -} - -int -ethernet_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - struct net_rcv_msg *msg = (struct net_rcv_msg *) inp; - struct proxy_device *device; - struct proxy *proxy; - - if (inp->msgh_id != NET_RCV_MSG_ID) - return 0; - - device = ports_lookup_port (port_bucket, inp->msgh_local_port, - device_portclass); - if (device == NULL) - return 0; - - proxy = device->proxy; - ports_port_deref (device); - - if (proxy && proxy->deliver_port != MACH_PORT_NULL) - queue_deliver (msg, proxy); -// deliver_msg (msg, &rcv_port_list, proxy->deliver_port); - - return 1; -} - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - debug ("do_mach_notify_no_senders is called\n"); - return ports_do_mach_notify_no_senders (notify, mscount); -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ - struct proxy *proxy; - - debug ("do_mach_notify_dead_name is called\n"); - mach_port_deallocate (mach_task_self (), name); - proxy = hurd_ihash_find (&proxy_deliverport_ht, name); - if (proxy) - { - proxy->deliver_port = MACH_PORT_NULL; - return 0; - } - return EINVAL; -} - -/* Implementation of device interface */ -kern_return_t -ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statu_cnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuscnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, mach_port_t rec, - int pri, filter_array_t filt, size_t len) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_open (mach_port_t master_port, mach_port_t reply_port, - mach_msg_type_name_t reply_portPoly, - dev_mode_t mode, dev_name_t name, mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - kern_return_t err; - mach_port_t master_device; - mach_port_t user_port; - struct proxy *proxy; - - if (device_file == NULL) - return D_NO_SUCH_DEVICE; - - master_device = file_name_lookup (device_file, 0, 0); - if (master_device == MACH_PORT_NULL) - return errno; - - proxy = (struct proxy *)calloc (1, sizeof (*proxy)); - if (proxy == NULL) - { - mach_port_deallocate (mach_task_self (), master_device); - return D_NO_MEMORY; - } - - err = device_open (master_device, mode, name, &proxy->device_port); - mach_port_deallocate (mach_task_self (), master_device); - if (err != KERN_SUCCESS) - { - free (proxy); - return err; - } - - err = create_proxy_user (proxy, &user_port); - if (err) - { - mach_port_deallocate (mach_task_self (), master_device); - free (proxy); - return err; - } - - *device = user_port; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - - return 0; -} - -kern_return_t -ds_device_close (device_t device) -{ - return 0; -} - -kern_return_t -ds_device_write (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_t data, size_t datalen, - int *bytes_written) -{ - kern_return_t err = 0; - struct proxy_user *user; - struct proxy *proxy; - int ret_count = 0; - int has_filter = 0; - net_hash_entry_t entp, *hash_headp; - net_rcv_port_t infp, nextfp; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - - /* The packet can be sent as long as it passes one filter, - * even thought there is usually only one filter in the list. */ - FILTER_ITERATE (&snd_port_list, infp, nextfp, &infp->chain) - { - has_filter = 1; - ret_count = mach_bpf_do_filter (infp, - data + sizeof (struct ethhdr), - datalen - sizeof (struct ethhdr), - data, sizeof (struct ethhdr), - &hash_headp, &entp); - if (ret_count) - break; - } - FILTER_ITERATE_END - - if (ret_count || !has_filter) - err = device_write (proxy->device_port, mode, recnum, data, - datalen, bytes_written); - ports_port_deref (user); - return err; -} - -kern_return_t -ds_device_write_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_inband_t data, - size_t datalen, int *bytes_written) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_write_inband (proxy->device_port, mode, recnum, data, - datalen, bytes_written); - return ret; -} - -kern_return_t -ds_device_read (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_t *data, size_t *datalen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_read (proxy->device_port, mode, recnum, - bytes_wanted, data, datalen); - return ret; -} - -kern_return_t -ds_device_read_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_inband_t data, size_t *datalen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_read_inband (proxy->device_port, mode, recnum, - bytes_wanted, data, datalen); - return ret; -} - -kern_return_t -ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, - vm_size_t size, memory_object_t *pager, int unmap) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_map (proxy->device_port, prot, offset, - size, pager, unmap); - return ret; -} - -kern_return_t -ds_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statuslen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_set_status (proxy->device_port, flavor, - status, statuslen); - return ret; -} - -kern_return_t -ds_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuslen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_get_status (proxy->device_port, flavor, status, statuslen); - return ret; -} - -kern_return_t -ds_device_set_filter (device_t device, mach_port_t receive_port, - int priority, filter_array_t filter, size_t filterlen) -{ - mach_port_t tmp; - kern_return_t err; - mach_port_t device_receive_port; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - if (proxy->device == NULL) - { - error_t err; - err = create_proxy_device (proxy, &device_receive_port); - if (err) - return err; - } - else - device_receive_port = ports_get_right (proxy->device); - - /* Set the filter from pfinet into the interface, - * but the packet will be delivered to the translator, - * so the translator has the chance to filter some packets. */ - err = device_set_filter (proxy->device_port, - device_receive_port, - MACH_MSG_TYPE_MAKE_SEND, priority, - filter, filterlen); - if (err) - return err; - - proxy->deliver_port = receive_port; - hurd_ihash_add (&proxy_deliverport_ht, receive_port, proxy); - - err = mach_port_request_notification (mach_task_self (), receive_port, - MACH_NOTIFY_DEAD_NAME, 0, - ports_get_right (notify_pi), - MACH_MSG_TYPE_MAKE_SEND_ONCE, &tmp); - if (tmp != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), tmp); - - return err; -} - -void -trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) -{ -} - -error_t -trivfs_goaway (struct trivfs_control *fsys, int flags) -{ - int count; - - /* Stop new requests. */ - ports_inhibit_class_rpcs (trivfs_cntl_portclasses[0]); - ports_inhibit_class_rpcs (trivfs_protid_portclasses[0]); - - count = ports_count_class (user_portclass); - debug ("the number of ports alive: %d\n", count); - - if (count && !(flags & FSYS_GOAWAY_FORCE)) - { - /* We won't go away, so start things going again... */ - ports_enable_class (trivfs_protid_portclasses[0]); - ports_resume_class_rpcs (trivfs_cntl_portclasses[0]); - ports_resume_class_rpcs (trivfs_protid_portclasses[0]); - return EBUSY; - } - - queue_flush (); - send_thread_running = 0; -// cthread_join (send_thread); - -#ifdef DEBUG - fclose (logfile); -#endif - debug ("the translator is gone away\n"); - exit (0); -} - -/* Convert the network address input by the user into - * a form that is accepted by libpcap. */ -int -correct_net_addr (char *orig, char *result, int result_len) -{ - char *ptr; - int netmask_len; - int remain_bits; - int remain_bytes; - char netmask; - char addr[4]; - char buf[INET_ADDRSTRLEN]; - int i; - - ptr = strstr (orig, "/"); - if (ptr == NULL) - { - strncpy (result, orig, result_len); - return 0; - } - - *ptr = 0; - ptr++; - netmask_len = atoi (ptr); - if (inet_pton (AF_INET, orig, addr) < 0) - { - perror ("inet_pton"); - return -1; - } - remain_bits = netmask_len % 8; - netmask = ~0; - netmask >>= 8 - remain_bits; - netmask <<= 8 - remain_bits; - remain_bytes = netmask_len / 8; - addr[remain_bytes] &= netmask; - for (i=remain_bytes+1 ; i < 4 ; i++) - addr[i] = 0; - - snprintf (result, result_len, "%s/%s", - inet_ntop (AF_INET, addr, buf, INET_ADDRSTRLEN), ptr); - return 0; -} - -static error_t -parse_opt (int opt, char *arg, struct argp_state *state) -{ - struct bpf_insn *trans_filter_program (char *str, int send, - int *filter_len); - char buf[1024]; - char addr[INET_ADDRSTRLEN+4]; - - switch (opt) - { - case 'i': - device_file = arg; - break; - case 's': - if (snd_filter) - free (snd_filter); - snd_filter = trans_filter_program (arg, 1, &snd_filter_length); - break; - case 'r': - if (rcv_filter) - free (rcv_filter); - rcv_filter = trans_filter_program (arg, 0, &rcv_filter_length); - break; - case 'S': - if (correct_net_addr (arg, addr, INET_ADDRSTRLEN+4) < 0) - return 0; - snprintf (buf, sizeof (buf), "arp or (ip and src net %s)", addr); - if (snd_filter) - free (snd_filter); - snd_filter = trans_filter_program (buf, 1, &snd_filter_length); - break; - case 'R': - if (correct_net_addr (arg, addr, INET_ADDRSTRLEN+4) < 0) - return 0; - snprintf (buf, sizeof (buf), "arp or (ip and dst net %s)", addr); - if (rcv_filter) - free (rcv_filter); - rcv_filter = trans_filter_program (buf, 0, &rcv_filter_length); - break; - case ARGP_KEY_ERROR: - case ARGP_KEY_SUCCESS: - case ARGP_KEY_INIT: - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -void *send_thread_func (void *arg) -{ - struct filter_msg *msg; - - while (send_thread_running) - { - msg = dequeue_msg (); - if (msg == NULL) - { - queue_empty_wait (); - continue; - } - msg->forward (msg); - msg->destroy (msg); - free (msg); - } - return NULL; -} - -int -main (int argc, char *argv[]) -{ - error_t err; - mach_port_t bootstrap; - struct trivfs_control *fsys; - const struct argp argp = { options, parse_opt, 0, doc }; - -#ifdef DEBUG - logfile = fopen ("/root/filter.log", "a+"); - if (logfile == NULL) - error (1, errno, "fopen"); -#endif - - port_bucket = ports_create_bucket (); - user_portclass = ports_create_class (clean_proxy_user, 0); - device_portclass = ports_create_class (clean_proxy_device, 0); - other_portclass = ports_create_class (0, 0); - trivfs_cntl_portclasses[0] = ports_create_class (trivfs_clean_cntl, 0); - trivfs_protid_portclasses[0] = ports_create_class (trivfs_clean_protid, 0); - - argp_parse (&argp, argc, argv, 0, 0, 0); - - /* Prepare the filter. */ - if (snd_filter == NULL) - { - snd_filter = default_snd_filter; - snd_filter_length = sizeof (default_snd_filter) / sizeof (short); - } - if (rcv_filter == NULL) - { - rcv_filter = default_rcv_filter; - rcv_filter_length = sizeof (default_rcv_filter) / sizeof (short); - } - - task_get_bootstrap_port (mach_task_self (), &bootstrap); - if (bootstrap == MACH_PORT_NULL) - error (1, 0, "must be started as a translator"); - - err = ports_create_port (other_portclass, port_bucket, - sizeof (struct port_info), ¬ify_pi); - if (err) - error (1, err, "ports_create_port for notification"); - - /* Reply to our parent. */ - err = trivfs_startup (bootstrap, 0, - trivfs_cntl_portclasses[0], port_bucket, - trivfs_protid_portclasses[0], port_bucket, &fsys); - mach_port_deallocate (mach_task_self (), bootstrap); - if (err) - error (1, err, "Contacting parent"); - - /* Initialize the bpf, and set the filter for outgoing packets. - * MACH_PORT_DEAD is used because we don't need a receiving port. */ - bpf_init (); - err = net_set_filter (MACH_PORT_DEAD, 0, (filter_t *) snd_filter, - snd_filter_length); - if (err) - error (1, err, "set the sending filter"); - /* Set the filter translator's own rule. */ - err = net_set_filter (MACH_PORT_DEAD, 0, (filter_t *) rcv_filter, - rcv_filter_length); - if (err) - error (1, err, "set the receiving filter"); - - cthread_init (); - send_thread = cthread_fork (send_thread_func, NULL); - /* TODO if the main thread exits, - * does the created thread exit if cthread_detach is called */ - cthread_detach (send_thread); - - /* Launch. */ - do - { - ports_manage_port_operations_one_thread (port_bucket, - filter_demuxer, 0); - } while (trivfs_goaway (fsys, 0)); - return 0; -} - -int -deliver_msg (struct net_rcv_msg *msg, queue_head_t *port_list, - mach_port_t dest) -{ - static int count = 0; - mach_msg_return_t err; - net_rcv_port_t infp, nextfp; - - msg->msg_hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_COPY_SEND, 0); - msg->msg_hdr.msgh_local_port = MACH_PORT_NULL; - msg->msg_hdr.msgh_kind = MACH_MSGH_KIND_NORMAL; - - /* Deliver the packet to the right pfinet, - * actually there should be only one filter in the list. */ - FILTER_ITERATE (port_list, infp, nextfp, &infp->chain) - { - net_hash_entry_t entp, *hash_headp; - int ret_count; - - entp = (net_hash_entry_t) 0; - ret_count = mach_bpf_do_filter (infp, - msg->packet + sizeof (struct packet_header), - msg->net_rcv_msg_packet_count, - msg->header, - sizeof (struct ethhdr), - &hash_headp, &entp); - - if (ret_count) - { - msg->msg_hdr.msgh_remote_port = dest; - debug ("before delivering the packet to port %d, count: %d\n", - dest, ++count); - err = mach_msg ((mach_msg_header_t *)msg, - MACH_SEND_MSG|MACH_SEND_TIMEOUT, - msg->msg_hdr.msgh_size, 0, MACH_PORT_NULL, - /*MACH_MSG_TIMEOUT_NONE*/500, MACH_PORT_NULL); - if (err != MACH_MSG_SUCCESS) - { - mach_port_deallocate(mach_task_self (), - ((mach_msg_header_t *)msg)->msgh_remote_port); - error (0, err, "mach_msg"); - return -1; - } - debug ("after delivering the packet\n"); - } - } - FILTER_ITERATE_END - - return 0; -} diff --git a/eth-filter.multi-thread/filter.h~ b/eth-filter.multi-thread/filter.h~ deleted file mode 100644 index e5ec7e7c..00000000 --- a/eth-filter.multi-thread/filter.h~ +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef FILTER_H -#define FILTER_H - -#include -#include -#include - -#include "bpf_impl.h" - -struct filter_msg; - -struct proxy_user -{ - struct port_info pi; - struct proxy *proxy; -}; - -struct proxy_device -{ - struct port_info pi; - struct proxy *proxy; -}; - -struct proxy -{ - struct proxy_device *device; - mach_port_t deliver_port; - hurd_ihash_locp_t p_deliverport_hashloc; - mach_port_t device_port; -}; - -extern struct mutex condition_mutex; -extern struct condition condition_cond; - -int deliver_msg (struct net_rcv_msg *msg, queue_head_t *port_list, - mach_port_t dest); -int filter_device_write (struct filter_msg *msg); -int filter_deliver (struct filter_msg *msg); - -#endif diff --git a/eth-filter.multi-thread/msg_queue.c~ b/eth-filter.multi-thread/msg_queue.c~ deleted file mode 100644 index 9e5a6766..00000000 --- a/eth-filter.multi-thread/msg_queue.c~ +++ /dev/null @@ -1,224 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include - -#include "msg_queue.h" -#include "filter.h" -#include "util.h" - -static struct filter_msg *queue_head; -static struct filter_msg *queue_tail; -static int queue_len = 0; - -static struct mutex queuelock = MUTEX_INITIALIZER; -static struct mutex condition_mutex = MUTEX_INITIALIZER; -static struct condition condition_cond = CONDITION_INITIALIZER; - -void -queue_msg (struct filter_msg *msg) -{ - msg->next = NULL; - // TODO what kind of lock do I need? - mutex_lock (&queuelock); - if (queue_head == NULL) - { - assert (queue_tail == NULL); - assert (queue_len == 0); - /* When the queue is empty. */ - queue_head = msg; - queue_tail = msg; - } - else - { - queue_tail->next = msg; - queue_tail = msg; - } - queue_len++; - debug ("queue a message, queue length: %d.\n", queue_len); - mutex_unlock (&queuelock); - queue_wakeup (); -} - -struct filter_msg * -dequeue_msg () -{ - struct filter_msg *msg; - - mutex_lock (&queuelock); - if (queue_head == NULL) - { - assert (queue_tail == NULL); - assert (queue_len == 0); - msg = NULL; - } - else - { - msg = queue_head; - queue_head = msg->next; - if (queue_head == NULL) - queue_tail = NULL; - queue_len--; - } - debug ("dequeue a message, the queue length: %d.\n", queue_len); - mutex_unlock (&queuelock); - - return msg; -} - -/* It can be called when the translator exits. */ -void -queue_flush () -{ - struct filter_msg *msg; - struct filter_msg *tmp; - - mutex_lock (&queuelock); - msg = queue_head; - queue_head = queue_tail = NULL; - queue_len = 0; - mutex_unlock (&queuelock); - - while (msg) - { - tmp = msg; - msg = msg->next; - if (tmp->destroy) - tmp->destroy (tmp); - free (tmp); - } -} - -void -filter_write_destroy (struct filter_msg *msg) -{ - struct filter_write_msg *write_msg = (struct filter_write_msg *) msg; - - free (write_msg->data); -} - -void filter_deliver_destroy (struct filter_msg *msg) -{ - struct filter_deliver_msg *deliver_msg = (struct filter_deliver_msg *) msg; - - free (deliver_msg->net_msg); -} - -kern_return_t -queue_write (char *data, size_t datalen, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, struct proxy *proxy) -{ - /* Make a copy of the data */ - char *new_data; - struct filter_msg *msg; - struct filter_write_msg *write_msg; - - if (queue_len >= MAX_QUEUE) - return D_NO_MEMORY; - - new_data = (char *) malloc (datalen); - if (new_data == NULL) - return D_NO_MEMORY; - - memcpy (new_data, data, datalen); - - write_msg = (struct filter_write_msg *) malloc (sizeof (*write_msg)); - if (write_msg == NULL) - { - free (new_data); - return D_NO_MEMORY; - } - msg = (struct filter_msg *) write_msg; - - msg->proxy = proxy; - msg->forward = filter_device_write; - msg->destroy = filter_write_destroy; - - write_msg->data = new_data; - write_msg->datalen = datalen; - write_msg->reply_port = reply_port; - write_msg->reply_type = reply_type; - write_msg->mode = mode; - write_msg->recnum = recnum; - - queue_msg (msg); - return D_SUCCESS; -} - -int -queue_deliver (struct net_rcv_msg *msg, struct proxy *proxy) -{ - struct net_rcv_msg *msg_copy; - struct filter_deliver_msg *deliver_msg; - - if (queue_len >= MAX_QUEUE) - return D_NO_MEMORY; - - /* Make a copy of the data */ - msg_copy = (struct net_rcv_msg *) malloc (sizeof (*msg_copy)); - if (msg_copy == NULL) - return D_NO_MEMORY; - - deliver_msg = (struct filter_deliver_msg *) malloc (sizeof (*deliver_msg)); - if (deliver_msg == NULL) - { - free (msg_copy); - return D_NO_MEMORY; - } - - *msg_copy = *msg; - - deliver_msg->msg.proxy = proxy; - deliver_msg->msg.forward = filter_deliver; - deliver_msg->msg.destroy = filter_deliver_destroy; - - deliver_msg->net_msg = msg_copy; - - queue_msg ((struct filter_msg *)deliver_msg); - return D_SUCCESS; -} - -void -queue_empty_wait () -{ - mutex_lock (&condition_mutex); -// debug ("queue length is %d\n", queue_len); - while (queue_head == NULL) - { - debug ("thread waits for a signal.\n"); - condition_wait (&condition_cond, &condition_mutex); - } - mutex_unlock (&condition_mutex); -} - -void -queue_wakeup () -{ - if (queue_head) - { - debug ("wake up a thread.\n"); - condition_signal (&condition_cond); - } -} - diff --git a/eth-filter.multi-thread/msg_queue.h~ b/eth-filter.multi-thread/msg_queue.h~ deleted file mode 100644 index 448b7475..00000000 --- a/eth-filter.multi-thread/msg_queue.h~ +++ /dev/null @@ -1,69 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef MSG_QUEUE_H -#define MSG_QUEUE_H - -#include -#include - -//#define MAX_QUEUE 1000 - -struct proxy; - -struct filter_msg -{ - struct proxy *proxy; - struct filter_msg *next; - - int (*forward) (struct filter_msg *); - void (*destroy) (struct filter_msg *); -}; - -struct filter_write_msg -{ - struct filter_msg msg; - - char *data; - size_t datalen; - dev_mode_t mode; - recnum_t recnum; - mach_port_t reply_port; - mach_msg_type_name_t reply_type; -}; - -struct filter_deliver_msg -{ - struct filter_msg msg; - - struct net_rcv_msg *net_msg; -}; - -void queue_msg (struct filter_msg *msg); -struct filter_msg * dequeue_msg (); -void queue_flush (); -kern_return_t queue_write (char *data, size_t datalen, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, struct proxy *proxy); -int queue_deliver (struct net_rcv_msg *msg, struct proxy *proxy); -void queue_wakeup (); -void queue_empty_wait (); - -#endif diff --git a/eth-filter.multi-thread/tmp.patch~ b/eth-filter.multi-thread/tmp.patch~ deleted file mode 100644 index cca91c30..00000000 --- a/eth-filter.multi-thread/tmp.patch~ +++ /dev/null @@ -1,49 +0,0 @@ -? bpf_impl.d -? device.defs -? eth-filter -? eth-filter.prof_d -? filter.d -? notify.defs -? notify.sdefs.d -? notifyServer.c -? notifyServer.d -? notify_S.h -? ourdevice.defs -? ourdevice.sdefs.d -? ourdeviceServer.c -? ourdeviceServer.d -? ourdevice_S.h -? pcap_filter.d -? queue.d -? tmp.patch -Index: filter.c -=================================================================== -RCS file: /sources/hurd/hurd/eth-filter/Attic/filter.c,v -retrieving revision 1.1.2.8 -diff -r1.1.2.8 filter.c -208a209 -> mach_msg_header_t header; -213c214,215 -< device = ports_lookup_port (port_bucket, inp->msgh_local_port, device_portclass); ---- -> device = ports_lookup_port (port_bucket, inp->msgh_local_port, -> device_portclass); -215a218 -> -218a222 -> header = msg->msg_hdr; -220a225 -> msg->msg_hdr = header; -789c794,796 -< err = mach_msg ((mach_msg_header_t *)msg, MACH_SEND_MSG, ---- -> debug ("before delivering the packet\n"); -> err = mach_msg ((mach_msg_header_t *)msg, -> MACH_SEND_MSG, -794,795c801 -< fprintf (stderr, "deliver msg: mach_msg: %s\n", -< strerror (err)); ---- -> error (0, err, "mach_msg"); -797a804 -> debug ("after delivering the packet\n"); diff --git a/eth-filter.multi-thread/util.h~ b/eth-filter.multi-thread/util.h~ deleted file mode 100644 index 44755152..00000000 --- a/eth-filter.multi-thread/util.h~ +++ /dev/null @@ -1,73 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef UTIL_H -#define UTIL_H - -#include - -#include -#include -#include -#include -#include - -#define DEBUG - -#ifdef DEBUG - -#define debug(format, ...) do \ -{ \ - extern FILE *logfile; \ - char buf[1024]; \ - snprintf (buf, 1024, "filter: %s", format); \ - fprintf (logfile , buf, ## __VA_ARGS__); \ - fflush (logfile); \ -} while (0) - -#else - -#define debug(format, ...) do {} while (0) - -#endif - -static inline void -print_pack (char *packet, int len) -{ -#ifdef DEBUG - struct ethhdr *ethh = (struct ethhdr *) packet; - struct iphdr *iph = (struct iphdr *)(ethh + 1); - char src_str[INET_ADDRSTRLEN]; - char dst_str[INET_ADDRSTRLEN]; - if (ntohs (ethh->h_proto) == ETH_P_IP - && len >= sizeof (struct ethhdr) + sizeof (struct iphdr)) - { - debug ("pack: get a IP packet from %s to %s\n", - inet_ntop (AF_INET, &iph->saddr, src_str, INET_ADDRSTRLEN), - inet_ntop (AF_INET, &iph->daddr, dst_str, INET_ADDRSTRLEN)); - } - else - { - debug ("pack: get a non-IP packet: %x\n", ntohs (ethh->h_proto)); - } -#endif -} - -#endif diff --git a/eth-filter/ChangeLog~ b/eth-filter/ChangeLog~ deleted file mode 100644 index 392c5c15..00000000 --- a/eth-filter/ChangeLog~ +++ /dev/null @@ -1,122 +0,0 @@ -2009-01-02 Zheng Da - - * filter.c (ds_device_write): Deallocate the out-of-line data. - -2008-10-03 Zheng Da - - * Makefile: Remove the include paths from pfinet. - - * util.h: Remove the line of including linux/if_ether.h - (ETH_ALEN): New macro. - (ethhdr): New structure. - -2008-09-26 Zheng Da - - * filter.c (ethernet_demuxer): Save and restore the message header. - (deliver_msg): Use the non-block send. - -2008-08-22 Zheng Da - - * README: Update. - - * filter.c (proxy_info): Removed. - (proxy_pfinetpi_ht): Removed. - (proxy_devicepi_ht): Removed. - (create_proxy): Removed. - (destroy_proxy): Removed. - (proxy_device): New structure. - (proxy_user): New structure. - (proxy): New structure. - (create_proxy_user): New function. - (create_proxy_device): New function. - (clean_proxy_user): New function. - (clean_proxy_device): New function. - (ethernet_demuxer): Get the data from proxy object instead of from - proxy_info. - (do_mach_notify_dead_name): Likewise. - (ds_device_write): Likewise. - (ds_device_write_inband): Likewise. - (ds_device_read): Likewise. - (ds_device_read_inband): Likewise. - (ds_device_map): Likewise. - (ds_device_set_status): Likewise. - (ds_device_get_status): Likewise. - (ds_device_set_filter): Likewise. Create the proxy_device object. - (do_mach_notify_no_senders): Use ports_do_mach_notify_no_senders(). - (ds_device_open): Create proxy_user and proxy objects. - (main): Add the cleaning routine when creating the port class. - -2008-08-20 Zheng Da - - * README: Update. - - * filter.c (options): Update. - -2008-08-20 Zheng Da - - * filter.c (destroy_proxy): Test p_deliverport_hashloc before removing - it from proxy_deliverport_ht, and reverse the order of calling - ports_destroy_right and ports_port_deref. - (ds_device_open): Test device_file and replace "eth" with the variable - name. - -2008-08-20 Zheng Da - - * filter.c (device_file): Change the name of a variable. - (ds_device_open): Use device_file directly. - -2008-08-19 Zheng Da - - * filter.c (ds_device_open): Generate the device file name, and use it - to open the device. - -2008-08-18 Zheng Da - - * README: New file. - - -2008-08-17 Zheng Da - - * filter.c (device_name): Remove its default value. - (options): Remove the option '-M'. - (create_proxy): Get the port directly from port_right field in port_info. - (ds_device_open): Remove the code of checking the device name, - and open the device from the device file. - (parse_opt): Remove the code of handling the option '-M'. - (main): Remove the code of getting the master device port. - - -2008-08-14 Zheng Da - - * filter.c (pfinet_portclass, device_portclass, other_portclass): - New variables. - (create_proxy): Use pfinet_portclass and device_portclass to create the - port. - (destroy_proxy): Dereference the port before destroying it. - (trivfs_goaway): Test the number of ports in pfinet_portclass and destroy - the master_device. - (main): Create pfinet_portclass, device_portclass, other_portclass. - (print_msg): Deleted. - (deliver_msg): Remove debuging print. - - * ChangeLog: New file. - - -2008-08-13 Zheng Da - - * bpf_impl.c: New file. - - * Makefile: New file. - - * queue.c: New file. - - * util.h: New file. - - * bpf_impl.h: New file. - - * filter.c: New file. - - * pcap_filter.c: New file. - - * queue.h: New file. - diff --git a/eth-filter/filter.c~ b/eth-filter/filter.c~ deleted file mode 100644 index d348d860..00000000 --- a/eth-filter/filter.c~ +++ /dev/null @@ -1,827 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * This program is a filter translator which sits on the top of the network - * interface. - * It provides two filters: for outgoing packets and for incoming packets. - * Only one pfinet server are allowed to run on the top of the translator. - */ - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "ourdevice_S.h" -#include "notify_S.h" -#include "bpf_impl.h" -#include "util.h" - -struct proxy_user -{ - struct port_info pi; - struct proxy *proxy; -}; - -struct proxy_device -{ - struct port_info pi; - struct proxy *proxy; -}; - -struct proxy -{ - struct proxy_device *device; - mach_port_t deliver_port; - hurd_ihash_locp_t p_deliverport_hashloc; - mach_port_t device_port; -}; - -int deliver_msg (struct net_rcv_msg *msg, queue_head_t *port_list, - mach_port_t dest); - -static struct hurd_ihash proxy_deliverport_ht -= HURD_IHASH_INITIALIZER (offsetof (struct proxy, p_deliverport_hashloc)); - -/* The name of the network interface that the filter translator sits on. */ -static char *device_file; -const char *argp_program_version = "eth-filter 0.1"; -const char *argp_program_bug_address = ""; -static const char doc[] = "Hurd filter translator."; -static const struct argp_option options[] = -{ - {"interface", 'i', "DEVICE", 0, - "Network interface to use", 2}, - {"send-filter", 's', "string", 0, - "The filter rule which applies to the outgoing packet", 4}, - {"receive-filter", 'r', "string", 0, - "The filter rule which applies to the ingoing packet", 5}, - {"send-ip-range", 'S', "IP range", 0, - "A range of IP to create the send filter", 6}, - {"receive-ip-range", 'R', "IP range", 0, - "A range of IP to create the receive filter", 7}, - {0} -}; - -/* A filter allows every packet to be sent and be received. */ -static struct bpf_insn default_snd_filter[] = -{ - {NETF_OUT|NETF_BPF, 0, 0, 0}, - {6, 0, 0, 1500} -}; -static struct bpf_insn default_rcv_filter[] = -{ - {NETF_IN|NETF_BPF, 0, 0, 0}, - {6, 0, 0, 1500} -}; -static struct bpf_insn *snd_filter = NULL; -static int snd_filter_length; -static struct bpf_insn *rcv_filter = NULL; -static int rcv_filter_length; - -/* Port bucket we service requests on. */ -struct port_bucket *port_bucket; - -struct port_class *user_portclass; -struct port_class *device_portclass; -struct port_class *other_portclass; - -/* Trivfs hooks. */ -int trivfs_fstype = FSTYPE_MISC; -int trivfs_fsid = 0; -int trivfs_support_read = 0; -int trivfs_support_write = 0; -int trivfs_support_exec = 0; -int trivfs_allow_open = O_READ | O_WRITE; - -struct port_class *trivfs_protid_portclasses[1]; -struct port_class *trivfs_cntl_portclasses[1]; -int trivfs_protid_nportclasses = 1; -int trivfs_cntl_nportclasses = 1; - -/* For getting the notification of ports from the kernel. */ -struct port_info *notify_pi; - -error_t -create_proxy_user (struct proxy *proxy, mach_port_t *port) -{ - error_t err; - struct proxy_user *user; - - err = ports_create_port (user_portclass, port_bucket, sizeof (*user), &user); - if (err) - return err; - user->proxy = proxy; - - *port = ports_get_right (user); - ports_port_deref (user); - return 0; -} - -error_t -create_proxy_device (struct proxy *proxy, mach_port_t *port) -{ - error_t err; - struct proxy_device *device; - - err = ports_create_port (device_portclass, port_bucket, sizeof (*device), &device); - if (err) - return err; - device->proxy = proxy; - proxy->device = device; - - *port = ports_get_right (device); - ports_port_deref (device); - return 0; -} - -void -clean_proxy_user (void *p) -{ - struct proxy_user *user = p; - struct proxy *proxy = user->proxy; - - if (proxy->p_deliverport_hashloc) - hurd_ihash_locp_remove (&proxy_deliverport_ht, proxy->p_deliverport_hashloc); - - if (proxy->deliver_port != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), proxy->deliver_port); - if (proxy->device_port != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), proxy->device_port); - - if (proxy->device) - ports_destroy_right (proxy->device); - - free (proxy); -} - -void -clean_proxy_device (void *p) -{ - struct proxy_device *device = p; - if (device->proxy) - device->proxy->device = NULL; -} - -static int -filter_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - extern int device_server (mach_msg_header_t *, mach_msg_header_t *); - extern int notify_server (mach_msg_header_t *, mach_msg_header_t *); - extern int ethernet_demuxer (mach_msg_header_t *, mach_msg_header_t *); - return device_server (inp, outp) || notify_server (inp, outp) - || ethernet_demuxer (inp, outp) || trivfs_demuxer (inp, outp); -} - -int -ethernet_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - struct net_rcv_msg *msg = (struct net_rcv_msg *) inp; - struct proxy_device *device; - struct proxy *proxy; - mach_msg_header_t header; - - if (inp->msgh_id != NET_RCV_MSG_ID) - return 0; - - device = ports_lookup_port (port_bucket, inp->msgh_local_port, device_portclass); - if (device == NULL) - return 0; - proxy = device->proxy; - ports_port_deref (device); - - if (proxy && proxy->deliver_port != MACH_PORT_NULL) - { - header = msg->msg_hdr; - deliver_msg (msg, &rcv_port_list, proxy->deliver_port); - msg->msg_hdr = header; - } - - return 1; -} - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - debug ("do_mach_notify_no_senders is called\n"); - return ports_do_mach_notify_no_senders (notify, mscount); -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ - struct proxy *proxy; - - debug ("do_mach_notify_dead_name is called\n"); - mach_port_deallocate (mach_task_self (), name); - proxy = hurd_ihash_find (&proxy_deliverport_ht, name); - if (proxy) - { - proxy->deliver_port = MACH_PORT_NULL; - return 0; - } - return EINVAL; -} - -/* Implementation of device interface */ -kern_return_t -ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statu_cnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuscnt) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, mach_port_t rec, - int pri, filter_array_t filt, size_t len) -{ - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_open (mach_port_t master_port, mach_port_t reply_port, - mach_msg_type_name_t reply_portPoly, - dev_mode_t mode, dev_name_t name, mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - kern_return_t err; - mach_port_t master_device; - mach_port_t user_port; - int file_open_mode = 0; - struct proxy *proxy; - - if (device_file == NULL) - return D_NO_SUCH_DEVICE; - - if (mode | D_WRITE) - file_open_mode |= O_WRITE; - if (mode | D_READ) - file_open_mode |= O_READ; - master_device = file_name_lookup (device_file, file_open_mode, 0); - if (master_device == MACH_PORT_NULL) - return errno; - - proxy = (struct proxy *)calloc (1, sizeof (*proxy)); - if (proxy == NULL) - { - mach_port_deallocate (mach_task_self (), master_device); - return D_NO_MEMORY; - } - - err = device_open (master_device, mode, name, &proxy->device_port); - mach_port_deallocate (mach_task_self (), master_device); - if (err != KERN_SUCCESS) - { - free (proxy); - return err; - } - - err = create_proxy_user (proxy, &user_port); - if (err) - { - mach_port_deallocate (mach_task_self (), master_device); - free (proxy); - return err; - } - - *device = user_port; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - - return 0; -} - -kern_return_t -ds_device_close (device_t device) -{ - return 0; -} - -kern_return_t -ds_device_write (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_t data, size_t datalen, - int *bytes_written) -{ - int ret_count = 0; - int has_filter = 0; - net_hash_entry_t entp, *hash_headp; - net_rcv_port_t infp, nextfp; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - { - vm_deallocate (mach_task_self (), data, datalen); - return D_INVALID_OPERATION; - } - proxy = user->proxy; - ports_port_deref (user); - - /* The packet can be sent as long as it passes one filter, - * even thought there is usually only one filter in the list. */ - FILTER_ITERATE (&snd_port_list, infp, nextfp, &infp->chain) - { - has_filter = 1; - ret_count = mach_bpf_do_filter (infp, - data + sizeof (struct ethhdr), - datalen - sizeof (struct ethhdr), - data, sizeof (struct ethhdr), - &hash_headp, &entp); - if (ret_count) - break; - } - FILTER_ITERATE_END - - error_t err; - if (ret_count || !has_filter) - { - print_pack (data, datalen); - debug ("before writing a packet from the device.\n"); - err = device_write (proxy->device_port, mode , recnum , - data, datalen, bytes_written); - debug ("after writing a packet from the device.\n"); - } - else - { - *bytes_written = datalen; - err = 0; - } - vm_deallocate (mach_task_self (), data, datalen); - return err; -} - -kern_return_t -ds_device_write_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_inband_t data, - size_t datalen, int *bytes_written) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_write_inband (proxy->device_port, mode, recnum, data, - datalen, bytes_written); - return ret; -} - -kern_return_t -ds_device_read (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_t *data, size_t *datalen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_read (proxy->device_port, mode, recnum, - bytes_wanted, data, datalen); - return ret; -} - -kern_return_t -ds_device_read_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_inband_t data, size_t *datalen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_read_inband (proxy->device_port, mode, recnum, - bytes_wanted, data, datalen); - return ret; -} - -kern_return_t -ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, - vm_size_t size, memory_object_t *pager, int unmap) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_map (proxy->device_port, prot, offset, - size, pager, unmap); - return ret; -} - -kern_return_t -ds_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statuslen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_set_status (proxy->device_port, flavor, - status, statuslen); - return ret; -} - -kern_return_t -ds_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuslen) -{ - kern_return_t ret; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - ret = device_get_status (proxy->device_port, flavor, status, statuslen); - return ret; -} - -kern_return_t -ds_device_set_filter (device_t device, mach_port_t receive_port, - int priority, filter_array_t filter, size_t filterlen) -{ - mach_port_t tmp; - kern_return_t err; - mach_port_t device_receive_port; - struct proxy_user *user; - struct proxy *proxy; - - user = ports_lookup_port (port_bucket, device, user_portclass); - if (user == NULL) - return D_INVALID_OPERATION; - proxy = user->proxy; - ports_port_deref (user); - - if (proxy->device == NULL) - { - error_t err; - err = create_proxy_device (proxy, &device_receive_port); - if (err) - return err; - } - else - device_receive_port = ports_get_right (proxy->device); - - /* Set the filter from pfinet into the interface, - * but the packet will be delivered to the translator, - * so the translator has the chance to filter some packets. */ - err = device_set_filter (proxy->device_port, - device_receive_port, - MACH_MSG_TYPE_MAKE_SEND, priority, - filter, filterlen); - if (err) - return err; - - proxy->deliver_port = receive_port; - hurd_ihash_add (&proxy_deliverport_ht, receive_port, proxy); - - err = mach_port_request_notification (mach_task_self (), receive_port, - MACH_NOTIFY_DEAD_NAME, 0, - ports_get_right (notify_pi), - MACH_MSG_TYPE_MAKE_SEND_ONCE, &tmp); - if (tmp != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), tmp); - - return err; -} - -void -trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) -{ -} - -error_t -trivfs_goaway (struct trivfs_control *fsys, int flags) -{ - int count; - - /* Stop new requests. */ - ports_inhibit_class_rpcs (trivfs_cntl_portclasses[0]); - ports_inhibit_class_rpcs (trivfs_protid_portclasses[0]); - - count = ports_count_class (user_portclass); - debug ("the number of ports alive: %d\n", count); - - if (count && !(flags & FSYS_GOAWAY_FORCE)) - { - /* We won't go away, so start things going again... */ - ports_enable_class (trivfs_protid_portclasses[0]); - ports_resume_class_rpcs (trivfs_cntl_portclasses[0]); - ports_resume_class_rpcs (trivfs_protid_portclasses[0]); - return EBUSY; - } - - debug ("the translator is gone away\n"); - exit (0); -} - -/* Convert the network address input by the user into - * a form that is accepted by libpcap. */ -int -correct_net_addr (char *orig, char *result, int result_len) -{ - char *ptr; - int netmask_len; - int remain_bits; - int remain_bytes; - char netmask; - char addr[4]; - char buf[INET_ADDRSTRLEN]; - int i; - - ptr = strstr (orig, "/"); - if (ptr == NULL) - { - strncpy (result, orig, result_len); - return 0; - } - - *ptr = 0; - ptr++; - netmask_len = atoi (ptr); - if (inet_pton (AF_INET, orig, addr) < 0) - { - perror ("inet_pton"); - return -1; - } - remain_bits = netmask_len % 8; - netmask = ~0; - netmask >>= 8 - remain_bits; - netmask <<= 8 - remain_bits; - remain_bytes = netmask_len / 8; - addr[remain_bytes] &= netmask; - for (i=remain_bytes+1 ; i < 4 ; i++) - addr[i] = 0; - - snprintf (result, result_len, "%s/%s", - inet_ntop (AF_INET, addr, buf, INET_ADDRSTRLEN), ptr); - return 0; -} - -static error_t -parse_opt (int opt, char *arg, struct argp_state *state) -{ - struct bpf_insn *trans_filter_program (char *str, int send, - int *filter_len); - char buf[1024]; - char addr[INET_ADDRSTRLEN+4]; - - switch (opt) - { - case 'i': - device_file = arg; - break; - case 's': - if (snd_filter) - free (snd_filter); - snd_filter = trans_filter_program (arg, 1, &snd_filter_length); - break; - case 'r': - if (rcv_filter) - free (rcv_filter); - rcv_filter = trans_filter_program (arg, 0, &rcv_filter_length); - break; - case 'S': - if (correct_net_addr (arg, addr, INET_ADDRSTRLEN+4) < 0) - return 0; - snprintf (buf, sizeof (buf), "arp or (ip and src net %s)", addr); - if (snd_filter) - free (snd_filter); - snd_filter = trans_filter_program (buf, 1, &snd_filter_length); - break; - case 'R': - if (correct_net_addr (arg, addr, INET_ADDRSTRLEN+4) < 0) - return 0; - snprintf (buf, sizeof (buf), "arp or (ip and dst net %s)", addr); - if (rcv_filter) - free (rcv_filter); - rcv_filter = trans_filter_program (buf, 0, &rcv_filter_length); - break; - case ARGP_KEY_ERROR: - case ARGP_KEY_SUCCESS: - case ARGP_KEY_INIT: - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -int -main (int argc, char *argv[]) -{ - error_t err; - mach_port_t bootstrap; - struct trivfs_control *fsys; - const struct argp argp = { options, parse_opt, 0, doc }; - - port_bucket = ports_create_bucket (); - user_portclass = ports_create_class (clean_proxy_user, 0); - device_portclass = ports_create_class (clean_proxy_device, 0); - other_portclass = ports_create_class (0, 0); - trivfs_cntl_portclasses[0] = ports_create_class (trivfs_clean_cntl, 0); - trivfs_protid_portclasses[0] = ports_create_class (trivfs_clean_protid, 0); - - argp_parse (&argp, argc, argv, 0, 0, 0); - - /* Prepare the filter. */ - if (snd_filter == NULL) - { - snd_filter = default_snd_filter; - snd_filter_length = sizeof (default_snd_filter) / sizeof (short); - } - if (rcv_filter == NULL) - { - rcv_filter = default_rcv_filter; - rcv_filter_length = sizeof (default_rcv_filter) / sizeof (short); - } - - task_get_bootstrap_port (mach_task_self (), &bootstrap); - if (bootstrap == MACH_PORT_NULL) - error (1, 0, "must be started as a translator"); - - err = ports_create_port (other_portclass, port_bucket, - sizeof (struct port_info), ¬ify_pi); - if (err) - error (1, err, "ports_create_port for notification"); - - /* Reply to our parent. */ - err = trivfs_startup (bootstrap, 0, - trivfs_cntl_portclasses[0], port_bucket, - trivfs_protid_portclasses[0], port_bucket, &fsys); - mach_port_deallocate (mach_task_self (), bootstrap); - if (err) - error (1, err, "Contacting parent"); - - /* Initialize the bpf, and set the filter for outgoing packets. - * MACH_PORT_DEAD is used because we don't need a receiving port. */ - bpf_init (); - err = net_set_filter (MACH_PORT_DEAD, 0, (filter_t *) snd_filter, - snd_filter_length); - if (err) - error (1, err, "set the sending filter"); - /* Set the filter translator's own rule. */ - err = net_set_filter (MACH_PORT_DEAD, 0, (filter_t *) rcv_filter, - rcv_filter_length); - if (err) - error (1, err, "set the receiving filter"); - - /* Launch. */ - do - { - ports_manage_port_operations_one_thread (port_bucket, - filter_demuxer, 0); - } while (trivfs_goaway (fsys, 0)); - return 0; -} - -int -deliver_msg (struct net_rcv_msg *msg, queue_head_t *port_list, - mach_port_t dest) -{ - int ret_count = 0; - int has_filter = 0; - mach_msg_return_t err; - net_rcv_port_t infp, nextfp; - - msg->msg_hdr.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_COPY_SEND, 0); - msg->msg_hdr.msgh_local_port = MACH_PORT_NULL; - msg->msg_hdr.msgh_kind = MACH_MSGH_KIND_NORMAL; - - /* Deliver the packet to the right pfinet, - * actually there should be only one filter in the list. */ - FILTER_ITERATE (port_list, infp, nextfp, &infp->chain) - { - net_hash_entry_t entp, *hash_headp; - - entp = (net_hash_entry_t) 0; - ret_count = mach_bpf_do_filter (infp, - msg->packet + sizeof (struct packet_header), - msg->net_rcv_msg_packet_count, - msg->header, - sizeof (struct ethhdr), - &hash_headp, &entp); - - if (ret_count) - break; - } - FILTER_ITERATE_END - - if (ret_count || !has_filter) - { - msg->msg_hdr.msgh_remote_port = dest; - debug ("before delivering the message\n"); - err = mach_msg ((mach_msg_header_t *)msg, - MACH_SEND_MSG|MACH_SEND_TIMEOUT, - msg->msg_hdr.msgh_size, 0, MACH_PORT_NULL, - 0, MACH_PORT_NULL); - if (err != MACH_MSG_SUCCESS) - { - fprintf (stderr, "deliver msg: mach_msg: %s\n", - strerror (err)); - return -1; - } - debug ("after delivering the message\n"); - } - - return 0; -} diff --git a/eth-multiplexer/ChangeLog~ b/eth-multiplexer/ChangeLog~ deleted file mode 100644 index dded432e..00000000 --- a/eth-multiplexer/ChangeLog~ +++ /dev/null @@ -1,341 +0,0 @@ -2009-04-18 Zheng Da - - * device_impl.c (ds_device_open): Create a virtual device if it - doesn't exist. - - * netfs_impl.c (new_node): Test if the lnode structure exists - before setting its field. - (lookup): Copy the device name and don't create the virtual device. - (netfs_validate_stat): Set the status with the one of the underlying - node if the node has no lnode structure. - (netfs_attempt_chmod): chmod isn't supported if the node has no lnode - structure. - (netfs_node_norefs): Free the name in netnode. - - * netfs_impl.h (net_node): Add new field 'name'. - -2009-04-18 Zheng Da - - * device_impl.c (ds_device_open): Check the mode for opening the file. - - * multiplexer.c - (underlying_node_stat): New variable. - (main): Get the mapped time from Mach and set the time of the underlying - node of the translator. - - * netfs_impl.c (lookup): Set the new created node with the same permission - as the underlying node of the translator and its time. - (netfs_check_open_permissions): Check the open permission of a node - in the same way. - (netfs_attempt_unlink): Change the return value. - (netfs_attempt_rename): Likewise. - (netfs_attempt_mkdir): Likewise. - (netfs_attempt_rmdir): Likewise. - (netfs_attempt_chown): Likewise. - (netfs_attempt_chauthor): Likewise. - (netfs_attempt_mksymlink): Likewise. - (netfs_attempt_mkdev): Likewise. - (netfs_set_translator): Likewise. - (netfs_attempt_chflags): Likewise. - (netfs_attempt_set_size): Likewise. - (netfs_attempt_link): Likewise. - (netfs_attempt_mkfile): Likewise. - (netfs_attempt_write): Likewise. - (netfs_attempt_chmod): Write the code to support the change of the mode. - - * netfs_impl.h (multiplexer_maptime): Add the declaration. - -2009-01-03 Zheng Da - - * device_impl.c (ds_device_write): Deallocate the out-of-line data. - -2008-12-12 Zheng Da - - * multiplexer.c (main): Initialize the file status of the root node. - - * netfs_impl.c (netfs_validate_stat): Set the file status of the node - with the one in the light node. - - * vdev.h (dev_act_func): Define a new type. - (foreach_dev_do): Declare the function. - -2008-11-18 Zheng Da - - * netfs_impl.c (netfs_get_dirents): Use foreach_dev_do. - - * vdev.c (dev_head, dev_num): Hide in the file. - (dev_list_lock): New variable. - (get_dev_num): New function. - (lookup_dev_by_name): Use lock. - (foreach_dev_do): New function. - (remove_dead_port_from_dev): Use lock. - (broadcast_pack, broadcast_msg): Use foreach_dev_do. - - * vdev.h (dev_num): Remove declaration. - (get_dev_num): Add declaration. - -2008-11-13 Zheng Da - - * device_impl.c (ds_device_open): Use dev_port, dereference pi. - - * util.h (print_backtrace): New macro. - - * vdev.c (add_vdev): Set dev_port. - - * vdev.h (vether_device): Add dev_port. - -2008-11-12 Zheng Da - - * Makefile (SRCS): Updated. - - * demuxer.c: New file. - - * device_impl.c (ds_device_open): Use netfs_port_bucket. - - * make-protid.c: Deleted. - -2008-11-02 Zheng Da - - * Makefile (CFLAGS): Add a macro. - (SRCS): Add new C files. - (LCLHDRS): Add new H files. - (HURDLIBS): Change libraries. - - * demuxer.c: New file. - - * device_impl.c: New file. - - * make-protid.c: New file. - - * netfs_impl.c: New file. - - * netfs_impl.h: New file. - - * notify_impl.c: New file. - - * multiplexer.c: Remove the trivfs variables. Move the implementation of - notify interface. Move the implementation of device interface. - (multiplexer_thread): New functions. - (main): Run the libnetfs translator. - - * util.h (debug): Update. - - * vdev.c (lookup_dev_by_name): Use strncmp. - (add_vdev): Change its interface. - -2008-10-27 Zheng Da - - * README: Update. - - * bpf_impl.c (destroy_filters): New function. - - * multiplexer.c (nb_dev): Deleted. - (options): Remove the option '-v'. - (do_mach_notify_no_senders): Remove all port_info in the same way. - (ds_device_open): Create new devices if they don't exist, and decrease - their reference counts. - (ds_device_set_filter): Fix a bug. - (trivfs_goaway): Use has_vdev() to test. - (parse_opt): Remove the code of handling '-v'. - (main): Remove the code of creating virtual devices. - - * util.h (ETH_P_IP): New macro. - - * vdev.c (all_dev_close): Deleted. - (add_vdev): Link virtual device. - (destroy_vdev): New function. - - * vdev.h (vether_device): Changed. - - -2008-10-03 Zheng Da - - * Makefile (CFLAGS): Remove the include paths from pfinet. - - * util.h: Remove the line of including linux/if_ether.h. - (ETH_ALEN): New macro. - (ethhdr): New structure. - - * vdev.c (ETH_HLEN): New macro. - - * vdev.h: Remove the line of including linux/etherdevice.h and include util.h - -2008-10-03 Zheng Da - - * multiplexer.c (parse_opt): Don't create the virtual devices in case 'v'. - (main): Create the virtual devices. - - * README: Update. - -2008-10-03 Zheng Da - - * multiplexer.c (ds_device_write): Don't call device_write when ether_port is NULL. - (ds_device_get_status): Call dev_getstat when ether_port is NULL. - (main): If device_file isn't specified, don't open the underlying device. - -2008-09-26 Zheng Da - - * vdev.c (deliver_msg): Use non-block send. - -2008-09-21 Zheng Da - - * README: Update. - -2008-09-02 Zheng Da - - * ethernet.c (ether_filter): Use the original NPF filter. - -2008-9-01 Zheng Da - - * multiplexer.c (ds_device_write): Reverse the calling of functions. - (ds_device_get_status): Call device_get_status. - - * vdev.c (broadcast_pack): Change its function prototype. Broadcast to - all other interface. - (deliver_pack): Don't set the message header. - (broadcast_msg): Save the original message header and restore it. - (deliver_msg): Deallocate the port if mach_msg fails. - - * vdev.h (broadcast_pack): Change its function prototype. - -2008-8-29 Zheng Da - - * ethernet.c (ethernet_open): Use error instead of assert_perror. - - * multiplexer.c (ds_device_set_filter): Return the error. - -2008-8-28 Zheng Da - - * ethernet.c (NET_FLAGS): New macro. - -2008-8-22 Zheng Da - - * README: Update. - - * Makefile: Remove list.h. - - * multiplexer.c (do_mach_notify_no_senders): Get vether_device object - with ports_lookup_port(). - (ds_xxx_device_set_status): Likewise. - (ds_xxx_device_get_status): Likewise. - (ds_xxx_device_set_filter): Likewise. - (ds_device_write): Likewise. - (ds_device_write_inband): Likewise. - (ds_device_read): Likewise. - (ds_device_read_inband): Likewise. - (ds_device_map): Likewise. - (ds_device_set_status): Likewise. - (ds_device_get_status): Likewise. - (ds_device_set_filter): Likewise. - (do_mach_notify_dead_name): Deallocate the port. - (ds_device_open): Get the name directly from the vether_device object. - (ds_device_close): Return 0 immediately. - - * vdev.c (dev_head): Point to the head of the device list. - (print_eth_addr): Removed. - (lookup_dev_by_devport): Likewise. - (lookup_dev_by_name): Use the for loop to replace list_for_each_entry. - (remove_dead_port_from_dev): Likewise. - (all_dev_close): Likewise. - (broadcast_pack): Likewise. - (broadcast_msg): Likewise. - (add_vdev): Create the vether_device object with ports_create_port. - (has_vdev): Test if the device list is empty. - - * vdev.h: Don't include list.h. - (vether_device): Include the port_info object instead of its pointer. - (next): Replace dev_list. - - * list.h: Removed. - -2008-8-20 Zheng Da - - * README: Update. - - * multiplexer.c (options): Update. - -2008-8-20 Zheng Da - - * multiplexer.c (main): Test device_file before using it. - -2008-8-20 Zheng Da - - * multiplexer.c (device_file): Rename a variable. - (main): Use device_file directly. - -2008-8-19 Zheng Da - - * multiplexer.c (main): Generate the device file name, and use it - to open the device. - -2008-8-18 Zheng Da - - * README: New file. - - * multiplexer.c (options): Change the meaning of '-v' option. - (parse_opt): Change the way of handling '-v' option. - - * vdev.c (has_vdev): New function. - - * vdev.h (has_vdev): New declaration. - -2008-8-17 Zheng Da - - * ethernet.c (ethernet_open): Use a hard coded string for the device name. - - * multiplexer.c: Remove the option '-M'. - (parse_opt): Remove the code of handling '-M' option. - (main): Get the master device port from the device file. - -2008-8-14 Zheng Da - - * ChangeLog: New file. - - * multiplexer.c (vdev_portclass, other_portclass): - New variables. - (do_mach_notify_no_senders): Mark the device unused when there are no - senders for the device. - (do_mach_notify_dead_name): Return 0. - (ds_device_open): Mark the device used. - (ds_device_close): Remove the code of decreasing the count of the device. - (trivfs_goaway): Only test if all devices aren't used, and delete the code - of closing the device. - (parse_opt): Use vdev_portclass to create the virtual device. - (main): Create vdev_portclass and other_portclass, open the ethernet - device with other_portclass and create notify_pi with other_portclass. - - * vdev.c (all_dev_close): Change the way of testing if all devices are - closed. - - * vdev.h (vether_device): Replace count field with used. - -2008-8-13 Zheng Da - - * bpf_impl.c: New file. - - * bpf_impl.h: New file. - - * dev_stat.c: New file. - - * ethernet.c: New file. - - * ethernet.h: New file. - - * list.h: New file. - - * Makefile: New file. - - * multiplexer.c: New file. - - * queue.c: New file. - - * queue.h: New file. - - * test.c: New file. - - * util.h: New file. - - * vdev.c: New file. - - * vdev.h: New file. - diff --git a/eth-multiplexer/Makefile~ b/eth-multiplexer/Makefile~ deleted file mode 100644 index 237bf3a3..00000000 --- a/eth-multiplexer/Makefile~ +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 2008 Free Software Foundation, Inc. -# This file is part of the GNU Hurd. -# -# The GNU Hurd is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# The GNU Hurd is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with the GNU Hurd; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - -dir := eth-multiplexer -makemode := server -target = eth-multiplexer - -CFLAGS += -DDEBUG -SRCS = ethernet.c vdev.c multiplexer.c bpf_impl.c queue.c dev_stat.c netfs_impl.c notify_impl.c device_impl.c demuxer.c -MIGSTUBS = ourdeviceServer.o notifyServer.o -OBJS = $(SRCS:.c=.o) $(MIGSTUBS) -LCLHDRS = bpf_impl.h ethernet.h queue.h util.h vdev.h netfs_impl.h -DIST_FILES = ourdevice.defs notify.defs -HURDLIBS=ports fshelp shouldbeinlibc netfs - -include ../Makeconf - -ourdevice.defs: device.defs - $(CPP) $(CPPFLAGS) -x c $< | sed -e '/out[ ]*device[ ]*:[ ]*device_t/s/device_t/mach_port_send_t/' > $@ - diff --git a/eth-multiplexer/device_impl.c~ b/eth-multiplexer/device_impl.c~ deleted file mode 100644 index 8deee668..00000000 --- a/eth-multiplexer/device_impl.c~ +++ /dev/null @@ -1,282 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include -#include - -#include "ethernet.h" -#include "vdev.h" -#include "ourdevice_S.h" -#include "notify_S.h" -#include "bpf_impl.h" -#include "netfs_impl.h" -#include "util.h" - -extern struct port_bucket *port_bucket; -extern struct port_class *vdev_portclass; -extern struct port_class *other_portclass; -extern struct port_info *notify_pi; - -/* Implementation of device interface */ -kern_return_t -ds_xxx_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statu_cnt) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuscnt) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_xxx_device_set_filter (device_t device, mach_port_t rec, - int pri, filter_array_t filt, size_t len) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -/* - * This function is currently running in the multithread environment, - * it should be protected by locks. - */ -kern_return_t -ds_device_open (mach_port_t master_port, mach_port_t reply_port, - mach_msg_type_name_t reply_portPoly, - dev_mode_t mode, dev_name_t name, mach_port_t *device, - mach_msg_type_name_t *devicetype) -{ - struct vether_device *dev; - int openstat; - int right_mode = 1; - struct protid *pi = ports_lookup_port (netfs_port_bucket, master_port, 0); - if (pi == NULL) - return D_NO_SUCH_DEVICE; - - /* If the virtual device hasn't been created yet, - * create it now. */ - if (pi->po->np->nn->ln == NULL) - { - extern struct port_bucket *port_bucket; - extern struct port_class *vdev_portclass; - extern struct stat underlying_node_stat; - static int ino_count = 0; - /* Create a new light node (virtual device). */ - struct lnode *ln = (struct lnode *) add_vdev (pi->po->np->nn->name, - sizeof (*ln), - vdev_portclass, - port_bucket); - if (ln == NULL) - { - ports_port_deref (pi); - return D_NO_MEMORY; - } - memset (&ln->st, 0, sizeof (ln->st)); - ln->st.st_ino = ++ino_count; - ln->st.st_mode = S_IFCHR | (underlying_node_stat.st_mode & ~S_IFMT); - ln->st.st_ctime = ln->st.st_mtime = ln->st.st_atime = time (NULL); - fshelp_touch (&ln->st, TOUCH_ATIME|TOUCH_MTIME|TOUCH_CTIME, - multiplexer_maptime); - } - - dev = (struct vether_device *) pi->po->np->nn->ln; - /* check the mode */ - openstat = pi->po->openstat; - if (mode & D_READ && !(openstat & O_READ)) - right_mode = 0; - if (mode & D_WRITE && !(openstat & O_WRITE)) - right_mode = 0; - ports_port_deref (pi); - - if (dev) - { - if (!right_mode) - return EBADF; - *device = dev->dev_port; - *devicetype = MACH_MSG_TYPE_MAKE_SEND; - return 0; - } - return D_NO_SUCH_DEVICE; -} - -kern_return_t -ds_device_close (device_t device) -{ - return 0; -} - -kern_return_t -ds_device_write (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_t data, size_t datalen, - int *bytes_written) -{ - kern_return_t ret = 0; - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - { - vm_deallocate (mach_task_self (), data, datalen); - return D_NO_SUCH_DEVICE; - } - /* The packet is forwarded to all virtual interfaces and - * the interface which the multiplexer connects to. */ - broadcast_pack (data, datalen, vdev); - *bytes_written = datalen; - if(ether_port != MACH_PORT_NULL) - ret = device_write (ether_port, mode , recnum , - data, datalen, bytes_written); - /* The data in device_write() is transmifered out of line, - * so the server-side function has to deallocate it. */ - vm_deallocate (mach_task_self (), data, datalen); - ports_port_deref (vdev); - return ret; -} - -kern_return_t -ds_device_write_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, io_buf_ptr_inband_t data, - size_t datalen, int *bytes_written) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_read (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_t *data, size_t *datalen) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_read_inband (device_t device, mach_port_t reply_port, - mach_msg_type_name_t reply_type, dev_mode_t mode, - recnum_t recnum, int bytes_wanted, - io_buf_ptr_inband_t data, size_t *datalen) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_map (device_t device, vm_prot_t prot, vm_offset_t offset, - vm_size_t size, memory_object_t *pager, int unmap) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_set_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t statuslen) -{ - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - ports_port_deref (vdev); - return D_INVALID_OPERATION; -} - -kern_return_t -ds_device_get_status (device_t device, dev_flavor_t flavor, - dev_status_t status, size_t *statuslen) -{ - extern io_return_t dev_getstat (struct vether_device *, dev_flavor_t, - dev_status_t, natural_t *); - kern_return_t ret = 0; - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - if(ether_port != MACH_PORT_NULL) - ret = device_get_status (ether_port, flavor, status, statuslen); - else - ret = dev_getstat (vdev, flavor, status, statuslen); - ports_port_deref (vdev); - return ret; -} - -kern_return_t -ds_device_set_filter (device_t device, mach_port_t receive_port, - int priority, filter_array_t filter, size_t filterlen) -{ - mach_port_t tmp; - kern_return_t err; - struct vether_device *vdev = ports_lookup_port (port_bucket, device, - vdev_portclass); - if (vdev == NULL) - return D_NO_SUCH_DEVICE; - err = mach_port_request_notification (mach_task_self (), receive_port, - MACH_NOTIFY_DEAD_NAME, 0, - ports_get_right (notify_pi), - MACH_MSG_TYPE_MAKE_SEND_ONCE, &tmp); - if (err != KERN_SUCCESS) - goto out; - if (tmp != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), tmp); - err = net_set_filter (vdev, receive_port, priority, filter, filterlen); -out: - ports_port_deref (vdev); - return err; -} diff --git a/eth-multiplexer/ethernet.c~ b/eth-multiplexer/ethernet.c~ deleted file mode 100644 index ea774a19..00000000 --- a/eth-multiplexer/ethernet.c~ +++ /dev/null @@ -1,143 +0,0 @@ -/* - Copyright (C) 1995, 1996, 1998, 1999, 2000, 2002, 2007, 2008 - Free Software Foundation, Inc. - - Written by Zheng Da - - Based on pfinet/ethernet.c, written by Michael I. Bushnell, p/BSG. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "ethernet.h" -#include "vdev.h" -#include "util.h" - -#define ETH_HLEN 14 - -static struct port_info *readpt; - -/* Port for writing message to the real network interface. */ -mach_port_t ether_port; -/* Port for receiving messages from the interface. */ -static mach_port_t readptname; - -/* Accept ARP and IP packets. */ -static short ether_filter[] = -{ -#ifdef NETF_IN - /* We have to tell the packet filtering code that we're interested in - incoming packets. */ - NETF_IN, /* Header. */ -#endif - NETF_PUSHLIT | NETF_NOP, - 1 -}; -static int ether_filter_len = sizeof (ether_filter) / sizeof (short); - -int ethernet_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - struct net_rcv_msg *msg = (struct net_rcv_msg *) inp; - - if (inp->msgh_id != NET_RCV_MSG_ID) - return 0; - - broadcast_msg (msg); - return 1; -} - -int set_promisc (char *dev_name, mach_port_t ether_port, int is_promisc) -{ -#ifndef NET_FLAGS -#define NET_FLAGS (('n'<<16) + 4) -#endif - short flags; - int ret; - size_t count; - - debug ("set_promisc is called, is_promisc: %d\n", is_promisc); - count = sizeof (flags); - ret = device_get_status (ether_port, NET_FLAGS, (dev_status_t) &flags, - &count); - if (ret) - { - error (0, ret, "device_get_status"); - return -1; - } - if (is_promisc) - flags |= IFF_PROMISC; - else - flags &= ~IFF_PROMISC; - ret = device_set_status(ether_port, NET_FLAGS, (dev_status_t) &flags, - sizeof (flags)); - if (ret) - { - error (0, ret, "device_set_status"); - return -1; - } - return 0; -} - -int ethernet_open (char *dev_name, device_t master_device, - struct port_bucket *etherport_bucket, - struct port_class *etherreadclass) -{ - error_t err; - - assert (ether_port == MACH_PORT_NULL); - - err = ports_create_port (etherreadclass, etherport_bucket, - sizeof (struct port_info), &readpt); - if (err) - error (2, err, "ports_create_port"); - readptname = ports_get_right (readpt); - mach_port_insert_right (mach_task_self (), readptname, readptname, - MACH_MSG_TYPE_MAKE_SEND); - - mach_port_set_qlimit (mach_task_self (), readptname, MACH_PORT_QLIMIT_MAX); - - err = device_open (master_device, D_WRITE | D_READ, "eth", ðer_port); - mach_port_deallocate (mach_task_self (), master_device); - if (err) - error (2, err, "device_open: %s", dev_name); - - err = device_set_filter (ether_port, ports_get_right (readpt), - MACH_MSG_TYPE_MAKE_SEND, 0, - (unsigned short *)ether_filter, ether_filter_len); - if (err) - error (2, err, "device_set_filter: %s", dev_name); - - set_promisc (dev_name, ether_port, 1); - return 0; -} - -int ethernet_close (char *dev_name) -{ - set_promisc (dev_name, ether_port, 0); - return 0; -} - diff --git a/eth-multiplexer/multiplexer.c~ b/eth-multiplexer/multiplexer.c~ deleted file mode 100644 index d3724602..00000000 --- a/eth-multiplexer/multiplexer.c~ +++ /dev/null @@ -1,190 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* - * The multiplexer server provides the virtual network interface. - * When it gets a packet, it forwards it to every other network interface, - * the ones that are created by itself or that it connects to. - * BPF is ported to the multiplexer to help deliver packets - * to the right pfinet. - */ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "ethernet.h" -#include "vdev.h" -#include "ourdevice_S.h" -#include "notify_S.h" -#include "bpf_impl.h" -#include "netfs_impl.h" -#include "util.h" - -/* The device which the multiplexer connects to */ -static char *device_file; - -const char *argp_program_version = "eth-multiplexer 0.1"; -const char *argp_program_bug_address = ""; -static const char doc[] = "Hurd multiplexer server."; -static const struct argp_option options[] = -{ - {"interface", 'i', "DEVICE", 0, - "Network interface to use", 2}, - {0} -}; - -/* Port bucket we service requests on. */ -struct port_bucket *port_bucket; -struct port_class *other_portclass; -struct port_class *vdev_portclass; -struct port_info *notify_pi; - -int netfs_maxsymlinks = 12; -char *netfs_server_name = "multiplexer"; -char *netfs_server_version = HURD_VERSION; -file_t root_file; -struct lnode root; -struct stat underlying_node_stat; - -static int -multiplexer_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - int device_server (mach_msg_header_t *, mach_msg_header_t *); - int notify_server (mach_msg_header_t *, mach_msg_header_t *); - - return (device_server (inp, outp) - || notify_server (inp, outp) - || ethernet_demuxer (inp, outp)); -} - -static any_t -multiplexer_thread (any_t arg) -{ - ports_manage_port_operations_one_thread (port_bucket, - multiplexer_demuxer, - 0); - return 0; -} - -static error_t -parse_opt (int opt, char *arg, struct argp_state *state) -{ - switch (opt) - { - case 'i': - device_file = arg; - break; - case ARGP_KEY_ERROR: - case ARGP_KEY_SUCCESS: - case ARGP_KEY_INIT: - break; - default: - return ARGP_ERR_UNKNOWN; - } - return 0; -} - -int -main (int argc, char *argv[]) -{ - error_t err; - mach_port_t bootstrap; - mach_port_t master_device; - const struct argp argp = { options, parse_opt, 0, doc }; - - port_bucket = ports_create_bucket (); - other_portclass = ports_create_class (0, 0); - vdev_portclass = ports_create_class (destroy_vdev, 0); - - argp_parse (&argp, argc, argv, 0, 0, 0); - - /* Open the network interface. */ - if (device_file) - { - master_device = file_name_lookup (device_file, 0, 0); - if (master_device == MACH_PORT_NULL) - error (1, errno, "file_name_lookup"); - - ethernet_open (device_file, master_device, port_bucket, - other_portclass); - } - - /* Prepare for the notification. */ - err = ports_create_port (other_portclass, port_bucket, - sizeof (struct port_info), ¬ify_pi); - if (err) - error (1, err, "ports_create_port for notification"); - - task_get_bootstrap_port (mach_task_self (), &bootstrap); - if (bootstrap == MACH_PORT_NULL) - error (1, 0, "must be started as a translator"); - - /* Run the multiplexer server in another thread. */ - cthread_detach (cthread_fork (multiplexer_thread, 0)); - - err = maptime_map (0, 0, &multiplexer_maptime); - if (err) - error (4, err, "Cannot map time"); - - /* Initialize netfs and start the translator. */ - netfs_init (); - - root_file = netfs_startup (bootstrap, O_READ); - err = new_node (&root, &netfs_root_node); - if (err) - error (5, err, "Cannot create root node"); - - err = io_stat (root_file, &underlying_node_stat); - if (err) - error (6, err, "Cannot stat underlying node"); - - struct stat stat = underlying_node_stat; - /* If the underlying node is not a directory, increase its permissions */ - if(!S_ISDIR(stat.st_mode)) - { - if(stat.st_mode & S_IRUSR) - stat.st_mode |= S_IXUSR; - if(stat.st_mode & S_IRGRP) - stat.st_mode |= S_IXGRP; - if(stat.st_mode & S_IROTH) - stat.st_mode |= S_IXOTH; - } - - stat.st_mode &= ~(S_ITRANS | S_IFMT); - stat.st_mode |= S_IFDIR; - fprintf (stderr, "set it as a dir\n"); - netfs_root_node->nn->ln->st = stat; - fshelp_touch (&netfs_root_node->nn_stat, TOUCH_ATIME|TOUCH_MTIME|TOUCH_CTIME, - multiplexer_maptime); - - netfs_server_loop (); /* Never returns. */ - return 0; -} diff --git a/eth-multiplexer/netfs_impl.c~ b/eth-multiplexer/netfs_impl.c~ deleted file mode 100644 index 40faf7a0..00000000 --- a/eth-multiplexer/netfs_impl.c~ +++ /dev/null @@ -1,510 +0,0 @@ -/* - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include -#include -#include -#include -#include -#include - -#include - -#include "netfs_impl.h" -#include "vdev.h" -#include "util.h" - -#define DIRENTS_CHUNK_SIZE (8*1024) -/* Returned directory entries are aligned to blocks this many bytes long. - * Must be a power of two. */ -#define DIRENT_ALIGN 4 -#define DIRENT_NAME_OFFS offsetof (struct dirent, d_name) - -/* Length is structure before the name + the name + '\0', all - * padded to a four-byte alignment. */ -#define DIRENT_LEN(name_len) \ - ((DIRENT_NAME_OFFS + (name_len) + 1 + (DIRENT_ALIGN - 1)) \ - & ~(DIRENT_ALIGN - 1)) - -extern struct stat underlying_node_stat; - -int -is_num (char *str) -{ - for (; *str; str++) - { - if (!isdigit (*str)) - return 0; - } - return 1; -} - -/* Make a new virtual node. Always consumes the ports. */ -error_t -new_node (struct lnode *ln, struct node **np) -{ - error_t err = 0; - struct netnode *nn = calloc (1, sizeof *nn); - struct node *node; - - if (nn == 0) - return ENOMEM; - node = netfs_make_node (nn); - if (node == 0) - { - free (nn); - *np = NULL; - return ENOMEM; - } - if (ln) - ln->n = node; - nn->ln = ln; - *np = node; - return err; -} - -struct node * -lookup (char *name) -{ - struct lnode *ln = (struct lnode *) lookup_dev_by_name (name); - - char *copied_name = malloc (strlen (name) + 1); - strcpy (copied_name, name); - if (ln) - { - new_node (ln, &ln->n); - ln->n->nn->name = copied_name; - return ln->n; - } - else - { - struct node *n; - new_node (ln, &n); - n->nn->name = copied_name; - return n; - } -} - -/* Attempt to create a file named NAME in DIR for USER with MODE. Set *NODE - to the new node upon return. On any error, clear *NODE. *NODE should be - locked on success; no matter what, unlock DIR before returning. */ -error_t -netfs_attempt_create_file (struct iouser *user, struct node *dir, - char *name, mode_t mode, struct node **node) -{ - debug(""); - *node = 0; - mutex_unlock (&dir->lock); - return EOPNOTSUPP; -} - -/* Node NODE is being opened by USER, with FLAGS. NEWNODE is nonzero if we - just created this node. Return an error if we should not permit the open - to complete because of a permission restriction. */ -error_t -netfs_check_open_permissions (struct iouser *user, struct node *node, - int flags, int newnode) -{ - error_t err = 0; - - /*Cheks user's permissions*/ - if(flags & O_READ) - err = fshelp_access(&node->nn_stat, S_IREAD, user); - if(!err && (flags & O_WRITE)) - err = fshelp_access(&node->nn_stat, S_IWRITE, user); - if(!err && (flags & O_EXEC)) - err = fshelp_access(&node->nn_stat, S_IEXEC, user); - - debug("the mode of node: %o, return result: %d", - (node->nn_stat.st_mode & ~S_IFMT), err); - /*Return the result of the check*/ - return err; -} - -/* This should attempt a utimes call for the user specified by CRED on node - NODE, to change the atime to ATIME and the mtime to MTIME. */ -error_t -netfs_attempt_utimes (struct iouser *cred, struct node *node, - struct timespec *atime, struct timespec *mtime) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Return the valid access types (bitwise OR of O_READ, O_WRITE, and O_EXEC) - in *TYPES for file NODE and user CRED. */ -error_t -netfs_report_access (struct iouser *cred, struct node *node, int *types) -{ - debug(""); - *types = 0; - return 0; -} - -/* Make sure that NP->nn_stat is filled with current information. CRED - identifies the user responsible for the operation. */ -error_t -netfs_validate_stat (struct node *node, struct iouser *cred) -{ - struct stat st; - - if (node->nn->ln) - st = node->nn->ln->st; - else - { - st = underlying_node_stat; - } - - debug("node: %p", node); - node->nn_translated = S_ISLNK (st.st_mode) ? S_IFLNK : 0; - node->nn_stat = st; - return 0; -} - -/* This should sync the file NODE completely to disk, for the user CRED. If - WAIT is set, return only after sync is completely finished. */ -error_t -netfs_attempt_sync (struct iouser *cred, struct node *node, int wait) -{ - debug(""); - return 0; -} - -error_t -netfs_get_dirents (struct iouser *cred, struct node *dir, - int first_entry, int max_entries, char **data, - mach_msg_type_number_t *data_len, - vm_size_t max_data_len, int *data_entries) -{ - error_t err; - int count = 0; - char *data_p; - size_t size = (max_data_len == 0 || max_data_len > DIRENTS_CHUNK_SIZE - ? DIRENTS_CHUNK_SIZE : max_data_len); - debug (""); - int - add_dirent (const char * name, ino_t ino, int type) - { - /*If the required number of dirents has not been listed yet*/ - if((max_entries == -1) || (count < max_entries)) - { - struct dirent hdr; - size_t name_len = strlen(name); - size_t sz = DIRENT_LEN(name_len); - - /*If there is no room for this dirent*/ - if ((data_p - *data) + sz > size) - { - if (max_data_len > 0) - return 1; - else - /* Try to grow our return buffer. */ - { - error_t err; - vm_address_t extension = (vm_address_t)(*data + size); - err = vm_allocate (mach_task_self (), &extension, - DIRENTS_CHUNK_SIZE, 0); - if (err) - { - munmap (*data, size); - return 1; - } - size += DIRENTS_CHUNK_SIZE; - } - } - - /*setup the dirent*/ - hdr.d_ino = ino; - hdr.d_reclen = sz; - hdr.d_type = type; - hdr.d_namlen = name_len; - memcpy(data_p, &hdr, DIRENT_NAME_OFFS); - strcpy(data_p + DIRENT_NAME_OFFS, name); - data_p += sz; - - /*count the new dirent*/ - ++count; - } - return 0; - } - int add_each_dev (struct vether_device *dev) - { - struct lnode *ln = (struct lnode *) dev; - add_dirent (ln->vdev.name, ln->st.st_ino, DT_CHR); - return 0; - } - if (dir != netfs_root_node) - return ENOTDIR; - - *data = mmap (0, size, PROT_READ | PROT_WRITE, MAP_ANON, 0, 0); - err = ((void *) *data == (void *) -1) ? errno : 0; - if (!err) - { - data_p = *data; - if (first_entry < 2 + get_dev_num ()) - { - add_dirent (".", 2, DT_DIR); - add_dirent ("..", 2, DT_DIR); - foreach_dev_do (add_each_dev); - } - - vm_address_t alloc_end = (vm_address_t)(*data + size); - vm_address_t real_end = round_page (data_p); - if (alloc_end > real_end) - munmap ((caddr_t) real_end, alloc_end - real_end); - *data_entries = count; - debug ("first_entry is %d, count is %d", first_entry, count); - *data_len = data_p - *data; - } - return err; -} - -/* Lookup NAME in DIR for USER; set *NODE to the found name upon return. If - the name was not found, then return ENOENT. On any error, clear *NODE. - (*NODE, if found, should be locked, this call should unlock DIR no matter - what.) */ -error_t netfs_attempt_lookup (struct iouser *user, struct node *dir, - char *name, struct node **node) -{ - error_t err = 0; - - debug ("dir: %p, file name: %s", dir, name); - - if (strcmp(name, ".") == 0) - { - netfs_nref(dir); - *node = dir; - return 0; - } - else if (strcmp(name, "..") == 0) - { - /*The supplied node is always root*/ - err = ENOENT; - *node = NULL; - - /*unlock the directory*/ - mutex_unlock (&dir->lock); - - /*stop here*/ - return err; - } - - *node = lookup (name); - mutex_lock (&(*node)->lock); - mutex_unlock (&dir->lock); - return 0; -} - -/* Delete NAME in DIR for USER. */ -error_t netfs_attempt_unlink (struct iouser *user, struct node *dir, - char *name) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Note that in this one call, neither of the specific nodes are locked. */ -error_t netfs_attempt_rename (struct iouser *user, struct node *fromdir, - char *fromname, struct node *todir, - char *toname, int excl) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Attempt to create a new directory named NAME in DIR for USER with mode - MODE. */ -error_t netfs_attempt_mkdir (struct iouser *user, struct node *dir, - char *name, mode_t mode) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Attempt to remove directory named NAME in DIR for USER. */ -error_t netfs_attempt_rmdir (struct iouser *user, - struct node *dir, char *name) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should attempt a chmod call for the user specified by CRED on node - NODE, to change the owner to UID and the group to GID. */ -error_t netfs_attempt_chown (struct iouser *cred, struct node *node, - uid_t uid, uid_t gid) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should attempt a chauthor call for the user specified by CRED on node - NODE, to change the author to AUTHOR. */ -error_t netfs_attempt_chauthor (struct iouser *cred, struct node *node, - uid_t author) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should attempt a chmod call for the user specified by CRED on node - NODE, to change the mode to MODE. Unlike the normal Unix and Hurd meaning - of chmod, this function is also used to attempt to change files into other - types. If such a transition is attempted which is impossible, then return - EOPNOTSUPP. */ -error_t netfs_attempt_chmod (struct iouser *cred, struct node *node, - mode_t mode) -{ - error_t err = 0; - debug(""); - if (node->nn->ln == NULL) - return EOPNOTSUPP; - - mode &= ~S_ITRANS; - err = fshelp_isowner (&node->nn->ln->st, cred); - if (err) - return err; - mode |= node->nn->ln->st.st_mode & S_IFMT; - node->nn->ln->st.st_mode = mode; - fshelp_touch (&node->nn_stat, TOUCH_CTIME, multiplexer_maptime); - return err; -} - -/* Attempt to turn NODE (user CRED) into a symlink with target NAME. */ -error_t netfs_attempt_mksymlink (struct iouser *cred, struct node *node, - char *name) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Attempt to turn NODE (user CRED) into a device. TYPE is either S_IFBLK or - S_IFCHR. */ -error_t netfs_attempt_mkdev (struct iouser *cred, struct node *node, - mode_t type, dev_t indexes) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Attempt to set the passive translator record for FILE to ARGZ (of length - ARGZLEN) for user CRED. */ -error_t netfs_set_translator (struct iouser *cred, struct node *node, - char *argz, size_t argzlen) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should attempt a chflags call for the user specified by CRED on node - NODE, to change the flags to FLAGS. */ -error_t netfs_attempt_chflags (struct iouser *cred, struct node *node, - int flags) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should attempt to set the size of the file NODE (for user CRED) to - SIZE bytes long. */ -error_t netfs_attempt_set_size (struct iouser *cred, struct node *node, - off_t size) -{ - debug(""); - return EOPNOTSUPP; -} - -/*Fetches the filesystem status information*/ -error_t -netfs_attempt_statfs (struct iouser *cred, struct node *node, - struct statfs *st) -{ - debug(""); - return EOPNOTSUPP; -} - -/* This should sync the entire remote filesystem. If WAIT is set, return - only after sync is completely finished. */ -error_t netfs_attempt_syncfs (struct iouser *cred, int wait) -{ - debug(""); - return 0; -} - -/* Create a link in DIR with name NAME to FILE for USER. Note that neither - DIR nor FILE are locked. If EXCL is set, do not delete the target, but - return EEXIST if NAME is already found in DIR. */ -error_t netfs_attempt_link (struct iouser *user, struct node *dir, - struct node *file, char *name, int excl) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Attempt to create an anonymous file related to DIR for USER with MODE. - Set *NODE to the returned file upon success. No matter what, unlock DIR. */ -error_t netfs_attempt_mkfile (struct iouser *user, struct node *dir, - mode_t mode, struct node **node) -{ - debug(""); - *node = 0; - mutex_unlock (&dir->lock); - return EOPNOTSUPP; -} - -/* Read the contents of NODE (a symlink), for USER, into BUF. */ -error_t netfs_attempt_readlink (struct iouser *user, struct node *node, char *buf) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Read from the file NODE for user CRED starting at OFFSET and continuing for - up to *LEN bytes. Put the data at DATA. Set *LEN to the amount - successfully read upon return. */ -error_t netfs_attempt_read (struct iouser *cred, struct node *node, - off_t offset, size_t *len, void *data) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Write to the file NODE for user CRED starting at OFSET and continuing for up - to *LEN bytes from DATA. Set *LEN to the amount seccessfully written upon - return. */ -error_t netfs_attempt_write (struct iouser *cred, struct node *node, - off_t offset, size_t *len, void *data) -{ - debug(""); - return EOPNOTSUPP; -} - -/* Node NP is all done; free all its associated storage. */ -void -netfs_node_norefs (struct node *node) -{ - debug("node: %p", node); - if (node->nn->ln) - node->nn->ln->n = NULL; - free (node->nn->name); - free (node->nn); - free (node); -} - diff --git a/eth-multiplexer/netfs_impl.h~ b/eth-multiplexer/netfs_impl.h~ deleted file mode 100644 index c2651eb6..00000000 --- a/eth-multiplexer/netfs_impl.h~ +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (C) 2008, 2009 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#ifndef NETFS_IMPL -#define NETFS_IMPL - -#include -#include - -#include "vdev.h" - -struct netnode -{ - struct lnode *ln; -}; - -struct lnode -{ - struct vether_device vdev; - struct stat st; - struct node *n; -}; - -extern file_t root_file; -volatile struct mapped_time_value *multiplexer_maptime; - -error_t new_node (struct lnode *ln, struct node **np); - -#endif diff --git a/eth-multiplexer/notify_impl.c~ b/eth-multiplexer/notify_impl.c~ deleted file mode 100644 index 4d31c061..00000000 --- a/eth-multiplexer/notify_impl.c~ +++ /dev/null @@ -1,70 +0,0 @@ -/* - Copyright (C) 2008 Free Software Foundation, Inc. - Written by Zheng Da. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - The GNU Hurd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with the GNU Hurd; see the file COPYING. If not, write to - the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - -#include -#include - -#include "vdev.h" - -/* Implementation of notify interface */ -kern_return_t -do_mach_notify_port_deleted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_msg_accepted (mach_port_t notify, - mach_port_t name) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_port_destroyed (mach_port_t notify, - mach_port_t port) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_no_senders (mach_port_t notify, - mach_port_mscount_t mscount) -{ - debug ("no senders notification"); - return ports_do_mach_notify_no_senders (notify, mscount); -} - -kern_return_t -do_mach_notify_send_once (mach_port_t notify) -{ - return EOPNOTSUPP; -} - -kern_return_t -do_mach_notify_dead_name (mach_port_t notify, - mach_port_t name) -{ - debug ("do_mach_notify_dead_name is called\n"); - mach_port_deallocate (mach_task_self (), name); - remove_dead_port_from_dev (name); - return 0; -} diff --git a/netfs-sample/._node.c~ b/netfs-sample/._node.c~ deleted file mode 100644 index f63df45b..00000000 Binary files a/netfs-sample/._node.c~ and /dev/null differ diff --git a/netfs-sample/filterfs.c~ b/netfs-sample/filterfs.c~ deleted file mode 100644 index 5aaacf75..00000000 --- a/netfs-sample/filterfs.c~ +++ /dev/null @@ -1,1236 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/*filter.c*/ -/*----------------------------------------------------------------------------*/ -/*The filtering translator*/ -/*----------------------------------------------------------------------------*/ -/*Based on the code of unionfs translator.*/ -/*----------------------------------------------------------------------------*/ -/*Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. - Written by Sergiu Ivanov . - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or * (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA.*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -#define _GNU_SOURCE 1 -/*----------------------------------------------------------------------------*/ -#include "filterfs.h" -/*----------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -/*----------------------------------------------------------------------------*/ -#include "debug.h" -#include "options.h" -#include "ncache.h" -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*--------Macros--------------------------------------------------------------*/ -/*The state modes use in open*/ -#define OPENONLY_STATE_MODES (O_CREAT | O_EXCL | O_NOLINK | O_NOTRANS \ - | O_NONBLOCK) -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*--------Global Variables----------------------------------------------------*/ -/*The name of the server*/ -char * netfs_server_name = "filterfs"; -/*----------------------------------------------------------------------------*/ -/*The version of the server*/ -char * netfs_server_version = "0.0"; -/*----------------------------------------------------------------------------*/ -/*The maximal length of a chain of symbolic links*/ -int netfs_maxsymlinks = 12; -/*----------------------------------------------------------------------------*/ -/*A port to the underlying node*/ -mach_port_t underlying_node; -/*----------------------------------------------------------------------------*/ -/*Status information for the underlying node*/ -io_statbuf_t underlying_node_stat; -/*----------------------------------------------------------------------------*/ -/*Mapped time used for updating node information*/ -volatile struct mapped_time_value * maptime; -/*----------------------------------------------------------------------------*/ -/*The filesystem ID*/ -pid_t fsid; -/*----------------------------------------------------------------------------*/ -/*The file to print debug messages to*/ -FILE * filterfs_dbg; -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*--------Functions-----------------------------------------------------------*/ -/*Attempts to create a file named `name` in `dir` for `user` with mode `mode`*/ -error_t -netfs_attempt_create_file - ( - struct iouser * user, - struct node * dir, - char * name, - mode_t mode, - struct node ** node - ) - { - LOG_MSG("netfs_attempt_create_file"); - - /*Unlock `dir` and say that we can do nothing else here*/ - mutex_unlock(&dir->lock); - return EOPNOTSUPP; - }/*netfs_attempt_create_file*/ -/*----------------------------------------------------------------------------*/ -/*Return an error if the process of opening a file should not be allowed - to complete because of insufficient permissions*/ -error_t -netfs_check_open_permissions - ( - struct iouser * user, - struct node * np, - int flags, - int newnode - ) - { - LOG_MSG("netfs_check_open_permissions: '%s'", np->nn->lnode->name); - - error_t err = 0; - - /*Cheks user's permissions*/ - if(flags & O_READ) - err = fshelp_access(&np->nn_stat, S_IREAD, user); - if(!err && (flags & O_WRITE)) - err = fshelp_access(&np->nn_stat, S_IWRITE, user); - if(!err && (flags & O_EXEC)) - err = fshelp_access(&np->nn_stat, S_IEXEC, user); - - /*Return the result of the check*/ - return err; - }/*netfs_check_open_permissions*/ -/*----------------------------------------------------------------------------*/ -/*Attempts an utimes call for the user `cred` on node `node`*/ -error_t -netfs_attempt_utimes - ( - struct iouser * cred, - struct node * node, - struct timespec * atime, - struct timespec * mtime - ) - { - LOG_MSG("netfs_attempt_utimes"); - - error_t err = 0; - - /*See what information is to be updated*/ - int flags = TOUCH_CTIME; - - /*Check if the user is indeed the owner of the node*/ - err = fshelp_isowner(&node->nn_stat, cred); - - /*If the user is allowed to do utimes*/ - if(!err) - { - /*If atime is to be updated*/ - if(atime) - /*update the atime*/ - node->nn_stat.st_atim = *atime; - else - /*the current time will be set as the atime*/ - flags |= TOUCH_ATIME; - - /*If mtime is to be updated*/ - if(mtime) - /*update the mtime*/ - node->nn_stat.st_mtim = *mtime; - else - /*the current time will be set as mtime*/ - flags |= TOUCH_MTIME; - - /*touch the file*/ - fshelp_touch(&node->nn_stat, flags, maptime); - } - - /*Return the result of operations*/ - return err; - }/*netfs_attempt_utimes*/ -/*----------------------------------------------------------------------------*/ -/*Returns the valid access types for file `node` and user `cred`*/ -error_t -netfs_report_access - ( - struct iouser * cred, - struct node * np, - int * types - ) - { - LOG_MSG("netfs_report_access"); - - /*No access at first*/ - *types = 0; - - /*Check the access and set the required bits*/ - if(fshelp_access(&np->nn_stat, S_IREAD, cred) == 0) - *types |= O_READ; - if(fshelp_access(&np->nn_stat, S_IWRITE, cred) == 0) - *types |= O_WRITE; - if(fshelp_access(&np->nn_stat, S_IEXEC, cred) == 0) - *types |= O_EXEC; - - /*Everything OK*/ - return 0; - }/*netfs_report_access*/ -/*----------------------------------------------------------------------------*/ -/*Validates the stat data for the node*/ -error_t -netfs_validate_stat - ( - struct node * np, - struct iouser * cred - ) - { - LOG_MSG("netfs_validate_stat: '%s'", np->nn->lnode->name); - - error_t err = 0; - - /*If we are not at the root*/ - if(np != netfs_root_node) - { - /*If the node is not surely up-to-date*/ - if(!(np->nn->flags & FLAG_NODE_ULFS_UPTODATE)) - { - /*update it*/ - err = node_update(np); - } - - /*If no errors have yet occurred*/ - if(!err) - { - /*If the port to the file corresponding to `np` is valid*/ - if(np->nn->port != MACH_PORT_NULL) - { - /*We have a directory here (normally, only they maintain an open port). - Generally, our only concern is to maintain an open port in this case*/ - - /*attempt to stat this file*/ - err = io_stat(np->nn->port, &np->nn_stat); - - /*If stat information has been successfully obtained for the file*/ - if(!err) - /*duplicate the st_mode field of stat structure*/ - np->nn_translated = np->nn_stat.st_mode; - } - else - { - /*We, most probably, have something which is not a directory. Therefore - we will open the port and close it after the stat, so that additional - resources are not consumed.*/ - - /*the parent node of the current node*/ - node_t * dnp; - - /*obtain the parent node of the the current node*/ - err = ncache_node_lookup(np->nn->lnode->dir, &dnp); - - /*the lookup should never fail here*/ - assert(!err); - - /*open a port to the file we are interested in*/ - mach_port_t p = file_name_lookup_under - (dnp->nn->port, np->nn->lnode->name, 0, 0); - - /*put `dnp` back, since we don't need it any more*/ - netfs_nput(dnp); - - if(!p) - return EBADF; - - /*try to stat the node*/ - err = io_stat(p, &np->nn_stat); - - /*deallocate the port*/ - PORT_DEALLOC(p); - } - } - } - /*If we are at the root*/ - else - /*put the size of the node into the stat structure belonging to `np`*/ - node_get_size(np, (OFFSET_T *)&np->nn_stat.st_size); - - /*Return the result of operations*/ - return err; - }/*netfs_validate_stat*/ -/*----------------------------------------------------------------------------*/ -/*Syncs `node` completely to disk*/ -error_t -netfs_attempt_sync - ( - struct iouser * cred, - struct node * node, - int wait - ) - { - LOG_MSG("netfs_attempt_sync"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_sync*/ -/*----------------------------------------------------------------------------*/ -/*Fetches a directory*/ -error_t -netfs_get_dirents - ( - struct iouser * cred, - struct node * dir, - int first_entry, - int num_entries, - char ** data, - mach_msg_type_number_t * data_len, - vm_size_t max_data_len, - int * data_entries - ) - { - LOG_MSG("netfs_get_dirents: '%s'", dir->nn->lnode->name); - - error_t err; - - /*Two pointers required for processing the list of dirents*/ - node_dirent_t * dirent_start, * dirent_current; - - /*The pointer to the beginning of the list of dirents*/ - node_dirent_t * dirent_list = NULL; - - /*The size of the current dirent*/ - size_t size = 0; - - /*The number of dirents added*/ - int count = 0; - - /*The dereferenced value of parameter `data`*/ - char * data_p; - - /*Takes into account the size of the given dirent*/ - int - bump_size - ( - const char * name - ) - { - /*If the required number of entries has not been listed yet*/ - if((num_entries == -1) || (count < num_entries)) - { - /*take the current size and take into account the length of the name*/ - size_t new_size = size + DIRENT_LEN(strlen(name)); - - /*If there is a limit for the received size and it has been exceeded*/ - if((max_data_len > 0) && (new_size > max_data_len)) - /*a new dirent cannot be added*/ - return 0; - - /*memorize the new size*/ - size = new_size; - - /*increase the number of dirents added*/ - ++count; - - /*everything is OK*/ - return 1; - } - else - { - /*dirents cannot be added*/ - return 0; - } - }/*bump_size*/ - - /*Adds a dirent to the list of dirents*/ - int - add_dirent - ( - const char * name, - ino_t ino, - int type - ) - { - /*If the required number of dirents has not been listed yet*/ - if((num_entries == -1) || (count < num_entries)) - { - /*create a new dirent*/ - struct dirent hdr; - - /*obtain the length of the name*/ - size_t name_len = strlen(name); - - /*compute the full size of the dirent*/ - size_t sz = DIRENT_LEN(name_len); - - /*If there is no room for this dirent*/ - if(sz > size) - /*stop*/ - return 0; - else - /*take into account the fact that a new dirent has just been added*/ - size -= sz; - - /*setup the dirent*/ - hdr.d_ino = ino; - hdr.d_reclen = sz; - hdr.d_type = type; - hdr.d_namlen = name_len; - - /*The following two lines of code reflect the old layout of - dirents in the memory. Now libnetfs expects the layout - identical to the layout provided by dir_readdir (see dir_entries_get)*/ - - /*copy the header of the dirent into the final block of dirents*/ - memcpy(data_p, &hdr, DIRENT_NAME_OFFS); - - /*copy the name of the dirent into the block of dirents*/ - strcpy(data_p + DIRENT_NAME_OFFS, name); - - /*This line is commented for the same reason as the two specifically - commented lines above.*/ - /*move the current pointer in the block of dirents*/ - data_p += sz; - - /*count the new dirent*/ - ++count; - - /*everything was OK, so say it*/ - return 1; - } - else - /*no [new] dirents allowed*/ - return 0; - }/*add_dirent*/ - - /*List the dirents for node `dir`*/ - err = node_entries_get(dir, &dirent_list); - - /*If listing was successful*/ - if(!err) - { - /*find the entry whose number is `first_entry`*/ - for - ( - dirent_start = dirent_list, count = 2; - dirent_start && (count < first_entry); - dirent_start = dirent_start->next, ++count - ); - - /*reset number of dirents added so far*/ - count = 0; - - /*make space for entries '.' and '..', if required*/ - if(first_entry == 0) - bump_size("."); - if(first_entry <= 1) - bump_size(".."); - - /*Go through all dirents*/ - for - ( - dirent_current = dirent_start; - dirent_current; - dirent_current = dirent_current->next - ) - /*If another dirent cannot be added succesfully*/ - if(bump_size(dirent_current->dirent->d_name) == 0) - /*stop here*/ - break; - - /*allocate the required space for dirents*/ - *data = mmap(0, size, PROT_READ | PROT_WRITE, MAP_ANON, 0, 0); - - /*check if any error occurred*/ - err = ((void *)*data == MAP_FAILED) ? (errno) : (0); - } - - /*If no errors have occurred so far*/ - if(!err) - { - /*obtain the pointer to the beginning of the block of dirents*/ - data_p = *data; - - /*fill the parameters with useful values*/ - *data_len = size; - *data_entries = count; - - /*reset the number of dirents added*/ - count = 0; - - /*add entries '.' and '..', if required*/ - if(first_entry == 0) - add_dirent(".", 2, DT_DIR); - if(first_entry <= 1) - add_dirent("..", 2, DT_DIR); - - /*Follow the list of dirents beginning with dirents_start*/ - for - ( - dirent_current = dirent_start; dirent_current; - dirent_current = dirent_current->next - ) - /*If the addition of the current dirent fails*/ - if - ( - add_dirent - (dirent_current->dirent->d_name, dirent_current->dirent->d_fileno, - dirent_current->dirent->d_type) == 0 - ) - /*stop adding dirents*/ - break; - } - - /*If the list of dirents has been allocated, free it*/ - if(dirent_list) - node_entries_free(dirent_list); - - /*The directory has been read right now, modify the access time*/ - fshelp_touch(&dir->nn_stat, TOUCH_ATIME, maptime); - - /*Return the result of listing the dirents*/ - return err; - }/*netfs_get_dirents*/ -/*----------------------------------------------------------------------------*/ -/*Looks up `name` under `dir` for `user`*/ -error_t -netfs_attempt_lookup - ( - struct iouser * user, - struct node * dir, - char * name, - struct node ** node - ) - { - LOG_MSG("netfs_attempt_lookup: '%s'", name); - - error_t err = 0; - - /*If we are asked to fetch the current directory*/ - if(strcmp(name, ".") == 0) - { - /*add a reference to `dir` and put it into `node`*/ - netfs_nref(dir); - *node = dir; - - /*everything is OK*/ - return 0; - } - /*If we are asked to fetch the parent directory*/ - else if(strcmp(name, "..") == 0) - { - /*If the supplied node is not root*/ - if(dir->nn->lnode->dir) - { - /*The node corresponding to the parent directory must exist here*/ - assert(dir->nn->lnode->dir->node); - - /*put the parent node of `dir` into the result*/ - err = ncache_node_lookup(dir->nn->lnode->dir, node); - } - /*The supplied node is root*/ - else - { - /*this node is not included into our filesystem*/ - err = ENOENT; - *node = NULL; - } - - /*unlock the directory*/ - mutex_unlock(&dir->lock); - - /*stop here*/ - return err; - } - - /*Checks whether the given name satisfied the required property*/ - int - check_property - ( - const char * name - ) - { - /*If there is no property*/ - if(!property) - /*no filtering will be applied, any name is OK*/ - return 0; - - /*The number of occurrences of PROPERTY_PARAM in the property*/ - int param_entries_count = 0; - - /*The pointer to the current occurrence of PROPERTY_PARAM*/ - char * occurrence = strstr(property, PROPERTY_PARAM); - - /*Count the number of occurrences*/ - for(; occurrence; - occurrence = strstr(occurrence + 1, PROPERTY_PARAM), - ++param_entries_count); - - /*Compute the length of the property param*/ - size_t property_param_len = strlen(PROPERTY_PARAM); - - /*The length of the property*/ - size_t property_len = (property) ? (strlen(property)) : (0); - - /*Everything OK at first*/ - err = 0; - - /*Compute the length of the full name once*/ - size_t full_name_len = strlen(dir->nn->lnode->path) + 1 + strlen(name) + 1; - - /*Try to allocate the required space*/ - char * full_name = malloc(full_name_len); - if(!full_name) - { - err = ENOMEM; - return 0; - } - - /*Initialize `full_name` as a valid string*/ - full_name[0] = 0; - - /*Construct the full name*/ - strcpy(full_name, dir->nn->lnode->path); - strcat(full_name, "/"); - strcat(full_name, name); - - LOG_MSG("netfs_attempt_lookup: Applying filter to %s...", full_name); - - /*Compute the space required for the final filtering command*/ - size_t sz = property_len + (strlen(full_name) - property_param_len) - * param_entries_count; - - /*Try to allocate the space for the command*/ - char * cmd = malloc(sz); - if(!cmd) - { - free(full_name); - err = ENOMEM; - return 0; - } - - /*Initialize `cmd` as a valid string*/ - cmd[0] = 0; - - /*The current occurence of PROPERTY_PARAM in property*/ - char * p = strstr(property, PROPERTY_PARAM); - - /*The pointer to the current position in the property*/ - char * propp = property; - - /*While the command has not been constructed*/ - for(; p; p = strstr(propp, PROPERTY_PARAM)) - { - /*add the new part of the property to the command*/ - strncat(cmd, propp, p - propp); - - /*add the filename to the command*/ - strcat(cmd, full_name); - - /*LOG_MSG("\tcmd = '%s'", cmd);*/ - - /*advance the pointer in the property*/ - propp = p + property_param_len; - - /*LOG_MSG("\tpropp points at '%s'", propp);*/ - } - - /*Copy the rest of the property to the command*/ - strcat(cmd, propp); - - /*LOG_MSG("node_entries_get: The filtering command: '%s'.", cmd);*/ - - /*Execute the command*/ - int xcode = WEXITSTATUS(system(cmd)); - - /*Return the exit code of the command*/ - return xcode; - }/*check_property*/ - - /*If the given name does not satisfy the property*/ - if(check_property(name) != 0) - { - /*unlock the directory*/ - mutex_unlock(&dir->lock); - - /*no such file in the directory*/ - return ENOENT; - } - - /*Try to lookup the given file in the underlying directory*/ - mach_port_t p = file_name_lookup_under(dir->nn->port, name, 0, 0); - - /*If the lookup failed*/ - if(p == MACH_PORT_NULL) - { - /*unlock the directory*/ - mutex_unlock(&dir->lock); - - /*no such entry*/ - return ENOENT; - } - - /*Obtain the stat information about the file*/ - io_statbuf_t stat; - err = io_stat(p, &stat); - - /*Deallocate the obtained port*/ - PORT_DEALLOC(p); - - /*If this file is not a directory*/ - if(err || !S_ISDIR(stat.st_mode)) - { - /*do not set the port*/ - p = MACH_PORT_NULL; - } - else - { - /*lookup the port with the right to read the contents of the directory*/ - p = file_name_lookup_under(dir->nn->port, name, O_READ | O_DIRECTORY, 0); - if(p == MACH_PORT_NULL) - { - return EBADF; /*not enough rights?*/ - } - } - - /*The lnode corresponding to the entry we are supposed to fetch*/ - lnode_t * lnode; - - /*Finalizes the execution of this function*/ - void - finalize(void) - { - /*If some errors have occurred*/ - if(err) - { - /*the user should receive nothing*/ - *node = NULL; - - /*If there is some port, free it*/ - if(p != MACH_PORT_NULL) - PORT_DEALLOC(p); - } - /*If there is a node to return*/ - if(*node) - { - /*unlock the node*/ - mutex_unlock(&(*node)->lock); - - /*add the node to the cache*/ - ncache_node_add(*node); - } - - /*Unlock the mutexes in `dir`*/ - mutex_unlock(&dir->nn->lnode->lock); - mutex_unlock(&dir->lock); - }/*finalize*/ - - /*Try to find an lnode called `name` under the lnode corresponding to `dir`*/ - err = lnode_get(dir->nn->lnode, name, &lnode); - - /*If such an entry does not exist*/ - if(err == ENOENT) - { - /*create a new lnode with the supplied name*/ - err = lnode_create(name, &lnode); - if(err) - { - finalize(); - return err; - } - - /*install the new lnode into the directory*/ - lnode_install(dir->nn->lnode, lnode); - } - - /*Obtain the node corresponding to this lnode*/ - err = ncache_node_lookup(lnode, node); - - /*Remove an extra reference from the lnode*/ - lnode_ref_remove(lnode); - - /*If the lookup in the cache failed*/ - if(err) - { - /*stop*/ - finalize(); - return err; - } - - /*Store the port in the node*/ - (*node)->nn->port = p; - - /*Construct the full path to the node*/ - err = lnode_path_construct(lnode, NULL); - if(err) - { - finalize(); - return err; - } - - /*Now the node is up-to-date*/ - (*node)->nn->flags = FLAG_NODE_ULFS_UPTODATE; - - /*Return the result of performing the operations*/ - finalize(); - return err; - }/*netfs_attempt_lookup*/ -/*----------------------------------------------------------------------------*/ -/*Deletes `name` in `dir` for `user`*/ -error_t -netfs_attempt_unlink - ( - struct iouser * user, - struct node * dir, - char * name - ) - { - LOG_MSG("netfs_attempt_unlink"); - - return 0; - }/*netfs_attempt_unlink*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to rename `fromdir`/`fromname` to `todir`/`toname`*/ -error_t -netfs_attempt_rename - ( - struct iouser * user, - struct node * fromdir, - char * fromname, - struct node * todir, - char * toname, - int excl - ) - { - LOG_MSG("netfs_attempt_rename"); - - /*Operation not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_rename*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to create a new directory*/ -error_t -netfs_attempt_mkdir - ( - struct iouser * user, - struct node * dir, - char * name, - mode_t mode - ) - { - LOG_MSG("netfs_attempt_mkdir"); - - return 0; - }/*netfs_attempt_mkdir*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to remove directory `name` in `dir` for `user`*/ -error_t -netfs_attempt_rmdir - ( - struct iouser * user, - struct node * dir, - char * name - ) - { - LOG_MSG("netfs_attempt_rmdir"); - - return 0; - }/*netfs_attempt_rmdir*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to change the mode of `node` for user `cred` to `uid`:`gid`*/ -error_t -netfs_attempt_chown - ( - struct iouser * cred, - struct node * node, - uid_t uid, - uid_t gid - ) - { - LOG_MSG("netfs_attempt_chown"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_chown*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to change the author of `node` to `author`*/ -error_t -netfs_attempt_chauthor - ( - struct iouser * cred, - struct node * node, - uid_t author - ) - { - LOG_MSG("netfs_attempt_chauthor"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_chauthor*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to change the mode of `node` to `mode` for `cred`*/ -error_t -netfs_attempt_chmod - ( - struct iouser * user, - struct node * node, - mode_t mode - ) - { - LOG_MSG("netfs_attempt_chmod"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_chmod*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to turn `node` into a symlink targetting `name`*/ -error_t -netfs_attempt_mksymlink - ( - struct iouser * cred, - struct node * node, - char * name - ) - { - LOG_MSG("netfs_attempt_mksymlink"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_mksymlink*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to turn `node` into a device; type can be either S_IFBLK or S_IFCHR*/ -error_t -netfs_attempt_mkdev - ( - struct iouser * cred, - struct node * node, - mode_t type, - dev_t indexes - ) - { - LOG_MSG("netfs_attempt_mkdev"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_mkdev*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to set the passive translator record for `file` passing `argz`*/ -error_t -netfs_set_translator - ( - struct iouser * cred, - struct node * node, - char * argz, - size_t arglen - ) - { - LOG_MSG("netfs_set_translator"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_set_translator */ -/*----------------------------------------------------------------------------*/ -/*Attempts to call chflags for `node`*/ -error_t -netfs_attempt_chflags - ( - struct iouser * cred, - struct node * node, - int flags - ) - { - LOG_MSG("netfs_attempt_chflags"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_chflags*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to set the size of file `node`*/ -error_t -netfs_attempt_set_size - ( - struct iouser * cred, - struct node * node, - loff_t size - ) - { - LOG_MSG("netfs_attempt_set_size"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_set_size*/ -/*----------------------------------------------------------------------------*/ -/*Fetches the filesystem status information*/ -error_t -netfs_attempt_statfs - ( - struct iouser * cred, - struct node * node, - fsys_statfsbuf_t * st - ) - { - LOG_MSG("netfs_attempt_statfs"); - - /*Operation is not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_statfs*/ -/*----------------------------------------------------------------------------*/ -/*Syncs the filesystem*/ -error_t -netfs_attempt_syncfs - ( - struct iouser * cred, - int wait - ) - { - LOG_MSG("netfs_attempt_syncfs"); - - /*Everythin OK*/ - return 0; - }/*netfs_attempt_syncfs*/ -/*----------------------------------------------------------------------------*/ -/*Creates a link in `dir` with `name` to `file`*/ -error_t -netfs_attempt_link - ( - struct iouser * user, - struct node * dir, - struct node * file, - char * name, - int excl - ) - { - LOG_MSG("netfs_attempt_link"); - - /*Operation not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_link*/ -/*----------------------------------------------------------------------------*/ -/*Attempts to create an anonymous file related to `dir` with `mode`*/ -error_t -netfs_attempt_mkfile - ( - struct iouser * user, - struct node * dir, - mode_t mode, - struct node ** node - ) - { - LOG_MSG("netfs_attempt_mkfile"); - - /*Unlock the directory*/ - mutex_unlock(&dir->lock); - - /*Operation not supported*/ - return EOPNOTSUPP; - }/*netfs_attempt_mkfile*/ -/*----------------------------------------------------------------------------*/ -/*Reads the contents of symlink `node` into `buf`*/ -error_t -netfs_attempt_readlink - ( - struct iouser * user, - struct node * node, - char * buf - ) - { - LOG_MSG("netfs_attempt_readlink"); - - /*Operation not supported (why?..)*/ - return EOPNOTSUPP; - }/*netfs_attempt_readlink*/ -/*----------------------------------------------------------------------------*/ -/*Reads from file `node` up to `len` bytes from `offset` into `data`*/ -error_t -netfs_attempt_read - ( - struct iouser * cred, - struct node * np, - loff_t offset, - size_t * len, - void * data - ) - { - LOG_MSG("netfs_attempt_read"); - - error_t err = 0; - - /*If there is no port open for the current node*/ - if(np->nn->port == MACH_PORT_NULL) - { - /*the parent node of the current node*/ - node_t * dnp; - - /*obtain the parent node of the the current node*/ - err = ncache_node_lookup(np->nn->lnode->dir, &dnp); - - /*the lookup should never fail here*/ - assert(!err); - - /*open a port to the file we are interested in*/ - mach_port_t p = file_name_lookup_under - (dnp->nn->port, np->nn->lnode->name, O_READ, 0); - - /*put `dnp` back, since we don't need it any more*/ - netfs_nput(dnp); - - if(!p) - return EBADF; - - /*store the port in the node*/ - np->nn->port = p; - } - - /*Read the required data from the file*/ - err = io_read(np->nn->port, (char **)&data, len, offset, *len); - - /*Return the result of reading*/ - return err; - }/*netfs_attempt_read*/ -/*----------------------------------------------------------------------------*/ -/*Writes to file `node` up to `len` bytes from offset from `data`*/ -error_t -netfs_attempt_write - ( - struct iouser * cred, - struct node * node, - loff_t offset, - size_t * len, - void * data - ) - { - LOG_MSG("netfs_attempt_write"); - - return 0; - }/*netfs_attempt_write*/ -/*----------------------------------------------------------------------------*/ -/*Frees all storage associated with the node*/ -void -netfs_node_norefs - ( - struct node * np - ) - { - /*Destroy the node*/ - node_destroy(np); - }/*netfs_node_norefs*/ -/*----------------------------------------------------------------------------*/ -/*Entry point*/ -int -main - ( - int argc, - char ** argv - ) - { - /*Start logging*/ - INIT_LOG(); - LOG_MSG(">> Starting initialization..."); - - /*The port on which this translator will be set upon*/ - mach_port_t bootstrap_port; - - error_t err = 0; - - /*Parse the command line arguments*/ - argp_parse(&argp_startup, argc, argv, ARGP_IN_ORDER, 0, 0); - LOG_MSG("Command line arguments parsed."); - - /*Try to create the root node*/ - err = node_create_root(&netfs_root_node); - if(err) - error(EXIT_FAILURE, err, "Failed to create the root node"); - LOG_MSG("Root node created."); - - /*Obtain the bootstrap port*/ - task_get_bootstrap_port(mach_task_self(), &bootstrap_port); - - /*Initialize the translator*/ - netfs_init(); - - /*Obtain a port to the underlying node*/ - underlying_node = netfs_startup(bootstrap_port, O_READ); - LOG_MSG("netfs initialization complete."); - - /*Initialize the root node*/ - err = node_init_root(netfs_root_node); - if(err) - error(EXIT_FAILURE, err, "Failed to initialize the root node"); - LOG_MSG("Root node initialized."); - LOG_MSG("\tRoot node address: 0x%lX", (unsigned long)netfs_root_node); - - /*Map the time for updating node information*/ - err = maptime_map(0, 0, &maptime); - if(err) - error(EXIT_FAILURE, err, "Failed to map the time"); - LOG_MSG("Time mapped."); - - /*Initialize the cache with the required number of nodes*/ - ncache_init(ncache_size); - LOG_MSG("Cache initialized."); - - /*Obtain stat information about the underlying node*/ - err = io_stat(underlying_node, &underlying_node_stat); - if(err) - error(EXIT_FAILURE, err, - "Cannot obtain stat information about the underlying node"); - LOG_MSG("Stat information for undelying node obtained."); - - /*Obtain the ID of the current process*/ - fsid = getpid(); - - /*Setup the stat information for the root node*/ - netfs_root_node->nn_stat = underlying_node_stat; - - netfs_root_node->nn_stat.st_ino = FILTERFS_ROOT_INODE; - netfs_root_node->nn_stat.st_fsid = fsid; - netfs_root_node->nn_stat.st_mode = S_IFDIR | (underlying_node_stat.st_mode - & ~S_IFMT & ~S_ITRANS); /*we are providing a translated directory*/ - - netfs_root_node->nn_translated = netfs_root_node->nn_stat.st_mode; - - /*If the underlying node is not a directory, enhance the permissions - of the root node of filterfs*/ - if(!S_ISDIR(underlying_node_stat.st_mode)) - { - /*can be read by owner*/ - if(underlying_node_stat.st_mode & S_IRUSR) - /*allow execution by the owner*/ - netfs_root_node->nn_stat.st_mode |= S_IXUSR; - /*can be read by group*/ - if(underlying_node_stat.st_mode & S_IRGRP) - /*allow execution by the group*/ - netfs_root_node->nn_stat.st_mode |= S_IXGRP; - /*can be read by others*/ - if(underlying_node_stat.st_mode & S_IROTH) - /*allow execution by the others*/ - netfs_root_node->nn_stat.st_mode |= S_IXOTH; - } - - /*Update the timestamps of the root node*/ - fshelp_touch - (&netfs_root_node->nn_stat, TOUCH_ATIME | TOUCH_MTIME | TOUCH_CTIME, - maptime); - - LOG_MSG(">> Initialization complete. Entering netfs server loop..."); - - /*Start serving clients*/ - for(;;) - netfs_server_loop(); - }/*main*/ -/*----------------------------------------------------------------------------*/ diff --git a/netfs-sample/node.c~ b/netfs-sample/node.c~ deleted file mode 100644 index ec83b41b..00000000 --- a/netfs-sample/node.c~ +++ /dev/null @@ -1,803 +0,0 @@ -/*----------------------------------------------------------------------------*/ -/*node.c*/ -/*----------------------------------------------------------------------------*/ -/*Implementation of node management strategies*/ -/*----------------------------------------------------------------------------*/ -/*Based on the code of unionfs translator.*/ -/*----------------------------------------------------------------------------*/ -/*Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. - Written by Sergiu Ivanov . - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or * (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA.*/ -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -#define _GNU_SOURCE 1 -/*----------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -/*----------------------------------------------------------------------------*/ -#include "debug.h" -#include "node.h" -#include "options.h" -#include "lib.h" -#include "filterfs.h" -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*--------Global Variables----------------------------------------------------*/ -/*The lock protecting the underlying filesystem*/ -struct mutex ulfs_lock = MUTEX_INITIALIZER; -/*----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------*/ -/*--------Functions-----------------------------------------------------------*/ -/*Derives a new node from `lnode` and adds a reference to `lnode`*/ -error_t -node_create - ( - lnode_t * lnode, - node_t ** node /*store the result here*/ - ) - { - error_t err = 0; - - /*Create a new netnode*/ - netnode_t * netnode_new = malloc(sizeof(netnode_t)); - - /*If the memory could not be allocated*/ - if(netnode_new == NULL) - err = ENOMEM; - else - { - /*create a new node from the netnode*/ - node_t * node_new = netfs_make_node(netnode_new); - - /*If the creation failed*/ - if(node_new == NULL) - { - /*set the error code*/ - err = ENOMEM; - - /*destroy the netnode created above*/ - free(netnode_new); - - /*stop*/ - return err; - } - - /*link the lnode to the new node*/ - lnode->node = node_new; - lnode_ref_add(lnode); - - /*setup the references in the newly created node*/ - node_new->nn->lnode = lnode; - node_new->nn->flags = 0; - node_new->nn->ncache_next = node_new->nn->ncache_prev = NULL; - - /*store the result of creation in the second parameter*/ - *node = node_new; - } - - /*Return the result of operations*/ - return err; - }/*node_create*/ -/*----------------------------------------------------------------------------*/ -/*Destroys the specified node and removes a light reference from the - associated light node*/ -void -node_destroy - ( - node_t * np - ) - { - /*Die if the node does not belong to node cache*/ - assert(!np->nn->ncache_next || !np->nn->ncache_prev); - - /*Destroy the port to the underlying filesystem allocated to the node*/ - PORT_DEALLOC(np->nn->port); - - /*Lock the lnode corresponding to the current node*/ - mutex_lock(&np->nn->lnode->lock); - - /*Orphan the light node*/ - np->nn->lnode->node = NULL; - - /*Remove a reference from the lnode*/ - lnode_ref_remove(np->nn->lnode); - - /*Free the netnode and the node itself*/ - free(np->nn); - free(np); - }/*node_destroy*/ -/*----------------------------------------------------------------------------*/ -/*Creates the root node and the corresponding lnode*/ -error_t -node_create_root - ( - node_t ** root_node /*store the result here*/ - ) - { - /*Try to create a new lnode*/ - lnode_t * lnode; - error_t err = lnode_create(NULL, &lnode); - - /*Stop, if the creation failed*/ - if(err) - return err; - - /*Try to derive the node corresponding to `lnode`*/ - node_t * node; - err = node_create(lnode, &node); - - /*If the operation failed*/ - if(err) - { - /*destroy the created lnode*/ - lnode_destroy(lnode); - - /*stop*/ - return err; - } - - /*Release the lock on the lnode*/ - mutex_unlock(&lnode->lock); - - /*Store the result in the parameter*/ - *root_node = node; - - /*Return the result*/ - return err; - }/*node_create_root*/ -/*----------------------------------------------------------------------------*/ -/*Initializes the port to the underlying filesystem for the root node*/ -error_t -node_init_root - ( - node_t * node /*the root node*/ - ) - { - error_t err = 0; - - /*Acquire a lock for operations on the underlying filesystem*/ - mutex_lock(&ulfs_lock); - - /*Open the port to the directory specified in `dir`*/ - node->nn->port = file_name_lookup(dir, O_READ | O_DIRECTORY, 0); - - /*If the directory could not be opened*/ - if(node->nn->port == MACH_PORT_NULL) - { - /*set the error code accordingly*/ - err = errno; - LOG_MSG("node_init_root: Could not open the port for %s.", dir); - - /*release the lock and stop*/ - mutex_unlock(&ulfs_lock); - return err; - } - - LOG_MSG("node_init_root: Port for %s opened successfully.", dir); - LOG_MSG("\tPort: 0x%lX", (unsigned long)node->nn->port); - - /*Stat the root node*/ - err = io_stat(node->nn->port, &node->nn_stat); - if(err) - { - /*deallocate the port*/ - PORT_DEALLOC(node->nn->port); - - LOG_MSG("node_init_root: Could not stat the root node."); - - /*unlock the mutex and exit*/ - mutex_unlock(&ulfs_lock); - return err; - } - - /*Set the path to the corresponding lnode to `dir`*/ - node->nn->lnode->path = strdup(dir); - if(!node->nn->lnode->path) - { - /*deallocate the port*/ - PORT_DEALLOC(node->nn->port); - - /*unlock the mutex*/ - mutex_unlock(&ulfs_lock); - - LOG_MSG("node_init_root: Could not strdup the directory."); - return ENOMEM; - } - - /*The current position in dir*/ - char * p = dir + strlen(dir); - - /*Go through the path from end to beginning*/ - for(; p >= dir; --p) - { - /*If the current character is a '/'*/ - if(*p == '/') - { - /*If p is not the first character*/ - if(p > dir) - { - /*if this slash is escaped, skip it*/ - if(*(p - 1) == '\\') - continue; - } - - /*advance the pointer to the first character after the slash*/ - ++p; - - /*stop*/ - break; - } - } - - LOG_MSG("node_init_root: The name of root node is %s.", p); - - /*Set the name of the lnode to the last element in the path to dir*/ - node->nn->lnode->name = strdup(p); - /*If the name of the node could not be duplicated*/ - if(!node->nn->lnode->name) - { - /*free the name of the path to the node and deallocate teh port*/ - free(node->nn->lnode->path); - PORT_DEALLOC(node->nn->port); - - /*unlock the mutex*/ - mutex_unlock(&ulfs_lock); - - LOG_MSG("node_init_root: Could not strdup the name of the root node."); - return ENOMEM; - } - - /*Compute the length of the name of the root node*/ - node->nn->lnode->name_len = strlen(p); - - /*Release the lock for operations on the undelying filesystem*/ - mutex_unlock(&ulfs_lock); - - /*Return the result of operations*/ - return err; - }/*node_init_root*/ -/*----------------------------------------------------------------------------*/ -/*Frees a list of dirents*/ -void -node_entries_free - ( - node_dirent_t * dirents /*free this*/ - ) - { - /*The current and the next elements*/ - node_dirent_t * dirent, * dirent_next; - - /*Go through all elements of the list*/ - for(dirent = dirents; dirent; dirent = dirent_next) - { - /*store the next element*/ - dirent_next = dirent->next; - - /*free the dirent stored in the current element of the list*/ - free(dirent->dirent); - - /*free the current element*/ - free(dirent); - } - }/*node_entries_free*/ -/*----------------------------------------------------------------------------*/ -/*Reads the directory entries from `node`, which must be locked*/ -error_t -node_entries_get - ( - node_t * node, - node_dirent_t ** dirents /*store the result here*/ - ) - { - error_t err = 0; - - /*Obtain the path to the current node*/ - char * path_to_node = node->nn->lnode->path; - - /*The number of PROPERTY_PARAMs in the property*/ - int param_entries_count = 0; - - /*The length of the property*/ - size_t property_len = (property) ? (strlen(property)) : (0); - - /*The length of PROPERTY_PARAM*/ - size_t property_param_len = strlen(PROPERTY_PARAM); - - /*The full name and the filtering command*/ - char * full_name = NULL, * cmd = NULL; - - /*The lengths of the full name and the filtering command in chunks*/ - size_t full_name_size = 1, cmd_size = 1; - - /*If some property was indeed specified*/ - if(property_len != 0) - { - /*the pointer to the current occurrence of PROPERTY_PARAM*/ - char * occurrence = strstr(property, PROPERTY_PARAM); - - /*count the number of occurrences*/ - for(; occurrence; - occurrence = strstr(occurrence + 1, PROPERTY_PARAM), - ++param_entries_count); - - /*try allocate the memory for the fullname and the filtering command*/ - full_name = malloc(full_name_size * STRING_CHUNK); - if(!full_name) - return ENOMEM; - - cmd = malloc(cmd_size * STRING_CHUNK); - if(!cmd) - { - free(full_name); - return ENOMEM; - } - } - - /*Obtain the length of the path*/ - size_t pathlen = strlen(path_to_node); - - /*Checks if the given file satisfies the property. Zero value means that - the entry must be filtered out*/ - int - check_property - ( - const char * name /*the name of the file*/ - ) - { - /*If there is no property*/ - if(!property) - /*no filtering will be applied, any name is OK*/ - return 0; - - /*Everything OK at first*/ - err = 0; - - /*Compute the length of the full name once*/ - size_t full_name_len = pathlen + 1 + strlen(name) + 1; - - /*See how much space (in chunks) is required for the full name*/ - int chunks = full_name_size; - for(; full_name_len > chunks * STRING_CHUNK; ++chunks); - - /*If more memory is requied*/ - if(chunks > full_name_size) - { - /*free the old full name*/ - free(full_name); - - /*try to allocate the new memory*/ - full_name = malloc(chunks * STRING_CHUNK); - if(!full_name) - { - err = ENOMEM; - free(cmd); /*the string for the command is definitely allocated here*/ - return 0; - } - - /*store the new size*/ - full_name_size = chunks; - } - - /*Initialize `full_name` as a valid string*/ - full_name[0] = 0; - - /*Construct the full name*/ - strcpy(full_name, path_to_node); - strcat(full_name, "/"); - strcat(full_name, name); - - /*LOG_MSG("node_entries_get: Applying filter to %s...", full_name);*/ - - /*Compute the space required for the final filtering command*/ - size_t sz = property_len + (strlen(full_name) - property_param_len) - * param_entries_count; - - /*See how much space (in chunks) is required for the command*/ - for(chunks = cmd_size; sz > chunks * STRING_CHUNK; ++chunks); - - /*If more memory is requied*/ - if(chunks > cmd_size) - { - /*free the old command*/ - free(cmd); - - /*try to allocate the new memory*/ - cmd = malloc(chunks * STRING_CHUNK); - if(!cmd) - { - err = ENOMEM; - free(full_name); /*the string for the full name is - definitely allocated here*/ - return 0; - } - - /*store the new size*/ - cmd_size = chunks; - } - - /*Initialize `cmd` as a valid string*/ - cmd[0] = 0; - - /*The current occurence of PROPERTY_PARAM in property*/ - char * p = strstr(property, PROPERTY_PARAM); - - /*The pointer to the current position in the property*/ - char * propp = property; - - /*While the command has not been constructed*/ - for(; p; p = strstr(propp, PROPERTY_PARAM)) - { - /*add the new part of the property to the command*/ - strncat(cmd, propp, p - propp); - - /*add the filename to the command*/ - strcat(cmd, full_name); - - /*LOG_MSG("\tcmd = '%s'", cmd);*/ - - /*advance the pointer in the property*/ - propp = p + property_param_len; - - /*LOG_MSG("\tpropp points at '%s'", propp);*/ - } - - /*Copy the rest of the property to the command*/ - strcat(cmd, propp); - - /*LOG_MSG("node_entries_get: The filtering command: '%s'.", cmd);*/ - - /*Execute the command*/ - int xcode = WEXITSTATUS(system(cmd)); - - /*Return the exit code of the command*/ - return xcode; - }/*check_property*/ - - /*The list of dirents*/ - struct dirent ** dirent_list, **dirent; - - /*The head of the list of dirents*/ - node_dirent_t * node_dirent_list = NULL; - - /*The size of the array of pointers to dirent*/ - size_t dirent_data_size; - - /*The array of dirents*/ - char * dirent_data; - - /*Obtain the directory entries for the given node*/ - err = dir_entries_get - (node->nn->port, &dirent_data, &dirent_data_size, &dirent_list); - if(err) - { - return err; - } - - /*The new entry in the list*/ - node_dirent_t * node_dirent_new; - - /*The new dirent*/ - struct dirent * dirent_new; - - /*LOG_MSG("node_entries_get: Getting entries for %p", node);*/ - - /*The name of the current dirent*/ - char * name; - - /*The length of the current name*/ - size_t name_len; - - /*The size of the current dirent*/ - size_t size; - - /*The exit code of property*/ - int good; - - /*Go through all elements of the list of pointers to dirent*/ - for(dirent = dirent_list; *dirent; ++dirent) - { - /*obtain the name of the current dirent*/ - name = &((*dirent)->d_name[0]); - - /*If the current dirent is either '.' or '..', skip it*/ - if((strcmp(name, ".") == 0) || (strcmp(name, "..") == 0)) - continue; - - /*check if the current dirent has the property*/ - good = check_property(name); - if(err) - break; - - /*If the current entry is not good, skip it*/ - if(good != 0) - continue; - - /*obtain the length of the current name*/ - name_len = strlen(name); - - /*obtain the length of the current dirent*/ - size = DIRENT_LEN(name_len); - - /*create a new list element*/ - node_dirent_new = malloc(sizeof(node_dirent_t)); - if(!node_dirent_new) - { - err = ENOMEM; - break; - } - - /*create a new dirent*/ - dirent_new = malloc(size); - if(!dirent_new) - { - free(node_dirent_new); - err = ENOMEM; - break; - } - - /*fill the dirent with information*/ - dirent_new->d_ino = (*dirent)->d_ino; - dirent_new->d_type = (*dirent)->d_type; - dirent_new->d_reclen = size; - strcpy((char *)dirent_new + DIRENT_NAME_OFFS, name); - - /*add the dirent to the list*/ - node_dirent_new->dirent = dirent_new; - node_dirent_new->next = node_dirent_list; - node_dirent_list = node_dirent_new; - } - - /*If something went wrong in the loop*/ - if(err) - /*free the list of dirents*/ - node_entries_free(node_dirent_list); - else - /*store the list of dirents in the second parameter*/ - *dirents = node_dirent_list; - - /*Free the list of pointers to dirent*/ - free(dirent_list); - - /*Free the results of listing the dirents*/ - munmap(dirent_data, dirent_data_size); - - /*Free the full name and the command (if these are present at all)*/ - if(full_name) - free(full_name); - if(cmd) - free(cmd); - - /*Return the result of operations*/ - return err; - }/*node_entries_get*/ -/*----------------------------------------------------------------------------*/ -/*Makes sure that all ports to the underlying filesystem of `node` are up to - date*/ -error_t -node_update - ( - node_t * node - ) - { - error_t err = 0; - - /*The full path to this node*/ - char * path; - - /*Stat information for `node`*/ - io_statbuf_t stat; - - /*The port to the file corresponding to `node`*/ - file_t port; - - /*If the specified node is the root node or if it must not be updated*/ - if(NODE_IS_ROOT(node) || (node->nn->flags & FLAG_NODE_ULFS_FIXED)) - /*do nothing*/ - return err; /*return 0; actually*/ - - /*Gain exclusive access to the root node of the filesystem*/ - mutex_lock(&netfs_root_node->lock); - - /*Construct the full path to `node`*/ - err = lnode_path_construct(node->nn->lnode, &path); - if(err) - { - mutex_unlock(&netfs_root_node->lock); - return err; - } - - /*Deallocate `node`'s port to the underlying filesystem*/ - if(node->nn->port) - PORT_DEALLOC(node->nn->port); - - /*Try to lookup the file for `node` in its untranslated version*/ - err = file_lookup - ( - netfs_root_node->nn->port, path, O_READ | O_NOTRANS, O_NOTRANS, - 0, &port, &stat - ); - if(err) - { - node->nn->port = MACH_PORT_NULL; - err = 0; /*failure (?)*/ - return err; - } - - /*If the node looked up is actually the root node of filterfs filesystem*/ - if - ( - (stat.st_ino == underlying_node_stat.st_ino) - && (stat.st_fsid == underlying_node_stat.st_fsid) - ) - /*set `err` accordingly*/ - err = ELOOP; - else - { - /*deallocate the obtained port*/ - PORT_DEALLOC(port); - - /*obtain the translated version of the required node*/ - err = file_lookup - (netfs_root_node->nn->port, path, O_READ, 0, 0, &port, &stat); - } - - /*If there have been errors*/ - if(err) - /*reset the port*/ - port = MACH_PORT_NULL; - - /*Store the port in the node*/ - node->nn->port = port; - - /*Remove the flag about the invalidity of the current node and set the - flag that the node is up-to-date*/ - node->nn->flags &= ~FLAG_NODE_INVALIDATE; - node->nn->flags |= FLAG_NODE_ULFS_UPTODATE; - - /*Release the lock on the root node of filterfs filesystem*/ - mutex_unlock(&netfs_root_node->lock); - - /*Return the result of operations*/ - return err; - }/*node_update*/ -/*----------------------------------------------------------------------------*/ -/*Computes the size of the given directory*/ -error_t -node_get_size - ( - node_t * dir, - OFFSET_T * off - ) - { - error_t err = 0; - - /*The final size*/ - size_t size = 0; - - /*The number of directory entries*/ - /*int count = 0;*/ - - /*The the node in the directory entries list from which we start counting*/ - /*node_dirent_t * dirent_start = NULL;*/ - - /*The currently analyzed dirent*/ - node_dirent_t * dirent_current = NULL; - - /*The pointer to the beginning of the list of dirents*/ - node_dirent_t * dirent_list = NULL; - - /*The first entry we have to analyze*/ - /*int first_entry = 2;*/ - - /*Takes into consideration the name of the current dirent*/ - void - bump_size - ( - const char * name - ) - { - /*Increment the current size by the size of the current dirent*/ - size += DIRENT_LEN(strlen(name)); - - /*Count the current dirent*/ - /*++count;*/ - }/*bump_size*/ - - /*Obtain the list of entries in the current directory*/ - err = node_entries_get(dir, &dirent_list); - if(err) - return err; - - /*Obtain the pointer to the dirent which has the number first_entry*/ - /*Actually, the first element of the list*/ - /*This code is included in unionfs, but it's completely useless here*/ - /*for - ( - dirent_start = dirent_list, count = 2; - dirent_start && count < first_entry; - dirent_start = dirent_start->next, ++count - );*/ - - /*Reset the count*/ - /*count = 0;*/ - - /*Make space for '.' and '..' entries*/ - /*This code is included in unionfs, but it's completely useless here*/ - /*if(first_entry == 0) - bump_size("."); - if(first_entry <= 1) - bump_size("..");*/ - - /*See how much space is required for the node*/ - for - ( - dirent_current = dirent_list/*dirent_start*/; dirent_current; - dirent_current = dirent_current->next - ) - bump_size(dirent_current->dirent->d_name); - - /*Free the list of dirents*/ - node_entries_free(dirent_list); - - /*Return the size*/ - *off = size; - return 0; - }/*node_get_size*/ -/*----------------------------------------------------------------------------*/ -/*Remove the file called `name` under `dir`*/ -error_t -node_unlink_file - ( - node_t * dir, - char * name - ) - { - error_t err = 0; - - /*The port to the file which will be unlinked*/ - mach_port_t p; - - /*Stat information about the file which will be unlinked*/ - io_statbuf_t stat; - - /*If port corresponding to `dir` is invalid*/ - if(dir->nn->port == MACH_PORT_NULL) - /*stop with an error*/ - return ENOENT; /*FIXME: Is the return value indeed meaningful here?*/ - - /*Attempt to lookup the specified file*/ - err = file_lookup(dir->nn->port, name, O_NOTRANS, O_NOTRANS, 0, &p, &stat); - if(err) - return err; - - /*Deallocate the obtained port*/ - PORT_DEALLOC(p); - - /*Unlink file `name` under `dir`*/ - err = dir_unlink(dir->nn->port, name); - if(err) - return err; - - return err; - }/*node_unlink_file*/ -/*----------------------------------------------------------------------------*/ diff --git a/pfinet.old/ethernet.c~ b/pfinet.old/ethernet.c~ deleted file mode 100644 index 24adcc87..00000000 --- a/pfinet.old/ethernet.c~ +++ /dev/null @@ -1,298 +0,0 @@ -/* - Copyright (C) 1995, 1996, 1998, 1999, 2000, 2002, 2007 - Free Software Foundation, Inc. - - Written by Michael I. Bushnell, p/BSG. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "pfinet.h" - -#include -#include -#include -#include -#define _HACK_ERRNO_H -#include -#include - -#include -#include -#include -#include - - -struct port_class *etherreadclass; - -struct ether_device -{ - struct ether_device *next; - device_t ether_port; - struct port_info *readpt; - mach_port_t readptname; - struct device dev; -}; - -/* Linked list of all ethernet devices. */ -struct ether_device *ether_dev; - -struct enet_statistics retbuf; - - -/* Mach doesn't provide this. DAMN. */ -struct enet_statistics * -ethernet_get_stats (struct device *dev) -{ - return &retbuf; -} - -int -ethernet_stop (struct device *dev) -{ - return 0; -} - -void -ethernet_set_multi (struct device *dev) -{ -} - -/* The BPF instruction allows IP and ARP packets */ -static struct bpf_insn ether_filter[] = -{ - {NETF_IN|NETF_BPF, /* Header. */ 0, 0, 0}, - {40, 0, 0, 12}, - {21, 1, 0, 2054}, - {21, 0, 1, 2048}, - {6, 0, 0, 1500}, - {6, 0, 0, 0} -}; -static int ether_filter_len = sizeof (ether_filter) / sizeof (short); - -static struct port_bucket *etherport_bucket; - - -static any_t -ethernet_thread (any_t arg) -{ - ports_manage_port_operations_one_thread (etherport_bucket, - ethernet_demuxer, - 0); - return 0; -} - -int -ethernet_demuxer (mach_msg_header_t *inp, - mach_msg_header_t *outp) -{ - static int count = 0; - struct net_rcv_msg *msg = (struct net_rcv_msg *) inp; - struct sk_buff *skb; - int datalen; - struct ether_device *edev; - struct device *dev = 0; - - if (inp->msgh_id != NET_RCV_MSG_ID) - return 0; - - for (edev = ether_dev; edev; edev = edev->next) - if (inp->msgh_local_port == edev->readptname) - dev = &edev->dev; - - if (! dev) - { - if (inp->msgh_remote_port != MACH_PORT_NULL) - mach_port_deallocate (mach_task_self (), inp->msgh_remote_port); - return 1; - } - - fprintf (stderr, "pfinet receives the %dst packet.\n", ++count); - fflush (stderr); - - datalen = ETH_HLEN - + msg->packet_type.msgt_number - sizeof (struct packet_header); - - __mutex_lock (&net_bh_lock); - skb = alloc_skb (datalen, GFP_ATOMIC); - skb_put (skb, datalen); - skb->dev = dev; - - char *str = "pfinet enters net_bh_lock.\n"; - write (fileno (stderr), str, strlen (str) + 1); - fflush (stderr); - - /* Copy the two parts of the frame into the buffer. */ - bcopy (msg->header, skb->data, ETH_HLEN); - bcopy (msg->packet + sizeof (struct packet_header), - skb->data + ETH_HLEN, - datalen - ETH_HLEN); - - /* Drop it on the queue. */ - skb->protocol = eth_type_trans (skb, dev); - netif_rx (skb); - __mutex_unlock (&net_bh_lock); - - fprintf (stderr, "pfinet delivered the packet.\n"); - fflush (stderr); - - return 1; -} - - -void -ethernet_initialize (void) -{ - etherport_bucket = ports_create_bucket (); - etherreadclass = ports_create_class (0, 0); - - cthread_detach (cthread_fork (ethernet_thread, 0)); -} - -int -ethernet_open (struct device *dev) -{ - error_t err; - device_t master_device; - struct ether_device *edev = (struct ether_device *) dev->priv; - - assert (edev->ether_port == MACH_PORT_NULL); - - err = ports_create_port (etherreadclass, etherport_bucket, - sizeof (struct port_info), &edev->readpt); - assert_perror (err); - edev->readptname = ports_get_right (edev->readpt); - mach_port_insert_right (mach_task_self (), edev->readptname, edev->readptname, - MACH_MSG_TYPE_MAKE_SEND); - - mach_port_set_qlimit (mach_task_self (), edev->readptname, MACH_PORT_QLIMIT_MAX); - - /* The device name here is the path of a device file. */ - master_device = file_name_lookup (dev->name, 0, 0); - if (master_device == MACH_PORT_NULL) - error (2, errno, "file_name_lookup %s", dev->name); - - err = device_open (master_device, D_WRITE | D_READ, "eth", &edev->ether_port); - mach_port_deallocate (mach_task_self (), master_device); - if (err) - error (2, err, "%s", dev->name); - - err = device_set_filter (edev->ether_port, ports_get_right (edev->readpt), - MACH_MSG_TYPE_MAKE_SEND, 0, - ether_filter, ether_filter_len); - if (err) - error (2, err, "%s", dev->name); - return 0; -} - - -/* Transmit an ethernet frame */ -int -ethernet_xmit (struct sk_buff *skb, struct device *dev) -{ - error_t err; - struct ether_device *edev = (struct ether_device *) dev->priv; - u_int count; - char *str1 = "pfinet: ethernet_xmit check point 1.\n"; - char *str2 = "pfinet: ethernet_xmit check point 2.\n"; - int stderr_fd = fileno (stderr); - - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - err = device_write (edev->ether_port, D_NOWAIT, 0, skb->data, skb->len, &count); - write (stderr_fd, str2, strlen (str1) + 1); - fflush (stderr); - assert_perror (err); - assert (count == skb->len); - dev_kfree_skb (skb); - return 0; -} - -void -setup_ethernet_device (char *name, struct device **device) -{ - struct net_status netstat; - size_t count; - int net_address[2]; - error_t err; - struct ether_device *edev; - struct device *dev; - - edev = calloc (1, sizeof (struct ether_device)); - if (!edev) - error (2, ENOMEM, "%s", name); - edev->next = ether_dev; - ether_dev = edev; - - *device = dev = &edev->dev; - - dev->name = strdup (name); - /* Functions. These ones are the true "hardware layer" in Linux. */ - dev->open = 0; /* We set up before calling dev_open. */ - dev->stop = ethernet_stop; - dev->hard_start_xmit = ethernet_xmit; - dev->get_stats = ethernet_get_stats; - dev->set_multicast_list = ethernet_set_multi; - - /* These are the ones set by drivers/net/net_init.c::ether_setup. */ - dev->hard_header = eth_header; - dev->rebuild_header = eth_rebuild_header; - dev->hard_header_cache = eth_header_cache; - dev->header_cache_update = eth_header_cache_update; - dev->hard_header_parse = eth_header_parse; - /* We can't do these two (and we never try anyway). */ - /* dev->change_mtu = eth_change_mtu; */ - /* dev->set_mac_address = eth_mac_addr; */ - - /* Some more fields */ - dev->priv = edev; /* For reverse lookup. */ - dev->type = ARPHRD_ETHER; - dev->hard_header_len = ETH_HLEN; - dev->addr_len = ETH_ALEN; - memset (dev->broadcast, 0xff, ETH_ALEN); - dev->flags = IFF_BROADCAST | IFF_MULTICAST; - dev_init_buffers (dev); - - ethernet_open (dev); - - /* Fetch hardware information */ - count = NET_STATUS_COUNT; - err = device_get_status (edev->ether_port, NET_STATUS, - (dev_status_t) &netstat, &count); - if (err) - error (2, err, "%s: Cannot get device status", name); - dev->mtu = netstat.max_packet_size - dev->hard_header_len; - assert (netstat.header_format == HDR_ETHERNET); - assert (netstat.header_size == ETH_HLEN); - assert (netstat.address_size == ETH_ALEN); - - count = 2; - assert (count * sizeof (int) >= ETH_ALEN); - err = device_get_status (edev->ether_port, NET_ADDRESS, net_address, &count); - if (err) - error (2, err, "%s: Cannot get hardware Ethernet address", name); - net_address[0] = ntohl (net_address[0]); - net_address[1] = ntohl (net_address[1]); - bcopy (net_address, dev->dev_addr, ETH_ALEN); - - /* That should be enough. */ - - /* This call adds the device to the `dev_base' chain, - initializes its `ifindex' member (which matters!), - and tells the protocol stacks about the device. */ - err = - register_netdevice (dev); - assert_perror (err); -} diff --git a/pfinet.old/io-ops.c~ b/pfinet.old/io-ops.c~ deleted file mode 100644 index 4653097c..00000000 --- a/pfinet.old/io-ops.c~ +++ /dev/null @@ -1,616 +0,0 @@ -/* - Copyright (C) 1995,96,97,98,99,2000,02 Free Software Foundation, Inc. - Written by Michael I. Bushnell, p/BSG. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "pfinet.h" - -#include -#include -#include -#include - -#include "io_S.h" -#include -#include -#include -#include -#include -#include - -error_t -S_io_write (struct sock_user *user, - char *data, - size_t datalen, - off_t offset, - mach_msg_type_number_t *amount) -{ - error_t err; - struct iovec iov = { data, datalen }; - struct msghdr m = { msg_name: 0, msg_namelen: 0, msg_flags: 0, - msg_controllen: 0, msg_iov: &iov, msg_iovlen: 1 }; - char *str1 = "pfinet io_write check point 1.\n"; - int stderr_fd = fileno (stderr); - - if (!user) - return EOPNOTSUPP; - - fprintf (stderr, "pfinet io_write before locking global_lock.\n"); - fflush (stderr); - - __mutex_lock (&global_lock); - become_task (user); - if (user->sock->flags & O_NONBLOCK) - m.msg_flags |= MSG_DONTWAIT; - err = (*user->sock->ops->sendmsg) (user->sock, &m, datalen, 0); - __mutex_unlock (&global_lock); - - fprintf (stderr, "pfinet io_write after unlocking global_lock.\n"); - fflush (stderr); - - if (err < 0) - err = -err; - else - { - *amount = err; - err = 0; - } - - return err; -} - -error_t -S_io_read (struct sock_user *user, - char **data, - size_t *datalen, - off_t offset, - mach_msg_type_number_t amount) -{ - error_t err; - int alloced = 0; - struct iovec iov; - struct msghdr m = { msg_name: 0, msg_namelen: 0, msg_flags: 0, - msg_controllen: 0, msg_iov: &iov, msg_iovlen: 1 }; - - if (!user) - return EOPNOTSUPP; - - /* Instead of this, we should peek and the socket and only - allocate as much as necessary. */ - if (amount > *datalen) - { - *data = mmap (0, amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - alloced = 1; - } - - iov.iov_base = *data; - iov.iov_len = amount; - - __mutex_lock (&global_lock); - become_task (user); - err = (*user->sock->ops->recvmsg) (user->sock, &m, amount, - ((user->sock->flags & O_NONBLOCK) - ? MSG_DONTWAIT : 0), - 0); - __mutex_unlock (&global_lock); - - if (err < 0) - err = -err; - else - { - *datalen = err; - if (alloced && round_page (*datalen) < round_page (amount)) - munmap (*data + round_page (*datalen), - round_page (amount) - round_page (*datalen)); - err = 0; - } - return err; -} - -error_t -S_io_seek (struct sock_user *user, - off_t offset, - int whence, - off_t *newp) -{ - return user ? ESPIPE : EOPNOTSUPP; -} - -error_t -S_io_readable (struct sock_user *user, - mach_msg_type_number_t *amount) -{ - struct sock *sk; - error_t err; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - - /* We need to avoid calling the Linux ioctl routines, - so here is a rather ugly break of modularity. */ - - sk = user->sock->sk; - err = 0; - - /* Linux's af_inet.c ioctl routine just calls the protocol-specific - ioctl routine; it's those routines that we need to simulate. So - this switch corresponds to the initialization of SK->prot in - af_inet.c:inet_create. */ - switch (user->sock->type) - { - case SOCK_STREAM: - case SOCK_SEQPACKET: - err = tcp_tiocinq (sk, amount); - break; - - case SOCK_DGRAM: - /* These guts are copied from udp.c:udp_ioctl (TIOCINQ). */ - if (sk->state == TCP_LISTEN) - err = EINVAL; - else - /* Boy, I really love the C language. */ - *amount = (skb_peek (&sk->receive_queue) - ? : &((struct sk_buff){}))->len; - break; - - case SOCK_RAW: - default: - err = EOPNOTSUPP; - break; - } - - __mutex_unlock (&global_lock); - return err; -} - -error_t -S_io_set_all_openmodes (struct sock_user *user, - int bits) -{ - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - if (bits & O_NONBLOCK) - user->sock->flags |= O_NONBLOCK; - else - user->sock->flags &= ~O_NONBLOCK; - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_get_openmodes (struct sock_user *user, - int *bits) -{ - struct sock *sk; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - sk = user->sock->sk; - - *bits = 0; - if (!(sk->shutdown & SEND_SHUTDOWN)) - *bits |= O_WRITE; - if (!(sk->shutdown & RCV_SHUTDOWN)) - *bits |= O_READ; - if (user->sock->flags & O_NONBLOCK) - *bits |= O_NONBLOCK; - - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_set_some_openmodes (struct sock_user *user, - int bits) -{ - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - if (bits & O_NONBLOCK) - user->sock->flags |= O_NONBLOCK; - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_clear_some_openmodes (struct sock_user *user, - int bits) -{ - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - if (bits & O_NONBLOCK) - user->sock->flags &= ~O_NONBLOCK; - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_select (struct sock_user *user, - mach_port_t reply, - mach_msg_type_name_t reply_type, - int *select_type) -{ - const int want = *select_type; - int avail; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - - /* In Linux, this means (supposedly) that I/O will never be possible. - That's a lose, so prevent it from happening. */ - assert (user->sock->ops->poll); - - avail = (*user->sock->ops->poll) ((void *) 0xdeadbeef, - user->sock, - (void *) 0xdeadbead); - if ((avail & want) == 0) - { - ports_interrupt_self_on_notification (user, reply, - MACH_NOTIFY_DEAD_NAME); - - do - { - /* Block until we are woken or cancelled. */ - interruptible_sleep_on (user->sock->sk->sleep); - if (signal_pending (current)) /* This means we were cancelled. */ - { - __mutex_unlock (&global_lock); - return EINTR; - } - avail = (*user->sock->ops->poll) ((void *) 0xdeadbeef, - user->sock, - (void *) 0xdeadbead); - } - while ((avail & want) == 0); - } - - /* We got something. */ - *select_type = avail; - - __mutex_unlock (&global_lock); - - return 0; -} - -error_t -S_io_stat (struct sock_user *user, - struct stat *st) -{ - if (!user) - return EOPNOTSUPP; - - bzero (st, sizeof (struct stat)); - - st->st_fstype = FSTYPE_SOCKET; - st->st_fsid = getpid (); - st->st_ino = user->sock->st_ino; - - st->st_mode = S_IFSOCK | ACCESSPERMS; - st->st_blksize = 512; /* ???? */ - - return 0; -} - -error_t -S_io_reauthenticate (struct sock_user *user, - mach_port_t rend) -{ - struct sock_user *newuser; - uid_t gubuf[20], ggbuf[20], aubuf[20], agbuf[20]; - uid_t *gen_uids, *gen_gids, *aux_uids, *aux_gids; - size_t genuidlen, gengidlen, auxuidlen, auxgidlen; - error_t err; - size_t i, j; - auth_t auth; - mach_port_t newright; - - if (!user) - return EOPNOTSUPP; - - genuidlen = gengidlen = auxuidlen = auxgidlen = 20; - gen_uids = gubuf; - gen_gids = ggbuf; - aux_uids = aubuf; - aux_gids = agbuf; - - __mutex_lock (&global_lock); - newuser = make_sock_user (user->sock, 0, 1, 0); - - auth = getauth (); - newright = ports_get_send_right (newuser); - assert (newright != MACH_PORT_NULL); - do - err = auth_server_authenticate (auth, - rend, - MACH_MSG_TYPE_COPY_SEND, - newright, - MACH_MSG_TYPE_COPY_SEND, - &gen_uids, &genuidlen, - &aux_uids, &auxuidlen, - &gen_gids, &gengidlen, - &aux_gids, &auxgidlen); - while (err == EINTR); - mach_port_deallocate (mach_task_self (), rend); - mach_port_deallocate (mach_task_self (), newright); - mach_port_deallocate (mach_task_self (), auth); - - if (err) - newuser->isroot = 0; - else - /* Check permission as fshelp_isowner would do. */ - for (i = 0; i < genuidlen; i++) - { - if (gen_uids[i] == 0 || gen_uids[i] == pfinet_owner) - newuser->isroot = 1; - if (gen_uids[i] == pfinet_group) - for (j = 0; j < gengidlen; j++) - if (gen_gids[j] == pfinet_group) - newuser->isroot = 1; - } - - mach_port_move_member (mach_task_self (), newuser->pi.port_right, - pfinet_bucket->portset); - - __mutex_unlock (&global_lock); - - ports_port_deref (newuser); - - if (gubuf != gen_uids) - munmap (gen_uids, genuidlen * sizeof (uid_t)); - if (ggbuf != gen_gids) - munmap (gen_gids, gengidlen * sizeof (uid_t)); - if (aubuf != aux_uids) - munmap (aux_uids, auxuidlen * sizeof (uid_t)); - if (agbuf != aux_gids) - munmap (aux_gids, auxgidlen * sizeof (uid_t)); - - return 0; -} - -error_t -S_io_restrict_auth (struct sock_user *user, - mach_port_t *newobject, - mach_msg_type_name_t *newobject_type, - uid_t *uids, size_t uidslen, - uid_t *gids, size_t gidslen) -{ - struct sock_user *newuser; - int i, j; - int isroot; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - - isroot = 0; - if (user->isroot) - /* Check permission as fshelp_isowner would do. */ - for (i = 0; i < uidslen; i++) - { - if (uids[i] == 0 || uids[i] == pfinet_owner) - isroot = 1; - if (uids[i] == pfinet_group) - for (j = 0; j < gidslen; j++) - if (gids[j] == pfinet_group) - isroot = 1; - } - - newuser = make_sock_user (user->sock, isroot, 0, 0); - *newobject = ports_get_right (newuser); - *newobject_type = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (newuser); - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_duplicate (struct sock_user *user, - mach_port_t *newobject, - mach_msg_type_name_t *newobject_type) -{ - struct sock_user *newuser; - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - newuser = make_sock_user (user->sock, user->isroot, 0, 0); - *newobject = ports_get_right (newuser); - *newobject_type = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (newuser); - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_identity (struct sock_user *user, - mach_port_t *id, - mach_msg_type_name_t *idtype, - mach_port_t *fsys, - mach_msg_type_name_t *fsystype, - ino_t *fileno) -{ - error_t err; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - if (user->sock->identity == MACH_PORT_NULL) - { - err = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, - &user->sock->identity); - if (err) - { - __mutex_unlock (&global_lock); - return err; - } - } - - *id = user->sock->identity; - *idtype = MACH_MSG_TYPE_MAKE_SEND; - *fsys = fsys_identity; - *fsystype = MACH_MSG_TYPE_MAKE_SEND; - *fileno = user->sock->st_ino; - - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_io_revoke (struct sock_user *user) -{ - /* XXX maybe we should try */ - return EOPNOTSUPP; -} - - - -error_t -S_io_async (struct sock_user *user, - mach_port_t notify, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -error_t -S_io_mod_owner (struct sock_user *user, - pid_t owner) -{ - return EOPNOTSUPP; -} - -error_t -S_io_get_owner (struct sock_user *user, - pid_t *owner) -{ - return EOPNOTSUPP; -} - -error_t -S_io_get_icky_async_id (struct sock_user *user, - mach_port_t *id, - mach_msg_type_name_t *idtype) -{ - return EOPNOTSUPP; -} - -error_t -S_io_server_version (struct sock_user *user, - char *name, - int *major, - int *minor, - int *edit) -{ - return EOPNOTSUPP; -} - -error_t -S_io_pathconf (struct sock_user *user, - int name, - int *value) -{ - return EOPNOTSUPP; -} - - - -error_t -S_io_map (struct sock_user *user, - mach_port_t *rdobj, - mach_msg_type_name_t *rdobj_type, - mach_port_t *wrobj, - mach_msg_type_name_t *wrobj_type) -{ - return EOPNOTSUPP; -} - -error_t -S_io_map_cntl (struct sock_user *user, - mach_port_t *obj, - mach_msg_type_name_t *obj_type) -{ - return EOPNOTSUPP; -} - -error_t -S_io_get_conch (struct sock_user *user) -{ - return EOPNOTSUPP; -} - -error_t -S_io_release_conch (struct sock_user *user) -{ - return EOPNOTSUPP; -} - -error_t -S_io_eofnotify (struct sock_user *user) -{ - return EOPNOTSUPP; -} - -error_t -S_io_prenotify (struct sock_user *user, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -error_t -S_io_postnotify (struct sock_user *user, - vm_offset_t start, - vm_offset_t end) -{ - return EOPNOTSUPP; -} - -error_t -S_io_readnotify (struct sock_user *user) -{ - return EOPNOTSUPP; -} - -error_t -S_io_readsleep (struct sock_user *user) -{ - return EOPNOTSUPP; -} - -error_t -S_io_sigio (struct sock_user *user) -{ - return EOPNOTSUPP; -} diff --git a/pfinet.old/linux-src/net/core/dev.c~ b/pfinet.old/linux-src/net/core/dev.c~ deleted file mode 100644 index 7d0658c5..00000000 --- a/pfinet.old/linux-src/net/core/dev.c~ +++ /dev/null @@ -1,2092 +0,0 @@ -/* - * NET3 Protocol independent device support routines. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - * - * Derived from the non IP parts of dev.c 1.0.19 - * Authors: Ross Biro, - * Fred N. van Kempen, - * Mark Evans, - * - * Additional Authors: - * Florian la Roche - * Alan Cox - * David Hinds - * Alexey Kuznetsov - * Adam Sulmicki - * - * Changes: - * Marcelo Tosatti : dont accept mtu 0 or < - * Alan Cox : device private ioctl copies fields back. - * Alan Cox : Transmit queue code does relevant stunts to - * keep the queue safe. - * Alan Cox : Fixed double lock. - * Alan Cox : Fixed promisc NULL pointer trap - * ???????? : Support the full private ioctl range - * Alan Cox : Moved ioctl permission check into drivers - * Tim Kordas : SIOCADDMULTI/SIOCDELMULTI - * Alan Cox : 100 backlog just doesn't cut it when - * you start doing multicast video 8) - * Alan Cox : Rewrote net_bh and list manager. - * Alan Cox : Fix ETH_P_ALL echoback lengths. - * Alan Cox : Took out transmit every packet pass - * Saved a few bytes in the ioctl handler - * Alan Cox : Network driver sets packet type before calling netif_rx. Saves - * a function call a packet. - * Alan Cox : Hashed net_bh() - * Richard Kooijman: Timestamp fixes. - * Alan Cox : Wrong field in SIOCGIFDSTADDR - * Alan Cox : Device lock protection. - * Alan Cox : Fixed nasty side effect of device close changes. - * Rudi Cilibrasi : Pass the right thing to set_mac_address() - * Dave Miller : 32bit quantity for the device lock to make it work out - * on a Sparc. - * Bjorn Ekwall : Added KERNELD hack. - * Alan Cox : Cleaned up the backlog initialise. - * Craig Metz : SIOCGIFCONF fix if space for under - * 1 device. - * Thomas Bogendoerfer : Return ENODEV for dev_open, if there - * is no device open function. - * Andi Kleen : Fix error reporting for SIOCGIFCONF - * Michael Chastain : Fix signed/unsigned for SIOCGIFCONF - * Cyrus Durgin : Cleaned for KMOD - * Adam Sulmicki : Bug Fix : Network Device Unload - * A network device unload needs to purge - * the backlog queue. - * Paul Rusty Russel : SIOCSIFNAME - * Andrea Arcangeli : dev_clear_backlog() needs the - * skb_queue_lock held. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef CONFIG_NET_RADIO -#include -#endif /* CONFIG_NET_RADIO */ -#ifdef CONFIG_PLIP -extern int plip_init(void); -#endif - -NET_PROFILE_DEFINE(dev_queue_xmit) -NET_PROFILE_DEFINE(net_bh) -NET_PROFILE_DEFINE(net_bh_skb) - - -const char *if_port_text[] = { - "unknown", - "BNC", - "10baseT", - "AUI", - "100baseT", - "100baseTX", - "100baseFX" -}; - -/* - * The list of packet types we will receive (as opposed to discard) - * and the routines to invoke. - * - * Why 16. Because with 16 the only overlap we get on a hash of the - * low nibble of the protocol value is RARP/SNAP/X.25. - * - * 0800 IP - * 0001 802.3 - * 0002 AX.25 - * 0004 802.2 - * 8035 RARP - * 0005 SNAP - * 0805 X.25 - * 0806 ARP - * 8137 IPX - * 0009 Localtalk - * 86DD IPv6 - */ - -struct packet_type *ptype_base[16]; /* 16 way hashed list */ -struct packet_type *ptype_all = NULL; /* Taps */ - -/* - * Device list lock. Setting it provides that interface - * will not disappear unexpectedly while kernel sleeps. - */ - -atomic_t dev_lockct = ATOMIC_INIT(0); - -/* - * Our notifier list - */ - -#ifdef _HURD_ -struct notifier_block *netdev_chain=NULL; -#else -static struct notifier_block *netdev_chain=NULL; -#endif - -/* - * Device drivers call our routines to queue packets here. We empty the - * queue in the bottom half handler. - */ - -static struct sk_buff_head backlog; - -#ifdef CONFIG_NET_FASTROUTE -int netdev_fastroute; -int netdev_fastroute_obstacles; -struct net_fastroute_stats dev_fastroute_stat; -#endif - -static void dev_clear_backlog(struct device *dev); - - -/****************************************************************************************** - - Protocol management and registration routines - -*******************************************************************************************/ - -/* - * For efficiency - */ - -int netdev_nit=0; - -/* - * Add a protocol ID to the list. Now that the input handler is - * smarter we can dispense with all the messy stuff that used to be - * here. - * - * BEWARE!!! Protocol handlers, mangling input packets, - * MUST BE last in hash buckets and checking protocol handlers - * MUST start from promiscous ptype_all chain in net_bh. - * It is true now, do not change it. - * Explantion follows: if protocol handler, mangling packet, will - * be the first on list, it is not able to sense, that packet - * is cloned and should be copied-on-write, so that it will - * change it and subsequent readers will get broken packet. - * --ANK (980803) - */ - -void dev_add_pack(struct packet_type *pt) -{ - int hash; -#ifdef CONFIG_NET_FASTROUTE - /* Hack to detect packet socket */ - if (pt->data) { - netdev_fastroute_obstacles++; - dev_clear_fastroute(pt->dev); - } -#endif - if(pt->type==htons(ETH_P_ALL)) - { - netdev_nit++; - pt->next=ptype_all; - ptype_all=pt; - } - else - { - hash=ntohs(pt->type)&15; - pt->next = ptype_base[hash]; - ptype_base[hash] = pt; - } -} - - -/* - * Remove a protocol ID from the list. - */ - -void dev_remove_pack(struct packet_type *pt) -{ - struct packet_type **pt1; - if(pt->type==htons(ETH_P_ALL)) - { - netdev_nit--; - pt1=&ptype_all; - } - else - pt1=&ptype_base[ntohs(pt->type)&15]; - for(; (*pt1)!=NULL; pt1=&((*pt1)->next)) - { - if(pt==(*pt1)) - { - *pt1=pt->next; - synchronize_bh(); -#ifdef CONFIG_NET_FASTROUTE - if (pt->data) - netdev_fastroute_obstacles--; -#endif - return; - } - } - printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt); -} - -/***************************************************************************************** - - Device Interface Subroutines - -******************************************************************************************/ - -/* - * Find an interface by name. - */ - -struct device *dev_get(const char *name) -{ - struct device *dev; - - for (dev = dev_base; dev != NULL; dev = dev->next) - { - if (strcmp(dev->name, name) == 0) - return(dev); - } - return NULL; -} - -struct device * dev_get_by_index(int ifindex) -{ - struct device *dev; - - for (dev = dev_base; dev != NULL; dev = dev->next) - { - if (dev->ifindex == ifindex) - return(dev); - } - return NULL; -} - -struct device *dev_getbyhwaddr(unsigned short type, char *ha) -{ - struct device *dev; - - for (dev = dev_base; dev != NULL; dev = dev->next) - { - if (dev->type == type && - memcmp(dev->dev_addr, ha, dev->addr_len) == 0) - return(dev); - } - return(NULL); -} - -/* - * Passed a format string - eg "lt%d" it will try and find a suitable - * id. Not efficient for many devices, not called a lot.. - */ - -int dev_alloc_name(struct device *dev, const char *name) -{ - int i; - /* - * If you need over 100 please also fix the algorithm... - */ - for(i=0;i<100;i++) - { - sprintf(dev->name,name,i); - if(dev_get(dev->name)==NULL) - return i; - } - return -ENFILE; /* Over 100 of the things .. bail out! */ -} - -struct device *dev_alloc(const char *name, int *err) -{ - struct device *dev=kmalloc(sizeof(struct device)+16, GFP_KERNEL); - if(dev==NULL) - { - *err=-ENOBUFS; - return NULL; - } - dev->name=(char *)(dev+1); /* Name string space */ - *err=dev_alloc_name(dev,name); - if(*err<0) - { - kfree(dev); - return NULL; - } - return dev; -} - -void netdev_state_change(struct device *dev) -{ - if (dev->flags&IFF_UP) - notifier_call_chain(&netdev_chain, NETDEV_CHANGE, dev); -} - - -/* - * Find and possibly load an interface. - */ - -#ifdef CONFIG_KMOD - -void dev_load(const char *name) -{ - if(!dev_get(name) && capable(CAP_SYS_MODULE)) - request_module(name); -} - -#else - -extern inline void dev_load(const char *unused){;} - -#endif - -static int default_rebuild_header(struct sk_buff *skb) -{ - printk(KERN_DEBUG "%s: default_rebuild_header called -- BUG!\n", skb->dev ? skb->dev->name : "NULL!!!"); - kfree_skb(skb); - return 1; -} - -/* - * Prepare an interface for use. - */ - -int dev_open(struct device *dev) -{ - int ret = 0; - - /* - * Is it already up? - */ - - if (dev->flags&IFF_UP) - return 0; - - /* - * Call device private open method - */ - - if (dev->open) - ret = dev->open(dev); - - /* - * If it went open OK then: - */ - - if (ret == 0) - { - /* - * nil rebuild_header routine, - * that should be never called and used as just bug trap. - */ - - if (dev->rebuild_header == NULL) - dev->rebuild_header = default_rebuild_header; - - /* - * Set the flags. - */ - dev->flags |= (IFF_UP | IFF_RUNNING); - - /* - * Initialize multicasting status - */ - dev_mc_upload(dev); - - /* - * Wakeup transmit queue engine - */ - dev_activate(dev); - - /* - * ... and announce new interface. - */ - notifier_call_chain(&netdev_chain, NETDEV_UP, dev); - - } - return(ret); -} - -#ifdef CONFIG_NET_FASTROUTE - -static __inline__ void dev_do_clear_fastroute(struct device *dev) -{ - if (dev->accept_fastpath) { - int i; - - for (i=0; i<=NETDEV_FASTROUTE_HMASK; i++) - dst_release_irqwait(xchg(dev->fastpath+i, NULL)); - } -} - -void dev_clear_fastroute(struct device *dev) -{ - if (dev) { - dev_do_clear_fastroute(dev); - } else { - for (dev = dev_base; dev; dev = dev->next) - dev_do_clear_fastroute(dev); - } -} -#endif - -/* - * Completely shutdown an interface. - */ - -int dev_close(struct device *dev) -{ - if (!(dev->flags&IFF_UP)) - return 0; - - dev_deactivate(dev); - - dev_lock_wait(); - - /* - * Call the device specific close. This cannot fail. - * Only if device is UP - */ - - if (dev->stop) - dev->stop(dev); - - if (dev->start) - printk("dev_close: bug %s still running\n", dev->name); - - /* - * Device is now down. - */ - dev_clear_backlog(dev); - - dev->flags&=~(IFF_UP|IFF_RUNNING); -#ifdef CONFIG_NET_FASTROUTE - dev_clear_fastroute(dev); -#endif - - /* - * Tell people we are going down - */ - notifier_call_chain(&netdev_chain, NETDEV_DOWN, dev); - - return(0); -} - - -/* - * Device change register/unregister. These are not inline or static - * as we export them to the world. - */ - -int register_netdevice_notifier(struct notifier_block *nb) -{ - return notifier_chain_register(&netdev_chain, nb); -} - -int unregister_netdevice_notifier(struct notifier_block *nb) -{ - return notifier_chain_unregister(&netdev_chain,nb); -} - -/* - * Support routine. Sends outgoing frames to any network - * taps currently in use. - */ - -void dev_queue_xmit_nit(struct sk_buff *skb, struct device *dev) -{ - struct packet_type *ptype; - get_fast_time(&skb->stamp); - - for (ptype = ptype_all; ptype!=NULL; ptype = ptype->next) - { - /* Never send packets back to the socket - * they originated from - MvS (miquels@drinkel.ow.org) - */ - if ((ptype->dev == dev || !ptype->dev) && - ((struct sock *)ptype->data != skb->sk)) - { - struct sk_buff *skb2; - if ((skb2 = skb_clone(skb, GFP_ATOMIC)) == NULL) - break; - - /* Code, following below is wrong. - - The only reason, why it does work is that - ONLY packet sockets receive outgoing - packets. If such a packet will be (occasionally) - received by normal packet handler, which expects - that mac header is pulled... - */ - - /* More sensible variant. skb->nh should be correctly - set by sender, so that the second statement is - just protection against buggy protocols. - */ - skb2->mac.raw = skb2->data; - - if (skb2->nh.raw < skb2->data || skb2->nh.raw >= skb2->tail) { - if (net_ratelimit()) - printk(KERN_DEBUG "protocol %04x is buggy, dev %s\n", skb2->protocol, dev->name); - skb2->nh.raw = skb2->data; - if (dev->hard_header) - skb2->nh.raw += dev->hard_header_len; - } - - skb2->h.raw = skb2->nh.raw; - skb2->pkt_type = PACKET_OUTGOING; - ptype->func(skb2, skb->dev, ptype); - } - } -} - -/* - * Fast path for loopback frames. - */ - -void dev_loopback_xmit(struct sk_buff *skb) -{ - struct sk_buff *newskb=skb_clone(skb, GFP_ATOMIC); - if (newskb==NULL) - return; - - newskb->mac.raw = newskb->data; - skb_pull(newskb, newskb->nh.raw - newskb->data); - newskb->pkt_type = PACKET_LOOPBACK; - newskb->ip_summed = CHECKSUM_UNNECESSARY; - if (newskb->dst==NULL) - printk(KERN_DEBUG "BUG: packet without dst looped back 1\n"); - netif_rx(newskb); -} - -int dev_queue_xmit(struct sk_buff *skb) -{ - struct device *dev = skb->dev; - struct Qdisc *q; - char *str1 = "pfinet: dev_queue_xmit check point 1.\n"; - char *str2 = "pfinet: dev_queue_xmit check point 2.\n"; - char *str3 = "pfinet: dev_queue_xmit check point 3.\n"; - char *str4 = "pfinet: dev_queue_xmit check point 4.\n"; - int stderr_fd = fileno (stderr); - - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - -#ifdef CONFIG_NET_PROFILE - start_bh_atomic(); - NET_PROFILE_ENTER(dev_queue_xmit); -#endif - - start_bh_atomic(); - q = dev->qdisc; - write (stderr_fd, str2, strlen (str2) + 1); - fflush (stderr); - if (q->enqueue) { - q->enqueue(skb, q); - qdisc_wakeup(dev); - end_bh_atomic(); - -#ifdef CONFIG_NET_PROFILE - NET_PROFILE_LEAVE(dev_queue_xmit); - end_bh_atomic(); -#endif - - return 0; - } - write (stderr_fd, str3, strlen (str3) + 1); - fflush (stderr); - - /* The device has no queue. Common case for software devices: - loopback, all the sorts of tunnels... - - Really, it is unlikely that bh protection is necessary here: - virtual devices do not generate EOI events. - However, it is possible, that they rely on bh protection - made by us here. - */ - if (dev->flags&IFF_UP) { - write (stderr_fd, str4, strlen (str4) + 1); - fflush (stderr); - if (netdev_nit) - dev_queue_xmit_nit(skb,dev); - write (stderr_fd, str5, strlen (str5) + 1); - fflush (stderr); - if (dev->hard_start_xmit(skb, dev) == 0) { - end_bh_atomic(); - -#ifdef CONFIG_NET_PROFILE - NET_PROFILE_LEAVE(dev_queue_xmit); - end_bh_atomic(); -#endif - write (stderr_fd, str6, strlen (str6) + 1); - fflush (stderr); - - return 0; - } - if (net_ratelimit()) - printk(KERN_DEBUG "Virtual device %s asks to queue packet!\n", dev->name); - } - end_bh_atomic(); - write (stderr_fd, str6, strlen (str6) + 1); - fflush (stderr); - - kfree_skb(skb); - -#ifdef CONFIG_NET_PROFILE - NET_PROFILE_LEAVE(dev_queue_xmit); - end_bh_atomic(); -#endif - - return 0; -} - - -/*======================================================================= - Receiver rotutines - =======================================================================*/ - -int netdev_dropping = 0; -int netdev_max_backlog = 300; -atomic_t netdev_rx_dropped; -#ifdef CONFIG_CPU_IS_SLOW -int net_cpu_congestion; -#endif - -#ifdef CONFIG_NET_HW_FLOWCONTROL -int netdev_throttle_events; -static unsigned long netdev_fc_mask = 1; -unsigned long netdev_fc_xoff = 0; - -static struct -{ - void (*stimul)(struct device *); - struct device *dev; -} netdev_fc_slots[32]; - -int netdev_register_fc(struct device *dev, void (*stimul)(struct device *dev)) -{ - int bit = 0; - unsigned long flags; - - save_flags(flags); - cli(); - if (netdev_fc_mask != ~0UL) { - bit = ffz(netdev_fc_mask); - netdev_fc_slots[bit].stimul = stimul; - netdev_fc_slots[bit].dev = dev; - set_bit(bit, &netdev_fc_mask); - clear_bit(bit, &netdev_fc_xoff); - } - restore_flags(flags); - return bit; -} - -void netdev_unregister_fc(int bit) -{ - unsigned long flags; - - save_flags(flags); - cli(); - if (bit > 0) { - netdev_fc_slots[bit].stimul = NULL; - netdev_fc_slots[bit].dev = NULL; - clear_bit(bit, &netdev_fc_mask); - clear_bit(bit, &netdev_fc_xoff); - } - restore_flags(flags); -} - -static void netdev_wakeup(void) -{ - unsigned long xoff; - - cli(); - xoff = netdev_fc_xoff; - netdev_fc_xoff = 0; - netdev_dropping = 0; - netdev_throttle_events++; - while (xoff) { - int i = ffz(~xoff); - xoff &= ~(1<next) - if (curr->dev == dev) - { - __skb_unlink(curr, &backlog); - spin_unlock_irqrestore(&skb_queue_lock, flags); - kfree_skb(curr); - goto repeat; - } - spin_unlock_irqrestore(&skb_queue_lock, flags); -#ifdef CONFIG_NET_HW_FLOWCONTROL - if (netdev_dropping) - netdev_wakeup(); -#else - netdev_dropping = 0; -#endif - } -} - -/* - * Receive a packet from a device driver and queue it for the upper - * (protocol) levels. It always succeeds. - */ - -void netif_rx(struct sk_buff *skb) -{ -#ifndef CONFIG_CPU_IS_SLOW - if(skb->stamp.tv_sec==0) - get_fast_time(&skb->stamp); -#else - skb->stamp = xtime; -#endif - - /* The code is rearranged so that the path is the most - short when CPU is congested, but is still operating. - */ - - if (backlog.qlen <= netdev_max_backlog) { - if (backlog.qlen) { - if (netdev_dropping == 0) { - skb_queue_tail(&backlog,skb); - mark_bh(NET_BH); - return; - } - atomic_inc(&netdev_rx_dropped); - kfree_skb(skb); - return; - } -#ifdef CONFIG_NET_HW_FLOWCONTROL - if (netdev_dropping) - netdev_wakeup(); -#else - netdev_dropping = 0; -#endif - skb_queue_tail(&backlog,skb); - mark_bh(NET_BH); - return; - } - netdev_dropping = 1; - atomic_inc(&netdev_rx_dropped); - kfree_skb(skb); -} - -#ifdef CONFIG_BRIDGE -static inline void handle_bridge(struct sk_buff *skb, unsigned short type) -{ - /* - * The br_stats.flags is checked here to save the expense of a - * function call. - */ - if ((br_stats.flags & BR_UP) && br_call_bridge(skb, type)) - { - /* - * We pass the bridge a complete frame. This means - * recovering the MAC header first. - */ - - int offset; - - skb=skb_clone(skb, GFP_ATOMIC); - if(skb==NULL) - return; - - offset=skb->data-skb->mac.raw; - skb_push(skb,offset); /* Put header back on for bridge */ - - if(br_receive_frame(skb)) - return; - kfree_skb(skb); - } - return; -} -#endif - -/* - * When we are called the queue is ready to grab, the interrupts are - * on and hardware can interrupt and queue to the receive queue as we - * run with no problems. - * This is run as a bottom half after an interrupt handler that does - * mark_bh(NET_BH); - */ - -void net_bh(void) -{ - struct packet_type *ptype; - struct packet_type *pt_prev; - unsigned short type; -#ifndef _HURD_ - unsigned long start_time = jiffies; -#ifdef CONFIG_CPU_IS_SLOW - static unsigned long start_busy = 0; - static unsigned long ave_busy = 0; - - if (start_busy == 0) - start_busy = start_time; - net_cpu_congestion = ave_busy>>8; -#endif -#endif - - NET_PROFILE_ENTER(net_bh); - /* - * Can we send anything now? We want to clear the - * decks for any more sends that get done as we - * process the input. This also minimises the - * latency on a transmit interrupt bh. - */ - - if (qdisc_head.forw != &qdisc_head) - qdisc_run_queues(); - - /* - * Any data left to process. This may occur because a - * mark_bh() is done after we empty the queue including - * that from the device which does a mark_bh() just after - */ - - /* - * While the queue is not empty.. - * - * Note that the queue never shrinks due to - * an interrupt, so we can do this test without - * disabling interrupts. - */ - - while (!skb_queue_empty(&backlog)) - { - struct sk_buff * skb; - -#ifndef _HURD_ - /* Give chance to other bottom halves to run */ - if (jiffies - start_time > 1) - goto net_bh_break; -#endif - - /* - * We have a packet. Therefore the queue has shrunk - */ - skb = skb_dequeue(&backlog); - -#ifndef _HURD_ -#ifdef CONFIG_CPU_IS_SLOW - if (ave_busy > 128*16) { - kfree_skb(skb); - while ((skb = skb_dequeue(&backlog)) != NULL) - kfree_skb(skb); - break; - } -#endif -#endif - - -#if 0 - NET_PROFILE_SKB_PASSED(skb, net_bh_skb); -#endif -#ifdef CONFIG_NET_FASTROUTE - if (skb->pkt_type == PACKET_FASTROUTE) { - dev_queue_xmit(skb); - continue; - } -#endif - - /* - * Bump the pointer to the next structure. - * - * On entry to the protocol layer. skb->data and - * skb->nh.raw point to the MAC and encapsulated data - */ - - /* XXX until we figure out every place to modify.. */ - skb->h.raw = skb->nh.raw = skb->data; - - if (skb->mac.raw < skb->head || skb->mac.raw > skb->data) { - printk(KERN_CRIT "%s: wrong mac.raw ptr, proto=%04x\n", skb->dev->name, skb->protocol); - kfree_skb(skb); - continue; - } - - /* - * Fetch the packet protocol ID. - */ - - type = skb->protocol; - -#ifdef CONFIG_BRIDGE - /* - * If we are bridging then pass the frame up to the - * bridging code (if this protocol is to be bridged). - * If it is bridged then move on - */ - handle_bridge(skb, type); -#endif - - /* - * We got a packet ID. Now loop over the "known protocols" - * list. There are two lists. The ptype_all list of taps (normally empty) - * and the main protocol list which is hashed perfectly for normal protocols. - */ - - pt_prev = NULL; - for (ptype = ptype_all; ptype!=NULL; ptype=ptype->next) - { - if (!ptype->dev || ptype->dev == skb->dev) { - if(pt_prev) - { - struct sk_buff *skb2=skb_clone(skb, GFP_ATOMIC); - if(skb2) - pt_prev->func(skb2,skb->dev, pt_prev); - } - pt_prev=ptype; - } - } - - for (ptype = ptype_base[ntohs(type)&15]; ptype != NULL; ptype = ptype->next) - { - if (ptype->type == type && (!ptype->dev || ptype->dev==skb->dev)) - { - /* - * We already have a match queued. Deliver - * to it and then remember the new match - */ - if(pt_prev) - { - struct sk_buff *skb2; - - skb2=skb_clone(skb, GFP_ATOMIC); - - /* - * Kick the protocol handler. This should be fast - * and efficient code. - */ - - if(skb2) - pt_prev->func(skb2, skb->dev, pt_prev); - } - /* Remember the current last to do */ - pt_prev=ptype; - } - } /* End of protocol list loop */ - - /* - * Is there a last item to send to ? - */ - - if(pt_prev) { - pt_prev->func(skb, skb->dev, pt_prev); - } - /* - * Has an unknown packet has been received ? - */ - - else { - kfree_skb(skb); - } - } /* End of queue loop */ - - /* - * We have emptied the queue - */ - - /* - * One last output flush. - */ - - if (qdisc_head.forw != &qdisc_head) - qdisc_run_queues(); - -#ifndef _HURD_ -#ifdef CONFIG_CPU_IS_SLOW - if (1) { - unsigned long start_idle = jiffies; - ave_busy += ((start_idle - start_busy)<<3) - (ave_busy>>4); - start_busy = 0; - } -#endif -#endif -#ifdef CONFIG_NET_HW_FLOWCONTROL - if (netdev_dropping) - netdev_wakeup(); -#else - netdev_dropping = 0; -#endif - NET_PROFILE_LEAVE(net_bh); - return; - -#ifndef _HURD_ -net_bh_break: - mark_bh(NET_BH); - NET_PROFILE_LEAVE(net_bh); - return; -#endif -} - -/* Protocol dependent address dumping routines */ - -static gifconf_func_t * gifconf_list [NPROTO]; - -int register_gifconf(unsigned int family, gifconf_func_t * gifconf) -{ - if (family>=NPROTO) - return -EINVAL; - gifconf_list[family] = gifconf; - return 0; -} - - -/* - * Map an interface index to its name (SIOCGIFNAME) - */ - -/* - * This call is useful, but I'd remove it too. - * - * The reason is purely aestetical, it is the only call - * from SIOC* family using struct ifreq in reversed manner. - * Besides that, it is pretty silly to put "drawing" facility - * to kernel, it is useful only to print ifindices - * in readable form, is not it? --ANK - * - * We need this ioctl for efficient implementation of the - * if_indextoname() function required by the IPv6 API. Without - * it, we would have to search all the interfaces to find a - * match. --pb - */ - -static int dev_ifname(struct ifreq *arg) -{ - struct device *dev; - struct ifreq ifr; - int err; - - /* - * Fetch the caller's info block. - */ - - err = copy_from_user(&ifr, arg, sizeof(struct ifreq)); - if (err) - return -EFAULT; - - dev = dev_get_by_index(ifr.ifr_ifindex); - if (!dev) - return -ENODEV; - - strcpy(ifr.ifr_name, dev->name); - - err = copy_to_user(arg, &ifr, sizeof(struct ifreq)); - return (err)?-EFAULT:0; -} - -/* - * Perform a SIOCGIFCONF call. This structure will change - * size eventually, and there is nothing I can do about it. - * Thus we will need a 'compatibility mode'. - */ - -#ifdef _HURD_ -int dev_ifconf(char *arg) -#else -static int dev_ifconf(char *arg) -#endif -{ - struct ifconf ifc; - struct device *dev; - char *pos; - int len; - int total; - int i; - - /* - * Fetch the caller's info block. - */ - - if (copy_from_user(&ifc, arg, sizeof(struct ifconf))) - return -EFAULT; - - pos = ifc.ifc_buf; - len = ifc.ifc_len; - - /* - * Loop over the interfaces, and write an info block for each. - */ - - total = 0; - for (dev = dev_base; dev != NULL; dev = dev->next) { - for (i=0; iget_stats ? dev->get_stats(dev): NULL); - int size; - - if (stats) - size = sprintf(buffer, "%6s:%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu %8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n", - dev->name, - stats->rx_bytes, - stats->rx_packets, stats->rx_errors, - stats->rx_dropped + stats->rx_missed_errors, - stats->rx_fifo_errors, - stats->rx_length_errors + stats->rx_over_errors - + stats->rx_crc_errors + stats->rx_frame_errors, - stats->rx_compressed, stats->multicast, - stats->tx_bytes, - stats->tx_packets, stats->tx_errors, stats->tx_dropped, - stats->tx_fifo_errors, stats->collisions, - stats->tx_carrier_errors + stats->tx_aborted_errors - + stats->tx_window_errors + stats->tx_heartbeat_errors, - stats->tx_compressed); - else - size = sprintf(buffer, "%6s: No statistics available.\n", dev->name); - - return size; -} - -/* - * Called from the PROCfs module. This now uses the new arbitrary sized /proc/net interface - * to create /proc/net/dev - */ - -int dev_get_info(char *buffer, char **start, off_t offset, int length, int dummy) -{ - int len=0; - off_t begin=0; - off_t pos=0; - int size; - - struct device *dev; - - - size = sprintf(buffer, - "Inter-| Receive | Transmit\n" - " face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed\n"); - - pos+=size; - len+=size; - - - for (dev = dev_base; dev != NULL; dev = dev->next) - { - size = sprintf_stats(buffer+len, dev); - len+=size; - pos=begin+len; - - if(posoffset+length) - break; - } - - *start=buffer+(offset-begin); /* Start of wanted data */ - len-=(offset-begin); /* Start slop */ - if(len>length) - len=length; /* Ending slop */ - return len; -} - -static int dev_proc_stats(char *buffer, char **start, off_t offset, - int length, int *eof, void *data) -{ - int len; - - len = sprintf(buffer, "%08x %08x %08x %08x %08x\n", - atomic_read(&netdev_rx_dropped), -#ifdef CONFIG_NET_HW_FLOWCONTROL - netdev_throttle_events, -#else - 0, -#endif -#ifdef CONFIG_NET_FASTROUTE - dev_fastroute_stat.hits, - dev_fastroute_stat.succeed, - dev_fastroute_stat.deferred -#else - 0, 0, 0 -#endif - ); - - len -= offset; - - if (len > length) - len = length; - if(len < 0) - len = 0; - - *start = buffer + offset; - *eof = 1; - - return len; -} - -#endif /* CONFIG_PROC_FS */ - - -#ifdef CONFIG_NET_RADIO -#ifdef CONFIG_PROC_FS - -/* - * Print one entry of /proc/net/wireless - * This is a clone of /proc/net/dev (just above) - */ -static int sprintf_wireless_stats(char *buffer, struct device *dev) -{ - /* Get stats from the driver */ - struct iw_statistics *stats = (dev->get_wireless_stats ? - dev->get_wireless_stats(dev) : - (struct iw_statistics *) NULL); - int size; - - if(stats != (struct iw_statistics *) NULL) - { - size = sprintf(buffer, - "%6s: %04x %3d%c %3d%c %3d%c %6d %6d %6d\n", - dev->name, - stats->status, - stats->qual.qual, - stats->qual.updated & 1 ? '.' : ' ', - stats->qual.level, - stats->qual.updated & 2 ? '.' : ' ', - stats->qual.noise, - stats->qual.updated & 4 ? '.' : ' ', - stats->discard.nwid, - stats->discard.code, - stats->discard.misc); - stats->qual.updated = 0; - } - else - size = 0; - - return size; -} - -/* - * Print info for /proc/net/wireless (print all entries) - * This is a clone of /proc/net/dev (just above) - */ -int dev_get_wireless_info(char * buffer, char **start, off_t offset, - int length, int dummy) -{ - int len = 0; - off_t begin = 0; - off_t pos = 0; - int size; - - struct device * dev; - - size = sprintf(buffer, - "Inter-| sta-| Quality | Discarded packets\n" - " face | tus | link level noise | nwid crypt misc\n" - ); - - pos+=size; - len+=size; - - for(dev = dev_base; dev != NULL; dev = dev->next) - { - size = sprintf_wireless_stats(buffer+len, dev); - len+=size; - pos=begin+len; - - if(pos < offset) - { - len=0; - begin=pos; - } - if(pos > offset + length) - break; - } - - *start = buffer + (offset - begin); /* Start of wanted data */ - len -= (offset - begin); /* Start slop */ - if(len > length) - len = length; /* Ending slop */ - - return len; -} -#endif /* CONFIG_PROC_FS */ -#endif /* CONFIG_NET_RADIO */ - -void dev_set_promiscuity(struct device *dev, int inc) -{ - unsigned short old_flags = dev->flags; - - dev->flags |= IFF_PROMISC; - if ((dev->promiscuity += inc) == 0) - dev->flags &= ~IFF_PROMISC; - if (dev->flags^old_flags) { -#ifdef CONFIG_NET_FASTROUTE - if (dev->flags&IFF_PROMISC) { - netdev_fastroute_obstacles++; - dev_clear_fastroute(dev); - } else - netdev_fastroute_obstacles--; -#endif - dev_mc_upload(dev); - printk(KERN_INFO "device %s %s promiscuous mode\n", - dev->name, (dev->flags&IFF_PROMISC) ? "entered" : "left"); - } -} - -void dev_set_allmulti(struct device *dev, int inc) -{ - unsigned short old_flags = dev->flags; - - dev->flags |= IFF_ALLMULTI; - if ((dev->allmulti += inc) == 0) - dev->flags &= ~IFF_ALLMULTI; - if (dev->flags^old_flags) - dev_mc_upload(dev); -} - -int dev_change_flags(struct device *dev, unsigned flags) -{ - int ret; - int old_flags = dev->flags; - - /* - * Set the flags on our device. - */ - - dev->flags = (flags & (IFF_DEBUG|IFF_NOTRAILERS|IFF_RUNNING|IFF_NOARP| - IFF_SLAVE|IFF_MASTER|IFF_DYNAMIC| - IFF_MULTICAST|IFF_PORTSEL|IFF_AUTOMEDIA)) | - (dev->flags & (IFF_UP|IFF_VOLATILE|IFF_PROMISC|IFF_ALLMULTI)); - - /* - * Load in the correct multicast list now the flags have changed. - */ - - dev_mc_upload(dev); - - /* - * Have we downed the interface. We handle IFF_UP ourselves - * according to user attempts to set it, rather than blindly - * setting it. - */ - - ret = 0; - if ((old_flags^flags)&IFF_UP) /* Bit is different ? */ - { - ret = ((old_flags & IFF_UP) ? dev_close : dev_open)(dev); - - if (ret == 0) - dev_mc_upload(dev); - } - - if (dev->flags&IFF_UP && - ((old_flags^dev->flags)&~(IFF_UP|IFF_RUNNING|IFF_PROMISC|IFF_ALLMULTI|IFF_VOLATILE))) - notifier_call_chain(&netdev_chain, NETDEV_CHANGE, dev); - - if ((flags^dev->gflags)&IFF_PROMISC) { - int inc = (flags&IFF_PROMISC) ? +1 : -1; - dev->gflags ^= IFF_PROMISC; - dev_set_promiscuity(dev, inc); - } - - /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI - is important. Some (broken) drivers set IFF_PROMISC, when - IFF_ALLMULTI is requested not asking us and not reporting. - */ - if ((flags^dev->gflags)&IFF_ALLMULTI) { - int inc = (flags&IFF_ALLMULTI) ? +1 : -1; - dev->gflags ^= IFF_ALLMULTI; - dev_set_allmulti(dev, inc); - } - - return ret; -} - -#ifdef _HURD_ - -#define dev_ioctl 0 - -#else - -/* - * Perform the SIOCxIFxxx calls. - */ - -static int dev_ifsioc(struct ifreq *ifr, unsigned int cmd) -{ - struct device *dev; - int err; - - if ((dev = dev_get(ifr->ifr_name)) == NULL) - return -ENODEV; - - switch(cmd) - { - case SIOCGIFFLAGS: /* Get interface flags */ - ifr->ifr_flags = (dev->flags&~(IFF_PROMISC|IFF_ALLMULTI)) - |(dev->gflags&(IFF_PROMISC|IFF_ALLMULTI)); - return 0; - - case SIOCSIFFLAGS: /* Set interface flags */ - return dev_change_flags(dev, ifr->ifr_flags); - - case SIOCGIFMETRIC: /* Get the metric on the interface (currently unused) */ - ifr->ifr_metric = 0; - return 0; - - case SIOCSIFMETRIC: /* Set the metric on the interface (currently unused) */ - return -EOPNOTSUPP; - - case SIOCGIFMTU: /* Get the MTU of a device */ - ifr->ifr_mtu = dev->mtu; - return 0; - - case SIOCSIFMTU: /* Set the MTU of a device */ - if (ifr->ifr_mtu == dev->mtu) - return 0; - - /* - * MTU must be positive. - */ - - if (ifr->ifr_mtu<=0) - return -EINVAL; - - if (dev->change_mtu) - err = dev->change_mtu(dev, ifr->ifr_mtu); - else { - dev->mtu = ifr->ifr_mtu; - err = 0; - } - if (!err && dev->flags&IFF_UP) - notifier_call_chain(&netdev_chain, NETDEV_CHANGEMTU, dev); - return err; - - case SIOCGIFHWADDR: - memcpy(ifr->ifr_hwaddr.sa_data,dev->dev_addr, MAX_ADDR_LEN); - ifr->ifr_hwaddr.sa_family=dev->type; - return 0; - - case SIOCSIFHWADDR: - if(dev->set_mac_address==NULL) - return -EOPNOTSUPP; - if(ifr->ifr_hwaddr.sa_family!=dev->type) - return -EINVAL; - err=dev->set_mac_address(dev,&ifr->ifr_hwaddr); - if (!err) - notifier_call_chain(&netdev_chain, NETDEV_CHANGEADDR, dev); - return err; - - case SIOCSIFHWBROADCAST: - if(ifr->ifr_hwaddr.sa_family!=dev->type) - return -EINVAL; - memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, MAX_ADDR_LEN); - notifier_call_chain(&netdev_chain, NETDEV_CHANGEADDR, dev); - return 0; - - case SIOCGIFMAP: - ifr->ifr_map.mem_start=dev->mem_start; - ifr->ifr_map.mem_end=dev->mem_end; - ifr->ifr_map.base_addr=dev->base_addr; - ifr->ifr_map.irq=dev->irq; - ifr->ifr_map.dma=dev->dma; - ifr->ifr_map.port=dev->if_port; - return 0; - - case SIOCSIFMAP: - if (dev->set_config) - return dev->set_config(dev,&ifr->ifr_map); - return -EOPNOTSUPP; - - case SIOCADDMULTI: - if(dev->set_multicast_list==NULL || - ifr->ifr_hwaddr.sa_family!=AF_UNSPEC) - return -EINVAL; - dev_mc_add(dev,ifr->ifr_hwaddr.sa_data, dev->addr_len, 1); - return 0; - - case SIOCDELMULTI: - if(dev->set_multicast_list==NULL || - ifr->ifr_hwaddr.sa_family!=AF_UNSPEC) - return -EINVAL; - dev_mc_delete(dev,ifr->ifr_hwaddr.sa_data,dev->addr_len, 1); - return 0; - - case SIOCGIFINDEX: - ifr->ifr_ifindex = dev->ifindex; - return 0; - - case SIOCGIFTXQLEN: - ifr->ifr_qlen = dev->tx_queue_len; - return 0; - - case SIOCSIFTXQLEN: - if(ifr->ifr_qlen<0) - return -EINVAL; - dev->tx_queue_len = ifr->ifr_qlen; - return 0; - - case SIOCSIFNAME: - if (dev->flags&IFF_UP) - return -EBUSY; - if (dev_get(ifr->ifr_newname)) - return -EEXIST; - memcpy(dev->name, ifr->ifr_newname, IFNAMSIZ); - dev->name[IFNAMSIZ-1] = 0; - notifier_call_chain(&netdev_chain, NETDEV_CHANGENAME, dev); - return 0; - - /* - * Unknown or private ioctl - */ - - default: - if(cmd >= SIOCDEVPRIVATE && - cmd <= SIOCDEVPRIVATE + 15) { - if (dev->do_ioctl) - return dev->do_ioctl(dev, ifr, cmd); - return -EOPNOTSUPP; - } - -#ifdef CONFIG_NET_RADIO - if(cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) { - if (dev->do_ioctl) - return dev->do_ioctl(dev, ifr, cmd); - return -EOPNOTSUPP; - } -#endif /* CONFIG_NET_RADIO */ - - } - return -EINVAL; -} - - -/* - * This function handles all "interface"-type I/O control requests. The actual - * 'doing' part of this is dev_ifsioc above. - */ - -int dev_ioctl(unsigned int cmd, void *arg) -{ - struct ifreq ifr; - int ret; - char *colon; - - /* One special case: SIOCGIFCONF takes ifconf argument - and requires shared lock, because it sleeps writing - to user space. - */ - - if (cmd == SIOCGIFCONF) { - rtnl_shlock(); - ret = dev_ifconf((char *) arg); - rtnl_shunlock(); - return ret; - } - if (cmd == SIOCGIFNAME) { - return dev_ifname((struct ifreq *)arg); - } - - if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) - return -EFAULT; - - ifr.ifr_name[IFNAMSIZ-1] = 0; - - colon = strchr(ifr.ifr_name, ':'); - if (colon) - *colon = 0; - - /* - * See which interface the caller is talking about. - */ - - switch(cmd) - { - /* - * These ioctl calls: - * - can be done by all. - * - atomic and do not require locking. - * - return a value - */ - - case SIOCGIFFLAGS: - case SIOCGIFMETRIC: - case SIOCGIFMTU: - case SIOCGIFHWADDR: - case SIOCGIFSLAVE: - case SIOCGIFMAP: - case SIOCGIFINDEX: - case SIOCGIFTXQLEN: - dev_load(ifr.ifr_name); - ret = dev_ifsioc(&ifr, cmd); - if (!ret) { - if (colon) - *colon = ':'; - if (copy_to_user(arg, &ifr, sizeof(struct ifreq))) - return -EFAULT; - } - return ret; - - /* - * These ioctl calls: - * - require superuser power. - * - require strict serialization. - * - do not return a value - */ - - case SIOCSIFFLAGS: - case SIOCSIFMETRIC: - case SIOCSIFMTU: - case SIOCSIFMAP: - case SIOCSIFHWADDR: - case SIOCSIFSLAVE: - case SIOCADDMULTI: - case SIOCDELMULTI: - case SIOCSIFHWBROADCAST: - case SIOCSIFTXQLEN: - case SIOCSIFNAME: - if (!capable(CAP_NET_ADMIN)) - return -EPERM; - dev_load(ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(&ifr, cmd); - rtnl_unlock(); - return ret; - - case SIOCGIFMEM: - /* Get the per device memory space. We can add this but currently - do not support it */ - case SIOCSIFMEM: - /* Set the per device memory buffer space. Not applicable in our case */ - case SIOCSIFLINK: - return -EINVAL; - - /* - * Unknown or private ioctl. - */ - - default: - if (cmd >= SIOCDEVPRIVATE && - cmd <= SIOCDEVPRIVATE + 15) { - dev_load(ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(&ifr, cmd); - rtnl_unlock(); - if (!ret && copy_to_user(arg, &ifr, sizeof(struct ifreq))) - return -EFAULT; - return ret; - } -#ifdef CONFIG_NET_RADIO - if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) { - dev_load(ifr.ifr_name); - if (IW_IS_SET(cmd)) { - if (!suser()) - return -EPERM; - rtnl_lock(); - } - ret = dev_ifsioc(&ifr, cmd); - if (IW_IS_SET(cmd)) - rtnl_unlock(); - if (!ret && IW_IS_GET(cmd) && - copy_to_user(arg, &ifr, sizeof(struct ifreq))) - return -EFAULT; - return ret; - } -#endif /* CONFIG_NET_RADIO */ - return -EINVAL; - } -} - -#endif - -int dev_new_index(void) -{ - static int ifindex; - for (;;) { - if (++ifindex <= 0) - ifindex=1; - if (dev_get_by_index(ifindex) == NULL) - return ifindex; - } -} - -static int dev_boot_phase = 1; - - -int register_netdevice(struct device *dev) -{ - struct device *d, **dp; - - if (dev_boot_phase) { - /* This is NOT bug, but I am not sure, that all the - devices, initialized before netdev module is started - are sane. - - Now they are chained to device boot list - and probed later. If a module is initialized - before netdev, but assumes that dev->init - is really called by register_netdev(), it will fail. - - So that this message should be printed for a while. - */ - printk(KERN_INFO "early initialization of device %s is deferred\n", dev->name); - - /* Check for existence, and append to tail of chain */ - for (dp=&dev_base; (d=*dp) != NULL; dp=&d->next) { - if (d == dev || strcmp(d->name, dev->name) == 0) - return -EEXIST; - } - dev->next = NULL; - *dp = dev; - return 0; - } - - dev->iflink = -1; - - /* Init, if this function is available */ - if (dev->init && dev->init(dev) != 0) - return -EIO; - - /* Check for existence, and append to tail of chain */ - for (dp=&dev_base; (d=*dp) != NULL; dp=&d->next) { - if (d == dev || strcmp(d->name, dev->name) == 0) - return -EEXIST; - } - dev->next = NULL; - dev_init_scheduler(dev); - dev->ifindex = dev_new_index(); - if (dev->iflink == -1) - dev->iflink = dev->ifindex; - *dp = dev; - - /* Notify protocols, that a new device appeared. */ - notifier_call_chain(&netdev_chain, NETDEV_REGISTER, dev); - - return 0; -} - -int unregister_netdevice(struct device *dev) -{ - struct device *d, **dp; - - if (dev_boot_phase == 0) { - /* If device is running, close it. - It is very bad idea, really we should - complain loudly here, but random hackery - in linux/drivers/net likes it. - */ - if (dev->flags & IFF_UP) - dev_close(dev); - -#ifdef CONFIG_NET_FASTROUTE - dev_clear_fastroute(dev); -#endif - - /* Shutdown queueing discipline. */ - dev_shutdown(dev); - - /* Notify protocols, that we are about to destroy - this device. They should clean all the things. - */ - notifier_call_chain(&netdev_chain, NETDEV_UNREGISTER, dev); - - /* - * Flush the multicast chain - */ - dev_mc_discard(dev); - - /* To avoid pointers looking to nowhere, - we wait for end of critical section */ - dev_lock_wait(); - } - - /* And unlink it from device chain. */ - for (dp = &dev_base; (d=*dp) != NULL; dp=&d->next) { - if (d == dev) { - *dp = d->next; - synchronize_bh(); - d->next = NULL; - - if (dev->destructor) - dev->destructor(dev); - return 0; - } - } - return -ENODEV; -} - - -/* - * Initialize the DEV module. At boot time this walks the device list and - * unhooks any devices that fail to initialise (normally hardware not - * present) and leaves us with a valid list of present and active devices. - * - */ -extern int lance_init(void); -extern int bpq_init(void); -extern int scc_init(void); -extern void sdla_setup(void); -extern void sdla_c_setup(void); -extern void dlci_setup(void); -extern int dmascc_init(void); -extern int sm_init(void); - -extern int baycom_ser_fdx_init(void); -extern int baycom_ser_hdx_init(void); -extern int baycom_par_init(void); - -extern int lapbeth_init(void); -extern int comx_init(void); -extern void arcnet_init(void); -extern void ip_auto_config(void); -#ifdef CONFIG_8xx -extern int cpm_enet_init(void); -#endif /* CONFIG_8xx */ - -#ifdef CONFIG_PROC_FS -static struct proc_dir_entry proc_net_dev = { - PROC_NET_DEV, 3, "dev", - S_IFREG | S_IRUGO, 1, 0, 0, - 0, &proc_net_inode_operations, - dev_get_info -}; -#endif - -#ifdef CONFIG_NET_RADIO -#ifdef CONFIG_PROC_FS -static struct proc_dir_entry proc_net_wireless = { - PROC_NET_WIRELESS, 8, "wireless", - S_IFREG | S_IRUGO, 1, 0, 0, - 0, &proc_net_inode_operations, - dev_get_wireless_info -}; -#endif /* CONFIG_PROC_FS */ -#endif /* CONFIG_NET_RADIO */ - -__initfunc(int net_dev_init(void)) -{ - struct device *dev, **dp; - -#ifdef CONFIG_NET_SCHED - pktsched_init(); -#endif - - /* - * Initialise the packet receive queue. - */ - - skb_queue_head_init(&backlog); - - /* - * The bridge has to be up before the devices - */ - -#ifdef CONFIG_BRIDGE - br_init(); -#endif - - /* - * This is Very Ugly(tm). - * - * Some devices want to be initialized early.. - */ - -#if defined(CONFIG_SCC) - scc_init(); -#endif -#if defined(CONFIG_DMASCC) - dmascc_init(); -#endif -#if defined(CONFIG_BPQETHER) - bpq_init(); -#endif -#if defined(CONFIG_DLCI) - dlci_setup(); -#endif -#if defined(CONFIG_SDLA) - sdla_c_setup(); -#endif -#if defined(CONFIG_BAYCOM_PAR) - baycom_par_init(); -#endif -#if defined(CONFIG_BAYCOM_SER_FDX) - baycom_ser_fdx_init(); -#endif -#if defined(CONFIG_BAYCOM_SER_HDX) - baycom_ser_hdx_init(); -#endif -#if defined(CONFIG_SOUNDMODEM) - sm_init(); -#endif -#if defined(CONFIG_LAPBETHER) - lapbeth_init(); -#endif -#if defined(CONFIG_PLIP) - plip_init(); -#endif -#if defined(CONFIG_ARCNET) - arcnet_init(); -#endif -#if defined(CONFIG_8xx) - cpm_enet_init(); -#endif -#if defined(CONFIG_COMX) - comx_init(); -#endif - /* - * SLHC if present needs attaching so other people see it - * even if not opened. - */ - -#ifdef CONFIG_INET -#if (defined(CONFIG_SLIP) && defined(CONFIG_SLIP_COMPRESSED)) \ - || defined(CONFIG_PPP) \ - || (defined(CONFIG_ISDN) && defined(CONFIG_ISDN_PPP)) - slhc_install(); -#endif -#endif - -#ifdef CONFIG_NET_PROFILE - net_profile_init(); - NET_PROFILE_REGISTER(dev_queue_xmit); - NET_PROFILE_REGISTER(net_bh); -#if 0 - NET_PROFILE_REGISTER(net_bh_skb); -#endif -#endif - /* - * Add the devices. - * If the call to dev->init fails, the dev is removed - * from the chain disconnecting the device until the - * next reboot. - */ - - dp = &dev_base; - while ((dev = *dp) != NULL) - { - dev->iflink = -1; - if (dev->init && dev->init(dev)) - { - /* - * It failed to come up. Unhook it. - */ - *dp = dev->next; - synchronize_bh(); - } - else - { - dp = &dev->next; - dev->ifindex = dev_new_index(); - if (dev->iflink == -1) - dev->iflink = dev->ifindex; - dev_init_scheduler(dev); - } - } - -#ifdef CONFIG_PROC_FS - proc_net_register(&proc_net_dev); - { - struct proc_dir_entry *ent = create_proc_entry("net/dev_stat", 0, 0); - ent->read_proc = dev_proc_stats; - } -#endif - -#ifdef CONFIG_NET_RADIO -#ifdef CONFIG_PROC_FS - proc_net_register(&proc_net_wireless); -#endif /* CONFIG_PROC_FS */ -#endif /* CONFIG_NET_RADIO */ - - init_bh(NET_BH, net_bh); - - dev_boot_phase = 0; - - dev_mcast_init(); - -#ifdef CONFIG_BRIDGE - /* - * Register any statically linked ethernet devices with the bridge - */ - br_spacedevice_register(); -#endif - -#ifdef CONFIG_IP_PNP - ip_auto_config(); -#endif - - return 0; -} diff --git a/pfinet.old/linux-src/net/ipv4/ip_output.c~ b/pfinet.old/linux-src/net/ipv4/ip_output.c~ deleted file mode 100644 index 89272d6b..00000000 --- a/pfinet.old/linux-src/net/ipv4/ip_output.c~ +++ /dev/null @@ -1,1000 +0,0 @@ -/* - * INET An implementation of the TCP/IP protocol suite for the LINUX - * operating system. INET is implemented using the BSD Socket - * interface as the means of communication with the user level. - * - * The Internet Protocol (IP) output module. - * - * Version: $Id: ip_output.c,v 1.67.2.1 1999/09/07 02:25:23 davem Exp $ - * - * Authors: Ross Biro, - * Fred N. van Kempen, - * Donald Becker, - * Alan Cox, - * Richard Underwood - * Stefan Becker, - * Jorge Cwik, - * Arnt Gulbrandsen, - * - * See ip_input.c for original log - * - * Fixes: - * Alan Cox : Missing nonblock feature in ip_build_xmit. - * Mike Kilburn : htons() missing in ip_build_xmit. - * Bradford Johnson: Fix faulty handling of some frames when - * no route is found. - * Alexander Demenshin: Missing sk/skb free in ip_queue_xmit - * (in case if packet not accepted by - * output firewall rules) - * Mike McLagan : Routing by source - * Alexey Kuznetsov: use new route cache - * Andi Kleen: Fix broken PMTU recovery and remove - * some redundant tests. - * Vitaly E. Lavrov : Transparent proxy revived after year coma. - * Andi Kleen : Replace ip_reply with ip_send_reply. - * Andi Kleen : Split fast and slow ip_build_xmit path - * for decreased register pressure on x86 - * and more readibility. - * Marc Boucher : When call_out_firewall returns FW_QUEUE, - * silently drop skb instead of failing with -EPERM. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * Shall we try to damage output packets if routing dev changes? - */ - -int sysctl_ip_dynaddr = 0; - - -int ip_id_count = 0; - -/* Generate a checksum for an outgoing IP datagram. */ -__inline__ void ip_send_check(struct iphdr *iph) -{ - iph->check = 0; - iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); -} - -/* - * Add an ip header to a skbuff and send it out. - */ -void ip_build_and_send_pkt(struct sk_buff *skb, struct sock *sk, - u32 saddr, u32 daddr, struct ip_options *opt) -{ - struct rtable *rt = (struct rtable *)skb->dst; - struct iphdr *iph; - struct device *dev; - - /* Build the IP header. */ - if (opt) - iph=(struct iphdr *)skb_push(skb,sizeof(struct iphdr) + opt->optlen); - else - iph=(struct iphdr *)skb_push(skb,sizeof(struct iphdr)); - - iph->version = 4; - iph->ihl = 5; - iph->tos = sk->ip_tos; - iph->frag_off = 0; - if (ip_dont_fragment(sk, &rt->u.dst)) - iph->frag_off |= htons(IP_DF); - iph->ttl = sk->ip_ttl; - iph->daddr = rt->rt_dst; - iph->saddr = rt->rt_src; - iph->protocol = sk->protocol; - iph->tot_len = htons(skb->len); - iph->id = htons(ip_id_count++); - skb->nh.iph = iph; - - if (opt && opt->optlen) { - iph->ihl += opt->optlen>>2; - ip_options_build(skb, opt, daddr, rt, 0); - } - - dev = rt->u.dst.dev; - -#ifdef CONFIG_FIREWALL - /* Now we have no better mechanism to notify about error. */ - switch (call_out_firewall(PF_INET, dev, iph, NULL, &skb)) { - case FW_REJECT: - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); - /* Fall thru... */ - case FW_BLOCK: - case FW_QUEUE: - kfree_skb(skb); - return; - } -#endif - - ip_send_check(iph); - - /* Send it out. */ - skb->dst->output(skb); - return; -} - -int __ip_finish_output(struct sk_buff *skb) -{ - return ip_finish_output(skb); -} - -int ip_mc_output(struct sk_buff *skb) -{ - struct sock *sk = skb->sk; - struct rtable *rt = (struct rtable*)skb->dst; - struct device *dev = rt->u.dst.dev; - - /* - * If the indicated interface is up and running, send the packet. - */ - - ip_statistics.IpOutRequests++; -#ifdef CONFIG_IP_ROUTE_NAT - if (rt->rt_flags & RTCF_NAT) - ip_do_nat(skb); -#endif - - skb->dev = dev; - skb->protocol = __constant_htons(ETH_P_IP); - - /* - * Multicasts are looped back for other local users - */ - - if (rt->rt_flags&RTCF_MULTICAST && (!sk || sk->ip_mc_loop)) { -#ifdef CONFIG_IP_MROUTE - /* Small optimization: do not loopback not local frames, - which returned after forwarding; they will be dropped - by ip_mr_input in any case. - Note, that local frames are looped back to be delivered - to local recipients. - - This check is duplicated in ip_mr_input at the moment. - */ - if ((rt->rt_flags&RTCF_LOCAL) || !(IPCB(skb)->flags&IPSKB_FORWARDED)) -#endif - dev_loopback_xmit(skb); - - /* Multicasts with ttl 0 must not go beyond the host */ - - if (skb->nh.iph->ttl == 0) { - kfree_skb(skb); - return 0; - } - } - - if (rt->rt_flags&RTCF_BROADCAST) - dev_loopback_xmit(skb); - - return ip_finish_output(skb); -} - -int ip_output(struct sk_buff *skb) -{ - char *str1 = "pfinet ip_output check point 1\n"; - char *str2 = "pfinet ip_output check point 2\n"; - int stderr_fd = fileno (stderr); - int ret; - -#ifdef CONFIG_IP_ROUTE_NAT - struct rtable *rt = (struct rtable*)skb->dst; -#endif - - ip_statistics.IpOutRequests++; - -#ifdef CONFIG_IP_ROUTE_NAT - if (rt->rt_flags&RTCF_NAT) - ip_do_nat(skb); -#endif - - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - ret = ip_finish_output(skb); - return ret; -} - -/* Queues a packet to be sent, and starts the transmitter if necessary. - * This routine also needs to put in the total length and compute the - * checksum. We use to do this in two stages, ip_build_header() then - * this, but that scheme created a mess when routes disappeared etc. - * So we do it all here, and the TCP send engine has been changed to - * match. (No more unroutable FIN disasters, etc. wheee...) This will - * most likely make other reliable transport layers above IP easier - * to implement under Linux. - */ -void ip_queue_xmit(struct sk_buff *skb) -{ - struct sock *sk = skb->sk; - struct ip_options *opt = sk->opt; - struct rtable *rt; - struct device *dev; - struct iphdr *iph; - unsigned int tot_len; - - /* Make sure we can route this packet. */ - rt = (struct rtable *) sk->dst_cache; - if(rt == NULL || rt->u.dst.obsolete) { - u32 daddr; - - sk->dst_cache = NULL; - ip_rt_put(rt); - - /* Use correct destination address if we have options. */ - daddr = sk->daddr; - if(opt && opt->srr) - daddr = opt->faddr; - - /* If this fails, retransmit mechanism of transport layer will - * keep trying until route appears or the connection times itself - * out. - */ - if(ip_route_output(&rt, daddr, sk->saddr, - RT_TOS(sk->ip_tos) | RTO_CONN | sk->localroute, - sk->bound_dev_if)) - goto drop; - sk->dst_cache = &rt->u.dst; - } - if(opt && opt->is_strictroute && rt->rt_dst != rt->rt_gateway) - goto no_route; - - /* We have a route, so grab a reference. */ - skb->dst = dst_clone(sk->dst_cache); - - /* OK, we know where to send it, allocate and build IP header. */ - iph = (struct iphdr *) skb_push(skb, sizeof(struct iphdr) + (opt ? opt->optlen : 0)); - iph->version = 4; - iph->ihl = 5; - iph->tos = sk->ip_tos; - iph->frag_off = 0; - iph->ttl = sk->ip_ttl; - iph->daddr = rt->rt_dst; - iph->saddr = rt->rt_src; - iph->protocol = sk->protocol; - skb->nh.iph = iph; - /* Transport layer set skb->h.foo itself. */ - - if(opt && opt->optlen) { - iph->ihl += opt->optlen >> 2; - ip_options_build(skb, opt, sk->daddr, rt, 0); - } - - tot_len = skb->len; - iph->tot_len = htons(tot_len); - iph->id = htons(ip_id_count++); - - dev = rt->u.dst.dev; - -#ifdef CONFIG_FIREWALL - /* Now we have no better mechanism to notify about error. */ - switch (call_out_firewall(PF_INET, dev, iph, NULL, &skb)) { - case FW_REJECT: - start_bh_atomic(); - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); - end_bh_atomic(); - /* Fall thru... */ - case FW_BLOCK: - case FW_QUEUE: - goto drop; - } -#endif - - /* This can happen when the transport layer has segments queued - * with a cached route, and by the time we get here things are - * re-routed to a device with a different MTU than the original - * device. Sick, but we must cover it. - */ - if (skb_headroom(skb) < dev->hard_header_len && dev->hard_header) { - struct sk_buff *skb2; - - skb2 = skb_realloc_headroom(skb, (dev->hard_header_len + 15) & ~15); - kfree_skb(skb); - if (skb2 == NULL) - return; - if (sk) - skb_set_owner_w(skb2, sk); - skb = skb2; - iph = skb->nh.iph; - } - - /* Do we need to fragment. Again this is inefficient. We - * need to somehow lock the original buffer and use bits of it. - */ - if (tot_len > rt->u.dst.pmtu) - goto fragment; - - if (ip_dont_fragment(sk, &rt->u.dst)) - iph->frag_off |= __constant_htons(IP_DF); - - /* Add an IP checksum. */ - ip_send_check(iph); - - skb->priority = sk->priority; - skb->dst->output(skb); - return; - -fragment: - if (ip_dont_fragment(sk, &rt->u.dst) && - tot_len > (iph->ihl<<2) + sizeof(struct tcphdr)+16) { - /* Reject packet ONLY if TCP might fragment - it itself, if were careful enough. - Test is not precise (f.e. it does not take sacks - into account). Actually, tcp should make it. --ANK (980801) - */ - iph->frag_off |= __constant_htons(IP_DF); - NETDEBUG(printk(KERN_DEBUG "sending pkt_too_big to self\n")); - - /* icmp_send is not reenterable, so that bh_atomic... --ANK */ - start_bh_atomic(); - icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED, - htonl(rt->u.dst.pmtu)); - end_bh_atomic(); - goto drop; - } - ip_fragment(skb, skb->dst->output); - return; - -no_route: - sk->dst_cache = NULL; - ip_rt_put(rt); - ip_statistics.IpOutNoRoutes++; - /* Fall through... */ -drop: - kfree_skb(skb); -} - -/* - * Build and send a packet, with as little as one copy - * - * Doesn't care much about ip options... option length can be - * different for fragment at 0 and other fragments. - * - * Note that the fragment at the highest offset is sent first, - * so the getfrag routine can fill in the TCP/UDP checksum header - * field in the last fragment it sends... actually it also helps - * the reassemblers, they can put most packets in at the head of - * the fragment queue, and they know the total size in advance. This - * last feature will measurably improve the Linux fragment handler one - * day. - * - * The callback has five args, an arbitrary pointer (copy of frag), - * the source IP address (may depend on the routing table), the - * destination address (char *), the offset to copy from, and the - * length to be copied. - */ - -int ip_build_xmit_slow(struct sock *sk, - int getfrag (const void *, - char *, - unsigned int, - unsigned int), - const void *frag, - unsigned length, - struct ipcm_cookie *ipc, - struct rtable *rt, - int flags) -{ - unsigned int fraglen, maxfraglen, fragheaderlen; - int err; - int offset, mf; - int mtu; - unsigned short id; - - int hh_len = (rt->u.dst.dev->hard_header_len + 15)&~15; - int nfrags=0; - struct ip_options *opt = ipc->opt; - int df = 0; - - mtu = rt->u.dst.pmtu; - if (ip_dont_fragment(sk, &rt->u.dst)) - df = htons(IP_DF); - - length -= sizeof(struct iphdr); - - if (opt) { - fragheaderlen = sizeof(struct iphdr) + opt->optlen; - maxfraglen = ((mtu-sizeof(struct iphdr)-opt->optlen) & ~7) + fragheaderlen; - } else { - fragheaderlen = sizeof(struct iphdr); - - /* - * Fragheaderlen is the size of 'overhead' on each buffer. Now work - * out the size of the frames to send. - */ - - maxfraglen = ((mtu-sizeof(struct iphdr)) & ~7) + fragheaderlen; - } - - if (length + fragheaderlen > 0xFFFF) { - ip_local_error(sk, EMSGSIZE, rt->rt_dst, sk->dport, mtu); - return -EMSGSIZE; - } - - /* - * Start at the end of the frame by handling the remainder. - */ - - offset = length - (length % (maxfraglen - fragheaderlen)); - - /* - * Amount of memory to allocate for final fragment. - */ - - fraglen = length - offset + fragheaderlen; - - if (length-offset==0) { - fraglen = maxfraglen; - offset -= maxfraglen-fragheaderlen; - } - - - /* - * The last fragment will not have MF (more fragments) set. - */ - - mf = 0; - - /* - * Don't fragment packets for path mtu discovery. - */ - - if (offset > 0 && df) { - ip_local_error(sk, EMSGSIZE, rt->rt_dst, sk->dport, mtu); - return(-EMSGSIZE); - } - - /* - * Lock the device lists. - */ - - dev_lock_list(); - - /* - * Get an identifier - */ - - id = htons(ip_id_count++); - - /* - * Begin outputting the bytes. - */ - - do { - char *data; - struct sk_buff * skb; - - /* - * Get the memory we require with some space left for alignment. - */ - - skb = sock_alloc_send_skb(sk, fraglen+hh_len+15, 0, flags&MSG_DONTWAIT, &err); - if (skb == NULL) - goto error; - - /* - * Fill in the control structures - */ - - skb->priority = sk->priority; - skb->dst = dst_clone(&rt->u.dst); - skb_reserve(skb, hh_len); - - /* - * Find where to start putting bytes. - */ - - data = skb_put(skb, fraglen); - skb->nh.iph = (struct iphdr *)data; - - /* - * Only write IP header onto non-raw packets - */ - - { - struct iphdr *iph = (struct iphdr *)data; - - iph->version = 4; - iph->ihl = 5; - if (opt) { - iph->ihl += opt->optlen>>2; - ip_options_build(skb, opt, - ipc->addr, rt, offset); - } - iph->tos = sk->ip_tos; - iph->tot_len = htons(fraglen - fragheaderlen + iph->ihl*4); - iph->id = id; - iph->frag_off = htons(offset>>3); - iph->frag_off |= mf|df; - if (rt->rt_type == RTN_MULTICAST) - iph->ttl = sk->ip_mc_ttl; - else - iph->ttl = sk->ip_ttl; - iph->protocol = sk->protocol; - iph->check = 0; - iph->saddr = rt->rt_src; - iph->daddr = rt->rt_dst; - iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); - data += iph->ihl*4; - - /* - * Any further fragments will have MF set. - */ - - mf = htons(IP_MF); - } - - /* - * User data callback - */ - - if (getfrag(frag, data, offset, fraglen-fragheaderlen)) { - err = -EFAULT; - kfree_skb(skb); - goto error; - } - - offset -= (maxfraglen-fragheaderlen); - fraglen = maxfraglen; - - nfrags++; - -#ifdef CONFIG_FIREWALL - switch (call_out_firewall(PF_INET, rt->u.dst.dev, skb->nh.iph, NULL, &skb)) { - case FW_QUEUE: - kfree_skb(skb); - continue; - case FW_BLOCK: - case FW_REJECT: - kfree_skb(skb); - err = -EPERM; - goto error; - } -#endif - - err = -ENETDOWN; - if (rt->u.dst.output(skb)) - goto error; - } while (offset >= 0); - - if (nfrags>1) - ip_statistics.IpFragCreates += nfrags; - dev_unlock_list(); - return 0; - -error: - ip_statistics.IpOutDiscards++; - if (nfrags>1) - ip_statistics.IpFragCreates += nfrags; - dev_unlock_list(); - return err; -} - - -/* - * Fast path for unfragmented packets. - */ -int ip_build_xmit(struct sock *sk, - int getfrag (const void *, - char *, - unsigned int, - unsigned int), - const void *frag, - unsigned length, - struct ipcm_cookie *ipc, - struct rtable *rt, - int flags) -{ - int err; - struct sk_buff *skb; - int df; - struct iphdr *iph; - - /* - * Try the simple case first. This leaves fragmented frames, and by - * choice RAW frames within 20 bytes of maximum size(rare) to the long path - */ - - if (!sk->ip_hdrincl) { - length += sizeof(struct iphdr); - - /* - * Check for slow path. - */ - if (length > rt->u.dst.pmtu || ipc->opt != NULL) - return ip_build_xmit_slow(sk,getfrag,frag,length,ipc,rt,flags); - } else { - if (length > rt->u.dst.dev->mtu) { - ip_local_error(sk, EMSGSIZE, rt->rt_dst, sk->dport, rt->u.dst.dev->mtu); - return -EMSGSIZE; - } - } - - /* - * Do path mtu discovery if needed. - */ - df = 0; - if (ip_dont_fragment(sk, &rt->u.dst)) - df = htons(IP_DF); - - /* - * Fast path for unfragmented frames without options. - */ - { - int hh_len = (rt->u.dst.dev->hard_header_len + 15)&~15; - - skb = sock_alloc_send_skb(sk, length+hh_len+15, - 0, flags&MSG_DONTWAIT, &err); - if(skb==NULL) - goto error; - skb_reserve(skb, hh_len); - } - - skb->priority = sk->priority; - skb->dst = dst_clone(&rt->u.dst); - - skb->nh.iph = iph = (struct iphdr *)skb_put(skb, length); - - dev_lock_list(); - - if(!sk->ip_hdrincl) { - iph->version=4; - iph->ihl=5; - iph->tos=sk->ip_tos; - iph->tot_len = htons(length); - iph->id=htons(ip_id_count++); - iph->frag_off = df; - iph->ttl=sk->ip_mc_ttl; - if (rt->rt_type != RTN_MULTICAST) - iph->ttl=sk->ip_ttl; - iph->protocol=sk->protocol; - iph->saddr=rt->rt_src; - iph->daddr=rt->rt_dst; - iph->check=0; - iph->check = ip_fast_csum((unsigned char *)iph, iph->ihl); - err = getfrag(frag, ((char *)iph)+iph->ihl*4,0, length-iph->ihl*4); - } - else - err = getfrag(frag, (void *)iph, 0, length); - - dev_unlock_list(); - - if (err) - goto error_fault; - -#ifdef CONFIG_FIREWALL - switch (call_out_firewall(PF_INET, rt->u.dst.dev, iph, NULL, &skb)) { - case FW_QUEUE: - kfree_skb(skb); - return 0; - case FW_BLOCK: - case FW_REJECT: - kfree_skb(skb); - err = -EPERM; - goto error; - } -#endif - - return rt->u.dst.output(skb); - -error_fault: - err = -EFAULT; - kfree_skb(skb); -error: - ip_statistics.IpOutDiscards++; - return err; -} - - - -/* - * This IP datagram is too large to be sent in one piece. Break it up into - * smaller pieces (each of size equal to IP header plus - * a block of the data of the original IP data part) that will yet fit in a - * single device frame, and queue such a frame for sending. - * - * Yes this is inefficient, feel free to submit a quicker one. - */ - -void ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff*)) -{ - struct iphdr *iph; - unsigned char *raw; - unsigned char *ptr; - struct device *dev; - struct sk_buff *skb2; - unsigned int mtu, hlen, left, len; - int offset; - int not_last_frag; - struct rtable *rt = (struct rtable*)skb->dst; - - dev = rt->u.dst.dev; - - /* - * Point into the IP datagram header. - */ - - raw = skb->nh.raw; - iph = (struct iphdr*)raw; - - /* - * Setup starting values. - */ - - hlen = iph->ihl * 4; - left = ntohs(iph->tot_len) - hlen; /* Space per frame */ - mtu = rt->u.dst.pmtu - hlen; /* Size of data space */ - ptr = raw + hlen; /* Where to start from */ - - /* - * The protocol doesn't seem to say what to do in the case that the - * frame + options doesn't fit the mtu. As it used to fall down dead - * in this case we were fortunate it didn't happen - * - * It is impossible, because mtu>=68. --ANK (980801) - */ - -#ifdef CONFIG_NET_PARANOIA - if (mtu<8) - goto fail; -#endif - - /* - * Fragment the datagram. - */ - - offset = (ntohs(iph->frag_off) & IP_OFFSET) << 3; - not_last_frag = iph->frag_off & htons(IP_MF); - - /* - * Keep copying data until we run out. - */ - - while(left > 0) { - len = left; - /* IF: it doesn't fit, use 'mtu' - the data space left */ - if (len > mtu) - len = mtu; - /* IF: we are not sending upto and including the packet end - then align the next start on an eight byte boundary */ - if (len < left) { - len &= ~7; - } - /* - * Allocate buffer. - */ - - if ((skb2 = alloc_skb(len+hlen+dev->hard_header_len+15,GFP_ATOMIC)) == NULL) { - NETDEBUG(printk(KERN_INFO "IP: frag: no memory for new fragment!\n")); - goto fail; - } - - /* - * Set up data on packet - */ - - skb2->pkt_type = skb->pkt_type; - skb2->priority = skb->priority; - skb_reserve(skb2, (dev->hard_header_len+15)&~15); - skb_put(skb2, len + hlen); - skb2->nh.raw = skb2->data; - skb2->h.raw = skb2->data + hlen; - - /* - * Charge the memory for the fragment to any owner - * it might possess - */ - - if (skb->sk) - skb_set_owner_w(skb2, skb->sk); - skb2->dst = dst_clone(skb->dst); - - /* - * Copy the packet header into the new buffer. - */ - - memcpy(skb2->nh.raw, raw, hlen); - - /* - * Copy a block of the IP datagram. - */ - memcpy(skb2->h.raw, ptr, len); - left -= len; - - /* - * Fill in the new header fields. - */ - iph = skb2->nh.iph; - iph->frag_off = htons((offset >> 3)); - - /* ANK: dirty, but effective trick. Upgrade options only if - * the segment to be fragmented was THE FIRST (otherwise, - * options are already fixed) and make it ONCE - * on the initial skb, so that all the following fragments - * will inherit fixed options. - */ - if (offset == 0) - ip_options_fragment(skb); - - /* - * Added AC : If we are fragmenting a fragment that's not the - * last fragment then keep MF on each bit - */ - if (left > 0 || not_last_frag) - iph->frag_off |= htons(IP_MF); - ptr += len; - offset += len; - - /* - * Put this fragment into the sending queue. - */ - - ip_statistics.IpFragCreates++; - - iph->tot_len = htons(len + hlen); - - ip_send_check(iph); - - output(skb2); - } - kfree_skb(skb); - ip_statistics.IpFragOKs++; - return; - -fail: - kfree_skb(skb); - ip_statistics.IpFragFails++; -} - -/* - * Fetch data from kernel space and fill in checksum if needed. - */ -static int ip_reply_glue_bits(const void *dptr, char *to, unsigned int offset, - unsigned int fraglen) -{ - struct ip_reply_arg *dp = (struct ip_reply_arg*)dptr; - u16 *pktp = (u16 *)to; - struct iovec *iov; - int len; - int hdrflag = 1; - - iov = &dp->iov[0]; - if (offset >= iov->iov_len) { - offset -= iov->iov_len; - iov++; - hdrflag = 0; - } - len = iov->iov_len - offset; - if (fraglen > len) { /* overlapping. */ - dp->csum = csum_partial_copy_nocheck(iov->iov_base+offset, to, len, - dp->csum); - offset = 0; - fraglen -= len; - to += len; - iov++; - } - - dp->csum = csum_partial_copy_nocheck(iov->iov_base+offset, to, fraglen, - dp->csum); - - if (hdrflag && dp->csumoffset) - *(pktp + dp->csumoffset) = csum_fold(dp->csum); /* fill in checksum */ - return 0; -} - -/* - * Generic function to send a packet as reply to another packet. - * Used to send TCP resets so far. ICMP should use this function too. - * - * Should run single threaded per socket because it uses the sock - * structure to pass arguments. - */ -void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg, - unsigned int len) -{ - struct { - struct ip_options opt; - char data[40]; - } replyopts; - struct ipcm_cookie ipc; - u32 daddr; - struct rtable *rt = (struct rtable*)skb->dst; - - if (ip_options_echo(&replyopts.opt, skb)) - return; - - sk->ip_tos = skb->nh.iph->tos; - sk->priority = skb->priority; - sk->protocol = skb->nh.iph->protocol; - - daddr = ipc.addr = rt->rt_src; - ipc.opt = &replyopts.opt; - - if (ipc.opt->srr) - daddr = replyopts.opt.faddr; - if (ip_route_output(&rt, daddr, rt->rt_spec_dst, RT_TOS(skb->nh.iph->tos), 0)) - return; - - /* And let IP do all the hard work. */ - ip_build_xmit(sk, ip_reply_glue_bits, arg, len, &ipc, rt, MSG_DONTWAIT); - ip_rt_put(rt); -} - -/* - * IP protocol layer initialiser - */ - -static struct packet_type ip_packet_type = -{ - __constant_htons(ETH_P_IP), - NULL, /* All devices */ - ip_rcv, - NULL, - NULL, -}; - - - -#ifdef CONFIG_PROC_FS -#ifdef CONFIG_IP_MULTICAST -static struct proc_dir_entry proc_net_igmp = { - PROC_NET_IGMP, 4, "igmp", - S_IFREG | S_IRUGO, 1, 0, 0, - 0, &proc_net_inode_operations, - ip_mc_procinfo -}; -#endif -#endif - -/* - * IP registers the packet type and then calls the subprotocol initialisers - */ - -__initfunc(void ip_init(void)) -{ - dev_add_pack(&ip_packet_type); - - ip_rt_init(); - -#ifdef CONFIG_PROC_FS -#ifdef CONFIG_IP_MULTICAST - proc_net_register(&proc_net_igmp); -#endif -#endif -} - diff --git a/pfinet.old/linux-src/net/ipv4/tcp_input.c~ b/pfinet.old/linux-src/net/ipv4/tcp_input.c~ deleted file mode 100644 index c5095624..00000000 --- a/pfinet.old/linux-src/net/ipv4/tcp_input.c~ +++ /dev/null @@ -1,2449 +0,0 @@ -/* - * INET An implementation of the TCP/IP protocol suite for the LINUX - * operating system. INET is implemented using the BSD Socket - * interface as the means of communication with the user level. - * - * Implementation of the Transmission Control Protocol(TCP). - * - * Version: $Id: tcp_input.c,v 1.164.2.8 1999/09/23 19:21:23 davem Exp $ - * - * Authors: Ross Biro, - * Fred N. van Kempen, - * Mark Evans, - * Corey Minyard - * Florian La Roche, - * Charles Hedrick, - * Linus Torvalds, - * Alan Cox, - * Matthew Dillon, - * Arnt Gulbrandsen, - * Jorge Cwik, - */ - -/* - * Changes: - * Pedro Roque : Fast Retransmit/Recovery. - * Two receive queues. - * Retransmit queue handled by TCP. - * Better retransmit timer handling. - * New congestion avoidance. - * Header prediction. - * Variable renaming. - * - * Eric : Fast Retransmit. - * Randy Scott : MSS option defines. - * Eric Schenk : Fixes to slow start algorithm. - * Eric Schenk : Yet another double ACK bug. - * Eric Schenk : Delayed ACK bug fixes. - * Eric Schenk : Floyd style fast retrans war avoidance. - * David S. Miller : Don't allow zero congestion window. - * Eric Schenk : Fix retransmitter so that it sends - * next packet on ack of previous packet. - * Andi Kleen : Moved open_request checking here - * and process RSTs for open_requests. - * Andi Kleen : Better prune_queue, and other fixes. - * Andrey Savochkin: Fix RTT measurements in the presnce of - * timestamps. - * Andrey Savochkin: Check sequence numbers correctly when - * removing SACKs due to in sequence incoming - * data segments. - * Andi Kleen: Make sure we never ack data there is not - * enough room for. Also make this condition - * a fatal error if it might still happen. - * Andi Kleen: Add tcp_measure_rcv_mss to make - * connections with MSS -#include -#include -#include -#include - -#ifdef CONFIG_SYSCTL -#define SYNC_INIT 0 /* let the user enable it */ -#else -#define SYNC_INIT 1 -#endif - -extern int sysctl_tcp_fin_timeout; - -/* These are on by default so the code paths get tested. - * For the final 2.2 this may be undone at our discretion. -DaveM - */ -int sysctl_tcp_timestamps = 1; -int sysctl_tcp_window_scaling = 1; -int sysctl_tcp_sack = 1; - -int sysctl_tcp_syncookies = SYNC_INIT; -int sysctl_tcp_stdurg; -int sysctl_tcp_rfc1337; - -static int prune_queue(struct sock *sk); - -/* There is something which you must keep in mind when you analyze the - * behavior of the tp->ato delayed ack timeout interval. When a - * connection starts up, we want to ack as quickly as possible. The - * problem is that "good" TCP's do slow start at the beginning of data - * transmission. The means that until we send the first few ACK's the - * sender will sit on his end and only queue most of his data, because - * he can only send snd_cwnd unacked packets at any given time. For - * each ACK we send, he increments snd_cwnd and transmits more of his - * queue. -DaveM - */ -static void tcp_delack_estimator(struct tcp_opt *tp) -{ - if(tp->ato == 0) { - tp->lrcvtime = tcp_time_stamp; - - /* Help sender leave slow start quickly, - * and also makes sure we do not take this - * branch ever again for this connection. - */ - tp->ato = 1; - tcp_enter_quickack_mode(tp); - } else { - int m = tcp_time_stamp - tp->lrcvtime; - - tp->lrcvtime = tcp_time_stamp; - if(m <= 0) - m = 1; - if(m > tp->rto) - tp->ato = tp->rto; - else { - /* This funny shift makes sure we - * clear the "quick ack mode" bit. - */ - tp->ato = ((tp->ato << 1) >> 2) + m; - } - } -} - -/* - * Remember to send an ACK later. - */ -static __inline__ void tcp_remember_ack(struct tcp_opt *tp, struct tcphdr *th, - struct sk_buff *skb) -{ - tp->delayed_acks++; - - /* Tiny-grams with PSH set artifically deflate our - * ato measurement, but with a lower bound. - */ - if(th->psh && (skb->len < (tp->mss_cache >> 1))) { - /* Preserve the quickack state. */ - if((tp->ato & 0x7fffffff) > HZ/50) - tp->ato = ((tp->ato & 0x80000000) | - (HZ/50)); - } -} - -/* Called to compute a smoothed rtt estimate. The data fed to this - * routine either comes from timestamps, or from segments that were - * known _not_ to have been retransmitted [see Karn/Partridge - * Proceedings SIGCOMM 87]. The algorithm is from the SIGCOMM 88 - * piece by Van Jacobson. - * NOTE: the next three routines used to be one big routine. - * To save cycles in the RFC 1323 implementation it was better to break - * it up into three procedures. -- erics - */ - -static __inline__ void tcp_rtt_estimator(struct tcp_opt *tp, __u32 mrtt) -{ - long m = mrtt; /* RTT */ - - /* The following amusing code comes from Jacobson's - * article in SIGCOMM '88. Note that rtt and mdev - * are scaled versions of rtt and mean deviation. - * This is designed to be as fast as possible - * m stands for "measurement". - * - * On a 1990 paper the rto value is changed to: - * RTO = rtt + 4 * mdev - */ - if(m == 0) - m = 1; - if (tp->srtt != 0) { - m -= (tp->srtt >> 3); /* m is now error in rtt est */ - tp->srtt += m; /* rtt = 7/8 rtt + 1/8 new */ - if (m < 0) - m = -m; /* m is now abs(error) */ - m -= (tp->mdev >> 2); /* similar update on mdev */ - tp->mdev += m; /* mdev = 3/4 mdev + 1/4 new */ - } else { - /* no previous measure. */ - tp->srtt = m<<3; /* take the measured time to be rtt */ - tp->mdev = m<<2; /* make sure rto = 3*rtt */ - } -} - -/* Calculate rto without backoff. This is the second half of Van Jacobson's - * routine referred to above. - */ - -static __inline__ void tcp_set_rto(struct tcp_opt *tp) -{ - tp->rto = (tp->srtt >> 3) + tp->mdev; - tp->rto += (tp->rto >> 2) + (tp->rto >> (tp->snd_cwnd-1)); -} - - -/* Keep the rto between HZ/5 and 120*HZ. 120*HZ is the upper bound - * on packet lifetime in the internet. We need the HZ/5 lower - * bound to behave correctly against BSD stacks with a fixed - * delayed ack. - * FIXME: It's not entirely clear this lower bound is the best - * way to avoid the problem. Is it possible to drop the lower - * bound and still avoid trouble with BSD stacks? Perhaps - * some modification to the RTO calculation that takes delayed - * ack bias into account? This needs serious thought. -- erics - */ -static __inline__ void tcp_bound_rto(struct tcp_opt *tp) -{ - if (tp->rto > 120*HZ) - tp->rto = 120*HZ; - if (tp->rto < HZ/5) - tp->rto = HZ/5; -} - -/* WARNING: this must not be called if tp->saw_timestamp was false. */ -extern __inline__ void tcp_replace_ts_recent(struct sock *sk, struct tcp_opt *tp, - __u32 start_seq, __u32 end_seq) -{ - /* It is start_seq <= last_ack_seq combined - with in window check. If start_seq<=last_ack_seq<=rcv_nxt, - then segment is in window if end_seq>=rcv_nxt. - */ - if (!after(start_seq, tp->last_ack_sent) && - !before(end_seq, tp->rcv_nxt)) { - /* PAWS bug workaround wrt. ACK frames, the PAWS discard - * extra check below makes sure this can only happen - * for pure ACK frames. -DaveM - * - * Plus: expired timestamps. - * - * Plus: resets failing PAWS. - */ - if((s32)(tp->rcv_tsval - tp->ts_recent) >= 0) { - tp->ts_recent = tp->rcv_tsval; - tp->ts_recent_stamp = tcp_time_stamp; - } - } -} - -#define PAWS_24DAYS (HZ * 60 * 60 * 24 * 24) - -extern __inline__ int tcp_paws_discard(struct tcp_opt *tp, struct tcphdr *th, unsigned len) -{ - return ((s32)(tp->rcv_tsval - tp->ts_recent) < 0 && - (s32)(tcp_time_stamp - tp->ts_recent_stamp) < PAWS_24DAYS && - /* Sorry, PAWS as specified is broken wrt. pure-ACKs -DaveM */ - len != (th->doff * 4)); -} - - -static int __tcp_sequence(struct tcp_opt *tp, u32 seq, u32 end_seq) -{ - u32 end_window = tp->rcv_wup + tp->rcv_wnd; - - if (tp->rcv_wnd && - after(end_seq, tp->rcv_nxt) && - before(seq, end_window)) - return 1; - if (seq != end_window) - return 0; - return (seq == end_seq); -} - -/* This functions checks to see if the tcp header is actually acceptable. */ -extern __inline__ int tcp_sequence(struct tcp_opt *tp, u32 seq, u32 end_seq) -{ - if (seq == tp->rcv_nxt) - return (tp->rcv_wnd || (end_seq == seq)); - - return __tcp_sequence(tp, seq, end_seq); -} - -/* When we get a reset we do this. */ -static void tcp_reset(struct sock *sk) -{ - sk->zapped = 1; - - /* We want the right error as BSD sees it (and indeed as we do). */ - switch (sk->state) { - case TCP_SYN_SENT: - sk->err = ECONNREFUSED; - break; - case TCP_CLOSE_WAIT: - sk->err = EPIPE; - break; - default: - sk->err = ECONNRESET; - }; - tcp_set_state(sk, TCP_CLOSE); - sk->shutdown = SHUTDOWN_MASK; - if (!sk->dead) - sk->state_change(sk); -} - -/* This tags the retransmission queue when SACKs arrive. */ -static void tcp_sacktag_write_queue(struct sock *sk, struct tcp_sack_block *sp, int nsacks) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - int i = nsacks; - - while(i--) { - struct sk_buff *skb = skb_peek(&sk->write_queue); - __u32 start_seq = ntohl(sp->start_seq); - __u32 end_seq = ntohl(sp->end_seq); - int fack_count = 0; - - while((skb != NULL) && - (skb != tp->send_head) && - (skb != (struct sk_buff *)&sk->write_queue)) { - /* The retransmission queue is always in order, so - * we can short-circuit the walk early. - */ - if(after(TCP_SKB_CB(skb)->seq, end_seq)) - break; - - /* We play conservative, we don't allow SACKS to partially - * tag a sequence space. - */ - fack_count++; - if(!after(start_seq, TCP_SKB_CB(skb)->seq) && - !before(end_seq, TCP_SKB_CB(skb)->end_seq)) { - /* If this was a retransmitted frame, account for it. */ - if((TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS) && - tp->retrans_out) - tp->retrans_out--; - TCP_SKB_CB(skb)->sacked |= TCPCB_SACKED_ACKED; - - /* RULE: All new SACKs will either decrease retrans_out - * or advance fackets_out. - */ - if(fack_count > tp->fackets_out) - tp->fackets_out = fack_count; - } - skb = skb->next; - } - sp++; /* Move on to the next SACK block. */ - } -} - -/* Look for tcp options. Normally only called on SYN and SYNACK packets. - * But, this can also be called on packets in the established flow when - * the fast version below fails. - */ -void tcp_parse_options(struct sock *sk, struct tcphdr *th, struct tcp_opt *tp, int no_fancy) -{ - unsigned char *ptr; - int length=(th->doff*4)-sizeof(struct tcphdr); - int saw_mss = 0; - - ptr = (unsigned char *)(th + 1); - tp->saw_tstamp = 0; - - while(length>0) { - int opcode=*ptr++; - int opsize; - - switch (opcode) { - case TCPOPT_EOL: - return; - case TCPOPT_NOP: /* Ref: RFC 793 section 3.1 */ - length--; - continue; - default: - opsize=*ptr++; - if (opsize < 2) /* "silly options" */ - return; - if (opsize > length) - break; /* don't parse partial options */ - switch(opcode) { - case TCPOPT_MSS: - if(opsize==TCPOLEN_MSS && th->syn) { - u16 in_mss = ntohs(*(__u16 *)ptr); - if (in_mss == 0) - in_mss = 536; - if (tp->mss_clamp > in_mss) - tp->mss_clamp = in_mss; - saw_mss = 1; - } - break; - case TCPOPT_WINDOW: - if(opsize==TCPOLEN_WINDOW && th->syn) - if (!no_fancy && sysctl_tcp_window_scaling) { - tp->wscale_ok = 1; - tp->snd_wscale = *(__u8 *)ptr; - if(tp->snd_wscale > 14) { - if(net_ratelimit()) - printk("tcp_parse_options: Illegal window " - "scaling value %d >14 received.", - tp->snd_wscale); - tp->snd_wscale = 14; - } - } - break; - case TCPOPT_TIMESTAMP: - if(opsize==TCPOLEN_TIMESTAMP) { - if (sysctl_tcp_timestamps && !no_fancy) { - tp->tstamp_ok = 1; - tp->saw_tstamp = 1; - tp->rcv_tsval = ntohl(*(__u32 *)ptr); - tp->rcv_tsecr = ntohl(*(__u32 *)(ptr+4)); - } - } - break; - case TCPOPT_SACK_PERM: - if(opsize==TCPOLEN_SACK_PERM && th->syn) { - if (sysctl_tcp_sack && !no_fancy) { - tp->sack_ok = 1; - tp->num_sacks = 0; - } - } - break; - - case TCPOPT_SACK: - if((opsize >= (TCPOLEN_SACK_BASE + TCPOLEN_SACK_PERBLOCK)) && - sysctl_tcp_sack && (sk != NULL) && !th->syn) { - int sack_bytes = opsize - TCPOLEN_SACK_BASE; - - if(!(sack_bytes % TCPOLEN_SACK_PERBLOCK)) { - int num_sacks = sack_bytes >> 3; - struct tcp_sack_block *sackp; - - sackp = (struct tcp_sack_block *)ptr; - tcp_sacktag_write_queue(sk, sackp, num_sacks); - } - } - }; - ptr+=opsize-2; - length-=opsize; - }; - } - if(th->syn && saw_mss == 0) - tp->mss_clamp = 536; -} - -/* Fast parse options. This hopes to only see timestamps. - * If it is wrong it falls back on tcp_parse_options(). - */ -static __inline__ int tcp_fast_parse_options(struct sock *sk, struct tcphdr *th, struct tcp_opt *tp) -{ - /* If we didn't send out any options ignore them all. */ - if (tp->tcp_header_len == sizeof(struct tcphdr)) - return 0; - if (th->doff == sizeof(struct tcphdr)>>2) { - tp->saw_tstamp = 0; - return 0; - } else if (th->doff == (sizeof(struct tcphdr)>>2)+(TCPOLEN_TSTAMP_ALIGNED>>2)) { - __u32 *ptr = (__u32 *)(th + 1); - if (*ptr == __constant_ntohl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) - | (TCPOPT_TIMESTAMP << 8) | TCPOLEN_TIMESTAMP)) { - tp->saw_tstamp = 1; - tp->rcv_tsval = ntohl(*++ptr); - tp->rcv_tsecr = ntohl(*++ptr); - return 1; - } - } - tcp_parse_options(sk, th, tp, 0); - return 1; -} - -#define FLAG_DATA 0x01 /* Incoming frame contained data. */ -#define FLAG_WIN_UPDATE 0x02 /* Incoming ACK was a window update. */ -#define FLAG_DATA_ACKED 0x04 /* This ACK acknowledged new data. */ -#define FLAG_RETRANS_DATA_ACKED 0x08 /* "" "" some of which was retransmitted. */ - -static __inline__ void clear_fast_retransmit(struct tcp_opt *tp) -{ - if (tp->dup_acks > 3) - tp->snd_cwnd = (tp->snd_ssthresh); - - tp->dup_acks = 0; -} - -/* NOTE: This code assumes that tp->dup_acks gets cleared when a - * retransmit timer fires. - */ -static void tcp_fast_retrans(struct sock *sk, u32 ack, int not_dup) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Note: If not_dup is set this implies we got a - * data carrying packet or a window update. - * This carries no new information about possible - * lost packets, so we have to ignore it for the purposes - * of counting duplicate acks. Ideally this does not imply we - * should stop our fast retransmit phase, more acks may come - * later without data to help us. Unfortunately this would make - * the code below much more complex. For now if I see such - * a packet I clear the fast retransmit phase. - */ - if (ack == tp->snd_una && tp->packets_out && (not_dup == 0)) { - /* This is the standard reno style fast retransmit branch. */ - - /* 1. When the third duplicate ack is received, set ssthresh - * to one half the current congestion window, but no less - * than two segments. Retransmit the missing segment. - */ - if (tp->high_seq == 0 || after(ack, tp->high_seq)) { - tp->dup_acks++; - if ((tp->fackets_out > 3) || (tp->dup_acks == 3)) { - tp->snd_ssthresh = tcp_recalc_ssthresh(tp); - tp->snd_cwnd = (tp->snd_ssthresh + 3); - tp->high_seq = tp->snd_nxt; - if(!tp->fackets_out) - tcp_retransmit_skb(sk, - skb_peek(&sk->write_queue)); - else - tcp_fack_retransmit(sk); - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } - } else if (++tp->dup_acks > 3) { - /* 2. Each time another duplicate ACK arrives, increment - * cwnd by the segment size. [...] Transmit a packet... - * - * Packet transmission will be done on normal flow processing - * since we're not in "retransmit mode". We do not use - * duplicate ACKs to artificially inflate the congestion - * window when doing FACK. - */ - if(!tp->fackets_out) { - tp->snd_cwnd++; - } else { - /* Fill any further holes which may have - * appeared. - * - * We may want to change this to run every - * further multiple-of-3 dup ack increments, - * to be more robust against out-of-order - * packet delivery. -DaveM - */ - tcp_fack_retransmit(sk); - } - } - } else if (tp->high_seq != 0) { - /* In this branch we deal with clearing the Floyd style - * block on duplicate fast retransmits, and if requested - * we do Hoe style secondary fast retransmits. - */ - if (!before(ack, tp->high_seq) || (not_dup & FLAG_DATA) != 0) { - /* Once we have acked all the packets up to high_seq - * we are done this fast retransmit phase. - * Alternatively data arrived. In this case we - * Have to abort the fast retransmit attempt. - * Note that we do want to accept a window - * update since this is expected with Hoe's algorithm. - */ - clear_fast_retransmit(tp); - - /* After we have cleared up to high_seq we can - * clear the Floyd style block. - */ - if (!before(ack, tp->high_seq)) { - tp->high_seq = 0; - tp->fackets_out = 0; - } - } else if (tp->dup_acks >= 3) { - if (!tp->fackets_out) { - /* Hoe Style. We didn't ack the whole - * window. Take this as a cue that - * another packet was lost and retransmit it. - * Don't muck with the congestion window here. - * Note that we have to be careful not to - * act if this was a window update and it - * didn't ack new data, since this does - * not indicate a packet left the system. - * We can test this by just checking - * if ack changed from snd_una, since - * the only way to get here without advancing - * from snd_una is if this was a window update. - */ - if (ack != tp->snd_una && before(ack, tp->high_seq)) { - tcp_retransmit_skb(sk, - skb_peek(&sk->write_queue)); - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } - } else { - /* FACK style, fill any remaining holes in - * receiver's queue. - */ - tcp_fack_retransmit(sk); - } - } - } -} - -/* This is Jacobson's slow start and congestion avoidance. - * SIGCOMM '88, p. 328. - */ -static __inline__ void tcp_cong_avoid(struct tcp_opt *tp) -{ - if (tp->snd_cwnd <= tp->snd_ssthresh) { - /* In "safe" area, increase. */ - tp->snd_cwnd++; - } else { - /* In dangerous area, increase slowly. - * In theory this is tp->snd_cwnd += 1 / tp->snd_cwnd - */ - if (tp->snd_cwnd_cnt >= tp->snd_cwnd) { - tp->snd_cwnd++; - tp->snd_cwnd_cnt=0; - } else - tp->snd_cwnd_cnt++; - } -} - -/* Remove acknowledged frames from the retransmission queue. */ -static int tcp_clean_rtx_queue(struct sock *sk, __u32 ack, - __u32 *seq, __u32 *seq_rtt) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb; - __u32 now = tcp_time_stamp; - int acked = 0; - - /* If we are retransmitting, and this ACK clears up to - * the retransmit head, or further, then clear our state. - */ - if (tp->retrans_head != NULL && - !before(ack, TCP_SKB_CB(tp->retrans_head)->end_seq)) - tp->retrans_head = NULL; - - while((skb=skb_peek(&sk->write_queue)) && (skb != tp->send_head)) { - struct tcp_skb_cb *scb = TCP_SKB_CB(skb); - __u8 sacked = scb->sacked; - - /* If our packet is before the ack sequence we can - * discard it as it's confirmed to have arrived at - * the other end. - */ - if (after(scb->end_seq, ack)) - break; - - /* Initial outgoing SYN's get put onto the write_queue - * just like anything else we transmit. It is not - * true data, and if we misinform our callers that - * this ACK acks real data, we will erroneously exit - * connection startup slow start one packet too - * quickly. This is severely frowned upon behavior. - */ - if((sacked & TCPCB_SACKED_RETRANS) && tp->retrans_out) - tp->retrans_out--; - if(!(scb->flags & TCPCB_FLAG_SYN)) { - acked |= FLAG_DATA_ACKED; - if(sacked & TCPCB_SACKED_RETRANS) - acked |= FLAG_RETRANS_DATA_ACKED; - if(tp->fackets_out) - tp->fackets_out--; - } else { - /* This is pure paranoia. */ - tp->retrans_head = NULL; - } - tp->packets_out--; - *seq = scb->seq; - *seq_rtt = now - scb->when; - __skb_unlink(skb, skb->list); - kfree_skb(skb); - } - return acked; -} - -static void tcp_ack_probe(struct sock *sk, __u32 ack) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Our probe was answered. */ - tp->probes_out = 0; - - /* Was it a usable window open? */ - - /* should always be non-null */ - if (tp->send_head != NULL && - !before (ack + tp->snd_wnd, TCP_SKB_CB(tp->send_head)->end_seq)) { - tp->backoff = 0; - tp->pending = 0; - tcp_clear_xmit_timer(sk, TIME_PROBE0); - } else { - tcp_reset_xmit_timer(sk, TIME_PROBE0, - min(tp->rto << tp->backoff, 120*HZ)); - } -} - -/* Should we open up the congestion window? */ -static __inline__ int should_advance_cwnd(struct tcp_opt *tp, int flag) -{ - /* Data must have been acked. */ - if ((flag & FLAG_DATA_ACKED) == 0) - return 0; - - /* Some of the data acked was retransmitted somehow? */ - if ((flag & FLAG_RETRANS_DATA_ACKED) != 0) { - /* We advance in all cases except during - * non-FACK fast retransmit/recovery. - */ - if (tp->fackets_out != 0 || - tp->retransmits != 0) - return 1; - - /* Non-FACK fast retransmit does it's own - * congestion window management, don't get - * in the way. - */ - return 0; - } - - /* New non-retransmitted data acked, always advance. */ - return 1; -} - -/* Read draft-ietf-tcplw-high-performance before mucking - * with this code. (Superceeds RFC1323) - */ -static void tcp_ack_saw_tstamp(struct sock *sk, struct tcp_opt *tp, - u32 seq, u32 ack, int flag) -{ - __u32 seq_rtt; - - /* RTTM Rule: A TSecr value received in a segment is used to - * update the averaged RTT measurement only if the segment - * acknowledges some new data, i.e., only if it advances the - * left edge of the send window. - * - * See draft-ietf-tcplw-high-performance-00, section 3.3. - * 1998/04/10 Andrey V. Savochkin - */ - if (!(flag & FLAG_DATA_ACKED)) - return; - - seq_rtt = tcp_time_stamp - tp->rcv_tsecr; - tcp_rtt_estimator(tp, seq_rtt); - if (tp->retransmits) { - if (tp->packets_out == 0) { - tp->retransmits = 0; - tp->fackets_out = 0; - tp->retrans_out = 0; - tp->backoff = 0; - tcp_set_rto(tp); - } else { - /* Still retransmitting, use backoff */ - tcp_set_rto(tp); - tp->rto = tp->rto << tp->backoff; - } - } else { - tcp_set_rto(tp); - } - - tcp_bound_rto(tp); -} - -static __inline__ void tcp_ack_packets_out(struct sock *sk, struct tcp_opt *tp) -{ - struct sk_buff *skb = skb_peek(&sk->write_queue); - - /* Some data was ACK'd, if still retransmitting (due to a - * timeout), resend more of the retransmit queue. The - * congestion window is handled properly by that code. - */ - if (tp->retransmits) { - tcp_xmit_retransmit_queue(sk); - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } else { - __u32 when = tp->rto - (tcp_time_stamp - TCP_SKB_CB(skb)->when); - if ((__s32)when < 0) - when = 1; - tcp_reset_xmit_timer(sk, TIME_RETRANS, when); - } -} - -/* This routine deals with incoming acks, but not outgoing ones. */ -static int tcp_ack(struct sock *sk, struct tcphdr *th, - u32 ack_seq, u32 ack, int len) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - int flag = 0; - u32 seq = 0; - u32 seq_rtt = 0; - - if(sk->zapped) - return(1); /* Dead, can't ack any more so why bother */ - - if (tp->pending == TIME_KEEPOPEN) - tp->probes_out = 0; - - tp->rcv_tstamp = tcp_time_stamp; - - /* If the ack is newer than sent or older than previous acks - * then we can probably ignore it. - */ - if (after(ack, tp->snd_nxt) || before(ack, tp->snd_una)) - goto uninteresting_ack; - - /* If there is data set flag 1 */ - if (len != th->doff*4) { - flag |= FLAG_DATA; - tcp_delack_estimator(tp); - } - - /* Update our send window. */ - - /* This is the window update code as per RFC 793 - * snd_wl{1,2} are used to prevent unordered - * segments from shrinking the window - */ - if (before(tp->snd_wl1, ack_seq) || - (tp->snd_wl1 == ack_seq && !after(tp->snd_wl2, ack))) { - u32 nwin = ntohs(th->window) << tp->snd_wscale; - - if ((tp->snd_wl2 != ack) || (nwin > tp->snd_wnd)) { - flag |= FLAG_WIN_UPDATE; - tp->snd_wnd = nwin; - - tp->snd_wl1 = ack_seq; - tp->snd_wl2 = ack; - - if (nwin > tp->max_window) - tp->max_window = nwin; - } - } - - /* We passed data and got it acked, remove any soft error - * log. Something worked... - */ - sk->err_soft = 0; - - /* If this ack opens up a zero window, clear backoff. It was - * being used to time the probes, and is probably far higher than - * it needs to be for normal retransmission. - */ - if (tp->pending == TIME_PROBE0) - tcp_ack_probe(sk, ack); - - /* See if we can take anything off of the retransmit queue. */ - flag |= tcp_clean_rtx_queue(sk, ack, &seq, &seq_rtt); - - /* We must do this here, before code below clears out important - * state contained in tp->fackets_out and tp->retransmits. -DaveM - */ - if (should_advance_cwnd(tp, flag)) - tcp_cong_avoid(tp); - - /* If we have a timestamp, we always do rtt estimates. */ - if (tp->saw_tstamp) { - tcp_ack_saw_tstamp(sk, tp, seq, ack, flag); - } else { - /* If we were retransmiting don't count rtt estimate. */ - if (tp->retransmits) { - if (tp->packets_out == 0) { - tp->retransmits = 0; - tp->fackets_out = 0; - tp->retrans_out = 0; - } - } else { - /* We don't have a timestamp. Can only use - * packets that are not retransmitted to determine - * rtt estimates. Also, we must not reset the - * backoff for rto until we get a non-retransmitted - * packet. This allows us to deal with a situation - * where the network delay has increased suddenly. - * I.e. Karn's algorithm. (SIGCOMM '87, p5.) - */ - if (flag & FLAG_DATA_ACKED) { - if(!(flag & FLAG_RETRANS_DATA_ACKED)) { - tp->backoff = 0; - tcp_rtt_estimator(tp, seq_rtt); - tcp_set_rto(tp); - tcp_bound_rto(tp); - } - } - } - } - - if (tp->packets_out) { - if (flag & FLAG_DATA_ACKED) - tcp_ack_packets_out(sk, tp); - } else { - tcp_clear_xmit_timer(sk, TIME_RETRANS); - } - - flag &= (FLAG_DATA | FLAG_WIN_UPDATE); - if ((ack == tp->snd_una && tp->packets_out && flag == 0) || - (tp->high_seq != 0)) { - tcp_fast_retrans(sk, ack, flag); - } else { - /* Clear any aborted fast retransmit starts. */ - tp->dup_acks = 0; - } - /* It is not a brain fart, I thought a bit now. 8) - * - * Forward progress is indicated, if: - * 1. the ack acknowledges new data. - * 2. or the ack is duplicate, but it is caused by new segment - * arrival. This case is filtered by: - * - it contains no data, syn or fin. - * - it does not update window. - * 3. or new SACK. It is difficult to check, so that we ignore it. - * - * Forward progress is also indicated by arrival new data, - * which was caused by window open from our side. This case is more - * difficult and it is made (alas, incorrectly) in tcp_data_queue(). - * --ANK (990513) - */ - if (ack != tp->snd_una || (flag == 0 && !th->fin)) - dst_confirm(sk->dst_cache); - - /* Remember the highest ack received. */ - tp->snd_una = ack; - return 1; - -uninteresting_ack: - SOCK_DEBUG(sk, "Ack ignored %u %u\n", ack, tp->snd_nxt); - return 0; -} - -/* New-style handling of TIME_WAIT sockets. */ -extern void tcp_tw_schedule(struct tcp_tw_bucket *tw); -extern void tcp_tw_reschedule(struct tcp_tw_bucket *tw); -extern void tcp_tw_deschedule(struct tcp_tw_bucket *tw); - -void tcp_timewait_kill(struct tcp_tw_bucket *tw) -{ - struct tcp_bind_bucket *tb = tw->tb; - - /* Disassociate with bind bucket. */ - if(tw->bind_next) - tw->bind_next->bind_pprev = tw->bind_pprev; - *(tw->bind_pprev) = tw->bind_next; - if (tb->owners == NULL) { - if (tb->next) - tb->next->pprev = tb->pprev; - *(tb->pprev) = tb->next; - kmem_cache_free(tcp_bucket_cachep, tb); - } - - /* Unlink from established hashes. */ - if(tw->next) - tw->next->pprev = tw->pprev; - *tw->pprev = tw->next; - - /* We decremented the prot->inuse count when we entered TIME_WAIT - * and the sock from which this came was destroyed. - */ - tw->sklist_next->sklist_prev = tw->sklist_prev; - tw->sklist_prev->sklist_next = tw->sklist_next; - - /* Ok, now free it up. */ - kmem_cache_free(tcp_timewait_cachep, tw); -} - -/* We come here as a special case from the AF specific TCP input processing, - * and the SKB has no owner. Essentially handling this is very simple, - * we just keep silently eating rx'd packets, acking them if necessary, - * until none show up for the entire timeout period. - * - * Return 0, TCP_TW_ACK, TCP_TW_RST - */ -enum tcp_tw_status -tcp_timewait_state_process(struct tcp_tw_bucket *tw, struct sk_buff *skb, - struct tcphdr *th, unsigned len) -{ - /* RFC 1122: - * "When a connection is [...] on TIME-WAIT state [...] - * [a TCP] MAY accept a new SYN from the remote TCP to - * reopen the connection directly, if it: - * - * (1) assigns its initial sequence number for the new - * connection to be larger than the largest sequence - * number it used on the previous connection incarnation, - * and - * - * (2) returns to TIME-WAIT state if the SYN turns out - * to be an old duplicate". - */ - if(th->syn && !th->rst && after(TCP_SKB_CB(skb)->seq, tw->rcv_nxt)) { - struct sock *sk; - struct tcp_func *af_specific = tw->af_specific; - __u32 isn; - - isn = tw->snd_nxt + 128000; - if(isn == 0) - isn++; - tcp_tw_deschedule(tw); - tcp_timewait_kill(tw); - sk = af_specific->get_sock(skb, th); - if(sk == NULL || - !ipsec_sk_policy(sk,skb) || - atomic_read(&sk->sock_readers) != 0) - return 0; - skb_set_owner_r(skb, sk); - af_specific = sk->tp_pinfo.af_tcp.af_specific; - if(af_specific->conn_request(sk, skb, isn) < 0) - return TCP_TW_RST; /* Toss a reset back. */ - return 0; /* Discard the frame. */ - } - - /* Check RST or SYN */ - if(th->rst || th->syn) { - /* This is TIME_WAIT assasination, in two flavors. - * Oh well... nobody has a sufficient solution to this - * protocol bug yet. - */ - if(sysctl_tcp_rfc1337 == 0) { - tcp_tw_deschedule(tw); - tcp_timewait_kill(tw); - } - if(!th->rst) - return TCP_TW_RST; /* toss a reset back */ - return 0; - } else { - /* In this case we must reset the TIMEWAIT timer. */ - if(th->ack) - tcp_tw_reschedule(tw); - } - /* Ack old packets if necessary */ - if (!after(TCP_SKB_CB(skb)->end_seq, tw->rcv_nxt) && - (th->doff * 4) > len) - return TCP_TW_ACK; - return 0; -} - -/* Enter the time wait state. This is always called from BH - * context. Essentially we whip up a timewait bucket, copy the - * relevant info into it from the SK, and mess with hash chains - * and list linkage. - */ -static __inline__ void tcp_tw_hashdance(struct sock *sk, struct tcp_tw_bucket *tw) -{ - struct sock **head, *sktw; - - /* Step 1: Remove SK from established hash. */ - if(sk->next) - sk->next->pprev = sk->pprev; - *sk->pprev = sk->next; - sk->pprev = NULL; - tcp_reg_zap(sk); - - /* Step 2: Put TW into bind hash where SK was. */ - tw->tb = (struct tcp_bind_bucket *)sk->prev; - if((tw->bind_next = sk->bind_next) != NULL) - sk->bind_next->bind_pprev = &tw->bind_next; - tw->bind_pprev = sk->bind_pprev; - *sk->bind_pprev = (struct sock *)tw; - sk->prev = NULL; - - /* Step 3: Same for the protocol sklist. */ - (tw->sklist_next = sk->sklist_next)->sklist_prev = (struct sock *)tw; - (tw->sklist_prev = sk->sklist_prev)->sklist_next = (struct sock *)tw; - sk->sklist_next = NULL; - sk->prot->inuse--; - - /* Step 4: Hash TW into TIMEWAIT half of established hash table. */ - head = &tcp_ehash[sk->hashent + (tcp_ehash_size/2)]; - sktw = (struct sock *)tw; - if((sktw->next = *head) != NULL) - (*head)->pprev = &sktw->next; - *head = sktw; - sktw->pprev = head; -} - -void tcp_time_wait(struct sock *sk) -{ - struct tcp_tw_bucket *tw; - - tw = kmem_cache_alloc(tcp_timewait_cachep, SLAB_ATOMIC); - if(tw != NULL) { - /* Give us an identity. */ - tw->daddr = sk->daddr; - tw->rcv_saddr = sk->rcv_saddr; - tw->bound_dev_if= sk->bound_dev_if; - tw->num = sk->num; - tw->state = TCP_TIME_WAIT; - tw->sport = sk->sport; - tw->dport = sk->dport; - tw->family = sk->family; - tw->reuse = sk->reuse; - tw->rcv_nxt = sk->tp_pinfo.af_tcp.rcv_nxt; - tw->snd_nxt = sk->tp_pinfo.af_tcp.snd_nxt; - tw->window = tcp_select_window(sk); - tw->af_specific = sk->tp_pinfo.af_tcp.af_specific; - -#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) - if(tw->family == PF_INET6) { - memcpy(&tw->v6_daddr, - &sk->net_pinfo.af_inet6.daddr, - sizeof(struct in6_addr)); - memcpy(&tw->v6_rcv_saddr, - &sk->net_pinfo.af_inet6.rcv_saddr, - sizeof(struct in6_addr)); - } -#endif - /* Linkage updates. */ - tcp_tw_hashdance(sk, tw); - - /* Get the TIME_WAIT timeout firing. */ - tcp_tw_schedule(tw); - - /* CLOSE the SK. */ - if(sk->state == TCP_ESTABLISHED) - tcp_statistics.TcpCurrEstab--; - sk->state = TCP_CLOSE; - net_reset_timer(sk, TIME_DONE, - min(sk->tp_pinfo.af_tcp.srtt * 2, TCP_DONE_TIME)); - } else { - /* Sorry, we're out of memory, just CLOSE this - * socket up. We've got bigger problems than - * non-graceful socket closings. - */ - tcp_set_state(sk, TCP_CLOSE); - } - - /* Prevent rcvmsg/sndmsg calls, and wake people up. */ - sk->shutdown = SHUTDOWN_MASK; - if(!sk->dead) - sk->state_change(sk); -} - -/* - * Process the FIN bit. This now behaves as it is supposed to work - * and the FIN takes effect when it is validly part of sequence - * space. Not before when we get holes. - * - * If we are ESTABLISHED, a received fin moves us to CLOSE-WAIT - * (and thence onto LAST-ACK and finally, CLOSE, we never enter - * TIME-WAIT) - * - * If we are in FINWAIT-1, a received FIN indicates simultaneous - * close and we go into CLOSING (and later onto TIME-WAIT) - * - * If we are in FINWAIT-2, a received FIN moves us to TIME-WAIT. - */ - -static void tcp_fin(struct sk_buff *skb, struct sock *sk, struct tcphdr *th) -{ - sk->tp_pinfo.af_tcp.fin_seq = TCP_SKB_CB(skb)->end_seq; - - tcp_send_ack(sk); - - if (!sk->dead) { - sk->state_change(sk); - sock_wake_async(sk->socket, 1); - } - - switch(sk->state) { - case TCP_SYN_RECV: - case TCP_ESTABLISHED: - /* Move to CLOSE_WAIT */ - tcp_set_state(sk, TCP_CLOSE_WAIT); - if (th->rst) - sk->shutdown = SHUTDOWN_MASK; - break; - - case TCP_CLOSE_WAIT: - case TCP_CLOSING: - /* Received a retransmission of the FIN, do - * nothing. - */ - break; - case TCP_LAST_ACK: - /* RFC793: Remain in the LAST-ACK state. */ - break; - - case TCP_FIN_WAIT1: - /* This case occurs when a simultaneous close - * happens, we must ack the received FIN and - * enter the CLOSING state. - * - * This causes a WRITE timeout, which will either - * move on to TIME_WAIT when we timeout, or resend - * the FIN properly (maybe we get rid of that annoying - * FIN lost hang). The TIME_WRITE code is already - * correct for handling this timeout. - */ - tcp_set_state(sk, TCP_CLOSING); - break; - case TCP_FIN_WAIT2: - /* Received a FIN -- send ACK and enter TIME_WAIT. */ - tcp_time_wait(sk); - break; - default: - /* Only TCP_LISTEN and TCP_CLOSE are left, in these - * cases we should never reach this piece of code. - */ - printk("tcp_fin: Impossible, sk->state=%d\n", sk->state); - break; - }; -} - -/* These routines update the SACK block as out-of-order packets arrive or - * in-order packets close up the sequence space. - */ -static void tcp_sack_maybe_coalesce(struct tcp_opt *tp, struct tcp_sack_block *sp) -{ - int this_sack, num_sacks = tp->num_sacks; - struct tcp_sack_block *swalk = &tp->selective_acks[0]; - - /* If more than one SACK block, see if the recent change to SP eats into - * or hits the sequence space of other SACK blocks, if so coalesce. - */ - if(num_sacks != 1) { - for(this_sack = 0; this_sack < num_sacks; this_sack++, swalk++) { - if(swalk == sp) - continue; - - /* First case, bottom of SP moves into top of the - * sequence space of SWALK. - */ - if(between(sp->start_seq, swalk->start_seq, swalk->end_seq)) { - sp->start_seq = swalk->start_seq; - goto coalesce; - } - /* Second case, top of SP moves into bottom of the - * sequence space of SWALK. - */ - if(between(sp->end_seq, swalk->start_seq, swalk->end_seq)) { - sp->end_seq = swalk->end_seq; - goto coalesce; - } - } - } - /* SP is the only SACK, or no coalescing cases found. */ - return; - -coalesce: - /* Zap SWALK, by moving every further SACK up by one slot. - * Decrease num_sacks. - */ - for(; this_sack < num_sacks-1; this_sack++, swalk++) { - struct tcp_sack_block *next = (swalk + 1); - swalk->start_seq = next->start_seq; - swalk->end_seq = next->end_seq; - } - tp->num_sacks--; -} - -static __inline__ void tcp_sack_swap(struct tcp_sack_block *sack1, struct tcp_sack_block *sack2) -{ - __u32 tmp; - - tmp = sack1->start_seq; - sack1->start_seq = sack2->start_seq; - sack2->start_seq = tmp; - - tmp = sack1->end_seq; - sack1->end_seq = sack2->end_seq; - sack2->end_seq = tmp; -} - -static void tcp_sack_new_ofo_skb(struct sock *sk, struct sk_buff *skb) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct tcp_sack_block *sp = &tp->selective_acks[0]; - int cur_sacks = tp->num_sacks; - - if (!cur_sacks) - goto new_sack; - - /* Optimize for the common case, new ofo frames arrive - * "in order". ;-) This also satisfies the requirements - * of RFC2018 about ordering of SACKs. - */ - if(sp->end_seq == TCP_SKB_CB(skb)->seq) { - sp->end_seq = TCP_SKB_CB(skb)->end_seq; - tcp_sack_maybe_coalesce(tp, sp); - } else if(sp->start_seq == TCP_SKB_CB(skb)->end_seq) { - /* Re-ordered arrival, in this case, can be optimized - * as well. - */ - sp->start_seq = TCP_SKB_CB(skb)->seq; - tcp_sack_maybe_coalesce(tp, sp); - } else { - struct tcp_sack_block *swap = sp + 1; - int this_sack, max_sacks = (tp->tstamp_ok ? 3 : 4); - - /* Oh well, we have to move things around. - * Try to find a SACK we can tack this onto. - */ - - for(this_sack = 1; this_sack < cur_sacks; this_sack++, swap++) { - if((swap->end_seq == TCP_SKB_CB(skb)->seq) || - (swap->start_seq == TCP_SKB_CB(skb)->end_seq)) { - if(swap->end_seq == TCP_SKB_CB(skb)->seq) - swap->end_seq = TCP_SKB_CB(skb)->end_seq; - else - swap->start_seq = TCP_SKB_CB(skb)->seq; - tcp_sack_swap(sp, swap); - tcp_sack_maybe_coalesce(tp, sp); - return; - } - } - - /* Could not find an adjacent existing SACK, build a new one, - * put it at the front, and shift everyone else down. We - * always know there is at least one SACK present already here. - * - * If the sack array is full, forget about the last one. - */ - if (cur_sacks >= max_sacks) { - cur_sacks--; - tp->num_sacks--; - } - while(cur_sacks >= 1) { - struct tcp_sack_block *this = &tp->selective_acks[cur_sacks]; - struct tcp_sack_block *prev = (this - 1); - this->start_seq = prev->start_seq; - this->end_seq = prev->end_seq; - cur_sacks--; - } - - new_sack: - /* Build the new head SACK, and we're done. */ - sp->start_seq = TCP_SKB_CB(skb)->seq; - sp->end_seq = TCP_SKB_CB(skb)->end_seq; - tp->num_sacks++; - } -} - -static void tcp_sack_remove_skb(struct tcp_opt *tp, struct sk_buff *skb) -{ - struct tcp_sack_block *sp = &tp->selective_acks[0]; - int num_sacks = tp->num_sacks; - int this_sack; - - /* This is an in order data segment _or_ an out-of-order SKB being - * moved to the receive queue, so we know this removed SKB will eat - * from the front of a SACK. - */ - for(this_sack = 0; this_sack < num_sacks; this_sack++, sp++) { - /* Check if the start of the sack is covered by skb. */ - if(!before(sp->start_seq, TCP_SKB_CB(skb)->seq) && - before(sp->start_seq, TCP_SKB_CB(skb)->end_seq)) - break; - } - - /* This should only happen if so many SACKs get built that some get - * pushed out before we get here, or we eat some in sequence packets - * which are before the first SACK block. - */ - if(this_sack >= num_sacks) - return; - - sp->start_seq = TCP_SKB_CB(skb)->end_seq; - if(!before(sp->start_seq, sp->end_seq)) { - /* Zap this SACK, by moving forward any other SACKS. */ - for(this_sack += 1; this_sack < num_sacks; this_sack++, sp++) { - struct tcp_sack_block *next = (sp + 1); - sp->start_seq = next->start_seq; - sp->end_seq = next->end_seq; - } - tp->num_sacks--; - } -} - -static void tcp_sack_extend(struct tcp_opt *tp, struct sk_buff *old_skb, struct sk_buff *new_skb) -{ - struct tcp_sack_block *sp = &tp->selective_acks[0]; - int num_sacks = tp->num_sacks; - int this_sack; - - for(this_sack = 0; this_sack < num_sacks; this_sack++, sp++) { - if(sp->end_seq == TCP_SKB_CB(old_skb)->end_seq) - break; - } - if(this_sack >= num_sacks) - return; - sp->end_seq = TCP_SKB_CB(new_skb)->end_seq; -} - -/* This one checks to see if we can put data from the - * out_of_order queue into the receive_queue. - */ -static void tcp_ofo_queue(struct sock *sk) -{ - struct sk_buff *skb; - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - while ((skb = skb_peek(&tp->out_of_order_queue))) { - if (after(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) - break; - - if (!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) { - SOCK_DEBUG(sk, "ofo packet was already received \n"); - __skb_unlink(skb, skb->list); - kfree_skb(skb); - continue; - } - SOCK_DEBUG(sk, "ofo requeuing : rcv_next %X seq %X - %X\n", - tp->rcv_nxt, TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->end_seq); - - if(tp->sack_ok) - tcp_sack_remove_skb(tp, skb); - __skb_unlink(skb, skb->list); - __skb_queue_tail(&sk->receive_queue, skb); - tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq; - if(skb->h.th->fin) - tcp_fin(skb, sk, skb->h.th); - } -} - -static void tcp_data_queue(struct sock *sk, struct sk_buff *skb) -{ - struct sk_buff *skb1; - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Queue data for delivery to the user. - * Packets in sequence go to the receive queue. - * Out of sequence packets to the out_of_order_queue. - */ - if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) { - /* Ok. In sequence. */ - queue_and_out: - dst_confirm(sk->dst_cache); - __skb_queue_tail(&sk->receive_queue, skb); - tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq; - if(skb->h.th->fin) { - tcp_fin(skb, sk, skb->h.th); - } else { - tcp_remember_ack(tp, skb->h.th, skb); - } - /* This may have eaten into a SACK block. */ - if(tp->sack_ok && tp->num_sacks) - tcp_sack_remove_skb(tp, skb); - tcp_ofo_queue(sk); - - /* Turn on fast path. */ - if (skb_queue_len(&tp->out_of_order_queue) == 0) - tp->pred_flags = htonl(((tp->tcp_header_len >> 2) << 28) | - (0x10 << 16) | - tp->snd_wnd); - return; - } - - /* An old packet, either a retransmit or some packet got lost. */ - if (!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) { - /* A retransmit, 2nd most common case. Force an imediate ack. */ - SOCK_DEBUG(sk, "retransmit received: seq %X\n", TCP_SKB_CB(skb)->seq); - tcp_enter_quickack_mode(tp); - kfree_skb(skb); - return; - } - - if (before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { - /* Partial packet, seq < rcv_next < end_seq */ - SOCK_DEBUG(sk, "partial packet: rcv_next %X seq %X - %X\n", - tp->rcv_nxt, TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->end_seq); - - goto queue_and_out; - } - - /* Ok. This is an out_of_order segment, force an ack. */ - tp->delayed_acks++; - tcp_enter_quickack_mode(tp); - - /* Disable header prediction. */ - tp->pred_flags = 0; - - SOCK_DEBUG(sk, "out of order segment: rcv_next %X seq %X - %X\n", - tp->rcv_nxt, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq); - - if (skb_peek(&tp->out_of_order_queue) == NULL) { - /* Initial out of order segment, build 1 SACK. */ - if(tp->sack_ok) { - tp->num_sacks = 1; - tp->selective_acks[0].start_seq = TCP_SKB_CB(skb)->seq; - tp->selective_acks[0].end_seq = TCP_SKB_CB(skb)->end_seq; - } - __skb_queue_head(&tp->out_of_order_queue,skb); - } else { - for(skb1=tp->out_of_order_queue.prev; ; skb1 = skb1->prev) { - /* Already there. */ - if (TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb1)->seq) { - if (skb->len >= skb1->len) { - if(tp->sack_ok) - tcp_sack_extend(tp, skb1, skb); - __skb_append(skb1, skb); - __skb_unlink(skb1, skb1->list); - kfree_skb(skb1); - } else { - /* A duplicate, smaller than what is in the - * out-of-order queue right now, toss it. - */ - kfree_skb(skb); - } - break; - } - - if (after(TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb1)->seq)) { - __skb_append(skb1, skb); - if(tp->sack_ok) - tcp_sack_new_ofo_skb(sk, skb); - break; - } - - /* See if we've hit the start. If so insert. */ - if (skb1 == skb_peek(&tp->out_of_order_queue)) { - __skb_queue_head(&tp->out_of_order_queue,skb); - if(tp->sack_ok) - tcp_sack_new_ofo_skb(sk, skb); - break; - } - } - } -} - - -/* - * This routine handles the data. If there is room in the buffer, - * it will be have already been moved into it. If there is no - * room, then we will just have to discard the packet. - */ - -static int tcp_data(struct sk_buff *skb, struct sock *sk, unsigned int len) -{ - struct tcphdr *th; - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - char *str1 = "pfinet: tcp_data check point 1.\n"; - char *str2 = "pfinet: tcp_data check point 2.\n"; - char *str3 = "pfinet: tcp_data check point 3.\n"; - int stderr_fd = fileno (stderr); - - th = skb->h.th; - skb_pull(skb, th->doff*4); - skb_trim(skb, len - (th->doff*4)); - - if (skb->len == 0 && !th->fin) - return(0); - - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - /* - * If our receive queue has grown past its limits shrink it. - * Make sure to do this before moving snd_nxt, otherwise - * data might be acked for that we don't have enough room. - */ - if (atomic_read(&sk->rmem_alloc) > sk->rcvbuf) { - if (prune_queue(sk) < 0) { - /* Still not enough room. That can happen when - * skb->true_size differs significantly from skb->len. - */ - return 0; - } - } - - tcp_data_queue(sk, skb); - - write (stderr_fd, str2, strlen (str2) + 1); - fflush (stderr); - if (before(tp->rcv_nxt, tp->copied_seq)) { - printk(KERN_DEBUG "*** tcp.c:tcp_data bug acked < copied\n"); - tp->rcv_nxt = tp->copied_seq; - } - - /* Above, tcp_data_queue() increments delayed_acks appropriately. - * Now tell the user we may have some data. - */ - if (!sk->dead) { - sk->data_ready(sk,0); - } - write (stderr_fd, str3, strlen (str3) + 1); - fflush (stderr); - return(1); -} - -static void __tcp_data_snd_check(struct sock *sk, struct sk_buff *skb) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - if (!after(TCP_SKB_CB(skb)->end_seq, tp->snd_una + tp->snd_wnd) && - tcp_packets_in_flight(tp) < tp->snd_cwnd) { - /* Put more data onto the wire. */ - tcp_write_xmit(sk); - } else if (tp->packets_out == 0 && !tp->pending) { - /* Start probing the receivers window. */ - tcp_reset_xmit_timer(sk, TIME_PROBE0, tp->rto); - } -} - -static __inline__ void tcp_data_snd_check(struct sock *sk) -{ - struct sk_buff *skb = sk->tp_pinfo.af_tcp.send_head; - - if (skb != NULL) - __tcp_data_snd_check(sk, skb); -} - -/* - * Adapt the MSS value used to make delayed ack decision to the - * real world. - */ -static __inline__ void tcp_measure_rcv_mss(struct sock *sk, struct sk_buff *skb) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - unsigned int len = skb->len, lss; - - if (len > tp->rcv_mss) - tp->rcv_mss = len; - lss = tp->last_seg_size; - tp->last_seg_size = 0; - if (len >= 536) { - if (len == lss) - tp->rcv_mss = len; - tp->last_seg_size = len; - } -} - -/* - * Check if sending an ack is needed. - */ -static __inline__ void __tcp_ack_snd_check(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* This also takes care of updating the window. - * This if statement needs to be simplified. - * - * Rules for delaying an ack: - * - delay time <= 0.5 HZ - * - we don't have a window update to send - * - must send at least every 2 full sized packets - * - must send an ACK if we have any out of order data - * - * With an extra heuristic to handle loss of packet - * situations and also helping the sender leave slow - * start in an expediant manner. - */ - - /* Two full frames received or... */ - if (((tp->rcv_nxt - tp->rcv_wup) >= tp->rcv_mss * MAX_DELAY_ACK) || - /* We will update the window "significantly" or... */ - tcp_raise_window(sk) || - /* We entered "quick ACK" mode or... */ - tcp_in_quickack_mode(tp) || - /* We have out of order data */ - (skb_peek(&tp->out_of_order_queue) != NULL)) { - /* Then ack it now */ - tcp_send_ack(sk); - } else { - /* Else, send delayed ack. */ - tcp_send_delayed_ack(tp, HZ/2); - } -} - -static __inline__ void tcp_ack_snd_check(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - if (tp->delayed_acks == 0) { - /* We sent a data segment already. */ - return; - } - __tcp_ack_snd_check(sk); -} - - -/* - * This routine is only called when we have urgent data - * signalled. Its the 'slow' part of tcp_urg. It could be - * moved inline now as tcp_urg is only called from one - * place. We handle URGent data wrong. We have to - as - * BSD still doesn't use the correction from RFC961. - * For 1003.1g we should support a new option TCP_STDURG to permit - * either form (or just set the sysctl tcp_stdurg). - */ - -static void tcp_check_urg(struct sock * sk, struct tcphdr * th) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - u32 ptr = ntohs(th->urg_ptr); - - if (ptr && !sysctl_tcp_stdurg) - ptr--; - ptr += ntohl(th->seq); - - /* Ignore urgent data that we've already seen and read. */ - if (after(tp->copied_seq, ptr)) - return; - - /* Do we already have a newer (or duplicate) urgent pointer? */ - if (tp->urg_data && !after(ptr, tp->urg_seq)) - return; - - /* Tell the world about our new urgent pointer. */ - if (sk->proc != 0) { - if (sk->proc > 0) - kill_proc(sk->proc, SIGURG, 1); - else - kill_pg(-sk->proc, SIGURG, 1); - } - - /* We may be adding urgent data when the last byte read was - * urgent. To do this requires some care. We cannot just ignore - * tp->copied_seq since we would read the last urgent byte again - * as data, nor can we alter copied_seq until this data arrives - * or we break the sematics of SIOCATMARK (and thus sockatmark()) - */ - if (tp->urg_seq == tp->copied_seq) - tp->copied_seq++; /* Move the copied sequence on correctly */ - tp->urg_data = URG_NOTYET; - tp->urg_seq = ptr; - - /* Disable header prediction. */ - tp->pred_flags = 0; -} - -/* This is the 'fast' part of urgent handling. */ -static inline void tcp_urg(struct sock *sk, struct tcphdr *th, unsigned long len) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Check if we get a new urgent pointer - normally not. */ - if (th->urg) - tcp_check_urg(sk,th); - - /* Do we wait for any urgent data? - normally not... */ - if (tp->urg_data == URG_NOTYET) { - u32 ptr = tp->urg_seq - ntohl(th->seq) + (th->doff*4); - - /* Is the urgent pointer pointing into this packet? */ - if (ptr < len) { - tp->urg_data = URG_VALID | *(ptr + (unsigned char *) th); - if (!sk->dead) - sk->data_ready(sk,0); - } - } -} - -/* Clean the out_of_order queue if we can, trying to get - * the socket within its memory limits again. - * - * Return less than zero if we should start dropping frames - * until the socket owning process reads some of the data - * to stabilize the situation. - */ -static int prune_queue(struct sock *sk) -{ - struct tcp_opt *tp = &sk->tp_pinfo.af_tcp; - struct sk_buff * skb; - - SOCK_DEBUG(sk, "prune_queue: c=%x\n", tp->copied_seq); - - net_statistics.PruneCalled++; - - /* First, purge the out_of_order queue. */ - skb = __skb_dequeue_tail(&tp->out_of_order_queue); - if(skb != NULL) { - /* Free it all. */ - do { net_statistics.OfoPruned += skb->len; - kfree_skb(skb); - skb = __skb_dequeue_tail(&tp->out_of_order_queue); - } while(skb != NULL); - - /* Reset SACK state. A conforming SACK implementation will - * do the same at a timeout based retransmit. When a connection - * is in a sad state like this, we care only about integrity - * of the connection not performance. - */ - if(tp->sack_ok) - tp->num_sacks = 0; - } - - /* If we are really being abused, tell the caller to silently - * drop receive data on the floor. It will get retransmitted - * and hopefully then we'll have sufficient space. - * - * We used to try to purge the in-order packets too, but that - * turns out to be deadly and fraught with races. Consider: - * - * 1) If we acked the data, we absolutely cannot drop the - * packet. This data would then never be retransmitted. - * 2) It is possible, with a proper sequence of events involving - * delayed acks and backlog queue handling, to have the user - * read the data before it gets acked. The previous code - * here got this wrong, and it lead to data corruption. - * 3) Too much state changes happen when the FIN arrives, so once - * we've seen that we can't remove any in-order data safely. - * - * The net result is that removing in-order receive data is too - * complex for anyones sanity. So we don't do it anymore. But - * if we are really having our buffer space abused we stop accepting - * new receive data. - */ - if(atomic_read(&sk->rmem_alloc) < (sk->rcvbuf << 1)) - return 0; - - /* Massive buffer overcommit. */ - return -1; -} - -/* - * TCP receive function for the ESTABLISHED state. - * - * It is split into a fast path and a slow path. The fast path is - * disabled when: - * - A zero window was announced from us - zero window probing - * is only handled properly in the slow path. - * - Out of order segments arrived. - * - Urgent data is expected. - * - There is no buffer space left - * - Unexpected TCP flags/window values/header lengths are received - * (detected by checking the TCP header against pred_flags) - * - Data is sent in both directions. Fast path only supports pure senders - * or pure receivers (this means either the sequence number or the ack - * value must stay constant) - * - * When these conditions are not satisfied it drops into a standard - * receive procedure patterned after RFC793 to handle all cases. - * The first three cases are guaranteed by proper pred_flags setting, - * the rest is checked inline. Fast processing is turned on in - * tcp_data_queue when everything is OK. - */ -int tcp_rcv_established(struct sock *sk, struct sk_buff *skb, - struct tcphdr *th, unsigned len) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - int queued; - u32 flg; - char *str1 = "pfinet tcp_rcv_established check point 1\n"; - char *str2 = "pfinet tcp_rcv_established check point 2\n"; - int stderr_fd = fileno (stderr); - - /* - * Header prediction. - * The code follows the one in the famous - * "30 instruction TCP receive" Van Jacobson mail. - * - * Van's trick is to deposit buffers into socket queue - * on a device interrupt, to call tcp_recv function - * on the receive process context and checksum and copy - * the buffer to user space. smart... - * - * Our current scheme is not silly either but we take the - * extra cost of the net_bh soft interrupt processing... - * We do checksum and copy also but from device to kernel. - */ - - /* - * RFC1323: H1. Apply PAWS check first. - */ - if (tcp_fast_parse_options(sk, th, tp)) { - if (tp->saw_tstamp) { - if (tcp_paws_discard(tp, th, len)) { - tcp_statistics.TcpInErrs++; - if (!th->rst) { - tcp_send_ack(sk); - goto discard; - } - } - tcp_replace_ts_recent(sk, tp, - TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->end_seq); - } - } - - flg = *(((u32 *)th) + 3) & ~htonl(0xFC8 << 16); - - /* pred_flags is 0xS?10 << 16 + snd_wnd - * if header_predition is to be made - * 'S' will always be tp->tcp_header_len >> 2 - * '?' will be 0 else it will be !0 - * (when there are holes in the receive - * space for instance) - * PSH flag is ignored. - */ - - if (flg == tp->pred_flags && TCP_SKB_CB(skb)->seq == tp->rcv_nxt) { - if (len <= th->doff*4) { - /* Bulk data transfer: sender */ - if (len == th->doff*4) { - tcp_ack(sk, th, TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->ack_seq, len); - kfree_skb(skb); - tcp_data_snd_check(sk); - return 0; - } else { /* Header too small */ - tcp_statistics.TcpInErrs++; - goto discard; - } - } else if (TCP_SKB_CB(skb)->ack_seq == tp->snd_una && - atomic_read(&sk->rmem_alloc) <= sk->rcvbuf) { - /* Bulk data transfer: receiver */ - __skb_pull(skb,th->doff*4); - - tcp_measure_rcv_mss(sk, skb); - - /* DO NOT notify forward progress here. - * It saves dozen of CPU instructions in fast path. --ANK - */ - __skb_queue_tail(&sk->receive_queue, skb); - tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq; - - /* FIN bit check is not done since if FIN is set in - * this frame, the pred_flags won't match up. -DaveM - */ - sk->data_ready(sk, 0); - tcp_delack_estimator(tp); - - tcp_remember_ack(tp, th, skb); - - __tcp_ack_snd_check(sk); - return 0; - } - } - - /* - * Standard slow path. - */ - - if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq)) { - /* RFC793, page 37: "In all states except SYN-SENT, all reset - * (RST) segments are validated by checking their SEQ-fields." - * And page 69: "If an incoming segment is not acceptable, - * an acknowledgment should be sent in reply (unless the RST bit - * is set, if so drop the segment and return)". - */ - if (th->rst) - goto discard; - if (after(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { - SOCK_DEBUG(sk, "seq:%d end:%d wup:%d wnd:%d\n", - TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq, - tp->rcv_wup, tp->rcv_wnd); - } - tcp_send_ack(sk); - goto discard; - } - - if(th->syn && TCP_SKB_CB(skb)->seq != tp->syn_seq) { - SOCK_DEBUG(sk, "syn in established state\n"); - tcp_statistics.TcpInErrs++; - tcp_reset(sk); - return 1; - } - - if(th->rst) { - tcp_reset(sk); - goto discard; - } - - if(th->ack) - tcp_ack(sk, th, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->ack_seq, len); - - /* Process urgent data. */ - tcp_urg(sk, th, len); - - /* step 7: process the segment text */ - queued = tcp_data(skb, sk, len); - - /* This must be after tcp_data() does the skb_pull() to - * remove the header size from skb->len. - * - * Dave!!! Phrase above (and all about rcv_mss) has - * nothing to do with reality. rcv_mss must measure TOTAL - * size, including sacks, IP options etc. Hence, measure_rcv_mss - * must occure before pulling etc, otherwise it will flap - * like hell. Even putting it before tcp_data is wrong, - * it should use skb->tail - skb->nh.raw instead. - * --ANK (980805) - * - * BTW I broke it. Now all TCP options are handled equally - * in mss_clamp calculations (i.e. ignored, rfc1122), - * and mss_cache does include all of them (i.e. tstamps) - * except for sacks, to calulate effective mss faster. - * --ANK (980805) - */ - tcp_measure_rcv_mss(sk, skb); - - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr_fd); - /* Be careful, tcp_data() may have put this into TIME_WAIT. */ - if(sk->state != TCP_CLOSE) { - tcp_data_snd_check(sk); - tcp_ack_snd_check(sk); - } - write (stderr_fd, str2, strlen (str2) + 1); - fflush (stderr_fd); - - if (!queued) { - discard: - kfree_skb(skb); - } - - return 0; -} - -/* - * Process an incoming SYN or SYN-ACK for SYN_RECV sockets represented - * as an open_request. - */ - -struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb, - struct open_request *req) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - u32 flg; - - /* assumption: the socket is not in use. - * as we checked the user count on tcp_rcv and we're - * running from a soft interrupt. - */ - - /* Check for syn retransmission */ - flg = *(((u32 *)skb->h.th) + 3); - - flg &= __constant_htonl(0x00170000); - /* Only SYN set? */ - if (flg == __constant_htonl(0x00020000)) { - if (TCP_SKB_CB(skb)->seq == req->rcv_isn) { - /* retransmited syn. - */ - req->class->rtx_syn_ack(sk, req); - return NULL; - } else { - return sk; /* Pass new SYN to the listen socket. */ - } - } - - /* We know it's an ACK here */ - if (req->sk) { - /* socket already created but not - * yet accepted()... - */ - sk = req->sk; - } else { - /* In theory the packet could be for a cookie, but - * TIME_WAIT should guard us against this. - * XXX: Nevertheless check for cookies? - * This sequence number check is done again later, - * but we do it here to prevent syn flood attackers - * from creating big SYN_RECV sockets. - */ - if (!between(TCP_SKB_CB(skb)->ack_seq, req->snt_isn, req->snt_isn+1) || - !between(TCP_SKB_CB(skb)->seq, req->rcv_isn, - req->rcv_isn+1+req->rcv_wnd)) { - req->class->send_reset(skb); - return NULL; - } - - sk = tp->af_specific->syn_recv_sock(sk, skb, req, NULL); - tcp_dec_slow_timer(TCP_SLT_SYNACK); - if (sk == NULL) - return NULL; - - req->expires = 0UL; - req->sk = sk; - } - skb_orphan(skb); - skb_set_owner_r(skb, sk); - return sk; -} - -/* - * This function implements the receiving procedure of RFC 793 for - * all states except ESTABLISHED and TIME_WAIT. - * It's called from both tcp_v4_rcv and tcp_v6_rcv and should be - * address independent. - */ - -int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, - struct tcphdr *th, unsigned len) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - int queued = 0; - - switch (sk->state) { - case TCP_CLOSE: - /* When state == CLOSED, hash lookup always fails. - * - * But, there is a back door, the backlog queue. - * If we have a sequence of packets in the backlog - * during __release_sock() which have a sequence such - * that: - * packet X causes entry to TCP_CLOSE state - * ... - * packet X + N has FIN bit set - * - * We report a (luckily) harmless error in this case. - * The issue is that backlog queue processing bypasses - * any hash lookups (we know which socket packets are for). - * The correct behavior here is what 2.0.x did, since - * a TCP_CLOSE socket does not exist. Drop the frame - * and send a RST back to the other end. - */ - return 1; - - case TCP_LISTEN: - /* These use the socket TOS.. - * might want to be the received TOS - */ - if(th->ack) - return 1; - - if(th->syn) { - if(tp->af_specific->conn_request(sk, skb, 0) < 0) - return 1; - - /* Now we have several options: In theory there is - * nothing else in the frame. KA9Q has an option to - * send data with the syn, BSD accepts data with the - * syn up to the [to be] advertised window and - * Solaris 2.1 gives you a protocol error. For now - * we just ignore it, that fits the spec precisely - * and avoids incompatibilities. It would be nice in - * future to drop through and process the data. - * - * Now that TTCP is starting to be used we ought to - * queue this data. - * But, this leaves one open to an easy denial of - * service attack, and SYN cookies can't defend - * against this problem. So, we drop the data - * in the interest of security over speed. - */ - goto discard; - } - - goto discard; - break; - - case TCP_SYN_SENT: - /* SYN sent means we have to look for a suitable ack and - * either reset for bad matches or go to connected. - * The SYN_SENT case is unusual and should - * not be in line code. [AC] - */ - if(th->ack) { - /* rfc793: - * "If the state is SYN-SENT then - * first check the ACK bit - * If the ACK bit is set - * If SEG.ACK =< ISS, or SEG.ACK > SND.NXT, send - * a reset (unless the RST bit is set, if so drop - * the segment and return)" - * - * I cite this place to emphasize one essential - * detail, this check is different of one - * in established state: SND.UNA <= SEG.ACK <= SND.NXT. - * SEG_ACK == SND.UNA == ISS is invalid in SYN-SENT, - * because we have no previous data sent before SYN. - * --ANK(990513) - * - * We do not send data with SYN, so that RFC-correct - * test reduces to: - */ - if (sk->zapped || - TCP_SKB_CB(skb)->ack_seq != tp->snd_nxt) - return 1; - - /* Now ACK is acceptable. - * - * "If the RST bit is set - * If the ACK was acceptable then signal the user "error: - * connection reset", drop the segment, enter CLOSED state, - * delete TCB, and return." - */ - - if (th->rst) { - tcp_reset(sk); - goto discard; - } - - /* rfc793: - * "fifth, if neither of the SYN or RST bits is set then - * drop the segment and return." - * - * See note below! - * --ANK(990513) - */ - - if (!th->syn) - goto discard; - - /* rfc793: - * "If the SYN bit is on ... - * are acceptable then ... - * (our SYN has been ACKed), change the connection - * state to ESTABLISHED..." - * - * Do you see? SYN-less ACKs in SYN-SENT state are - * completely ignored. - * - * The bug causing stalled SYN-SENT sockets - * was here: tcp_ack advanced snd_una and canceled - * retransmit timer, so that bare ACK received - * in SYN-SENT state (even with invalid ack==ISS, - * because tcp_ack check is too weak for SYN-SENT) - * causes moving socket to invalid semi-SYN-SENT, - * semi-ESTABLISHED state and connection hangs. - * - * There exist buggy stacks, which really send - * such ACKs: f.e. 202.226.91.94 (okigate.oki.co.jp) - * Actually, if this host did not try to get something - * from ftp.inr.ac.ru I'd never find this bug 8) - * - * --ANK (990514) - */ - - tp->snd_wl1 = TCP_SKB_CB(skb)->seq; - tcp_ack(sk,th, TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->ack_seq, len); - - /* Ok.. it's good. Set up sequence numbers and - * move to established. - */ - tp->rcv_nxt = TCP_SKB_CB(skb)->seq+1; - tp->rcv_wup = TCP_SKB_CB(skb)->seq+1; - - /* RFC1323: The window in SYN & SYN/ACK segments is - * never scaled. - */ - tp->snd_wnd = htons(th->window); - tp->snd_wl1 = TCP_SKB_CB(skb)->seq; - tp->snd_wl2 = TCP_SKB_CB(skb)->ack_seq; - tp->fin_seq = TCP_SKB_CB(skb)->seq; - - tcp_set_state(sk, TCP_ESTABLISHED); - tcp_parse_options(sk, th, tp, 0); - - if (tp->wscale_ok == 0) { - tp->snd_wscale = tp->rcv_wscale = 0; - tp->window_clamp = min(tp->window_clamp,65535); - } - - if (tp->tstamp_ok) { - tp->tcp_header_len = - sizeof(struct tcphdr) + TCPOLEN_TSTAMP_ALIGNED; - } else - tp->tcp_header_len = sizeof(struct tcphdr); - if (tp->saw_tstamp) { - tp->ts_recent = tp->rcv_tsval; - tp->ts_recent_stamp = tcp_time_stamp; - } - - /* Can't be earlier, doff would be wrong. */ - tcp_send_ack(sk); - - sk->dport = th->source; - tp->copied_seq = tp->rcv_nxt; - - if(!sk->dead) { - sk->state_change(sk); - sock_wake_async(sk->socket, 0); - } - } else { - if(th->syn && !th->rst) { - /* The previous version of the code - * checked for "connecting to self" - * here. that check is done now in - * tcp_connect. - */ - tcp_set_state(sk, TCP_SYN_RECV); - tcp_parse_options(sk, th, tp, 0); - if (tp->saw_tstamp) { - tp->ts_recent = tp->rcv_tsval; - tp->ts_recent_stamp = tcp_time_stamp; - } - - tp->rcv_nxt = TCP_SKB_CB(skb)->seq + 1; - tp->rcv_wup = TCP_SKB_CB(skb)->seq + 1; - - /* RFC1323: The window in SYN & SYN/ACK segments is - * never scaled. - */ - tp->snd_wnd = htons(th->window); - tp->snd_wl1 = TCP_SKB_CB(skb)->seq; - - tcp_send_synack(sk); - } else - break; - } - - /* tp->tcp_header_len and tp->mss_clamp - probably changed, synchronize mss. - */ - tcp_sync_mss(sk, tp->pmtu_cookie); - tp->rcv_mss = tp->mss_cache; - - if (sk->state == TCP_SYN_RECV) - goto discard; - - goto step6; - } - - /* Parse the tcp_options present on this header. - * By this point we really only expect timestamps. - * Note that this really has to be here and not later for PAWS - * (RFC1323) to work. - */ - if (tcp_fast_parse_options(sk, th, tp)) { - /* NOTE: assumes saw_tstamp is never set if we didn't - * negotiate the option. tcp_fast_parse_options() must - * guarantee this. - */ - if (tp->saw_tstamp) { - if (tcp_paws_discard(tp, th, len)) { - tcp_statistics.TcpInErrs++; - if (!th->rst) { - tcp_send_ack(sk); - goto discard; - } - } - tcp_replace_ts_recent(sk, tp, - TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->end_seq); - } - } - - /* The silly FIN test here is necessary to see an advancing ACK in - * retransmitted FIN frames properly. Consider the following sequence: - * - * host1 --> host2 FIN XSEQ:XSEQ(0) ack YSEQ - * host2 --> host1 FIN YSEQ:YSEQ(0) ack XSEQ - * host1 --> host2 XSEQ:XSEQ(0) ack YSEQ+1 - * host2 --> host1 FIN YSEQ:YSEQ(0) ack XSEQ+1 (fails tcp_sequence test) - * - * At this point the connection will deadlock with host1 believing - * that his FIN is never ACK'd, and thus it will retransmit it's FIN - * forever. The following fix is from Taral (taral@taral.net). - */ - - /* step 1: check sequence number */ - if (!tcp_sequence(tp, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq) && - !(th->fin && TCP_SKB_CB(skb)->end_seq == tp->rcv_nxt)) { - if (!th->rst) { - tcp_send_ack(sk); - } - goto discard; - } - - /* step 2: check RST bit */ - if(th->rst) { - tcp_reset(sk); - goto discard; - } - - /* step 3: check security and precedence [ignored] */ - - /* step 4: - * - * Check for a SYN, and ensure it matches the SYN we were - * first sent. We have to handle the rather unusual (but valid) - * sequence that KA9Q derived products may generate of - * - * SYN - * SYN|ACK Data - * ACK (lost) - * SYN|ACK Data + More Data - * .. we must ACK not RST... - * - * We keep syn_seq as the sequence space occupied by the - * original syn. - */ - - if (th->syn && TCP_SKB_CB(skb)->seq != tp->syn_seq) { - tcp_reset(sk); - return 1; - } - - /* step 5: check the ACK field */ - if (th->ack) { - int acceptable = tcp_ack(sk, th, TCP_SKB_CB(skb)->seq, - TCP_SKB_CB(skb)->ack_seq, len); - - switch(sk->state) { - case TCP_SYN_RECV: - if (acceptable) { - tcp_set_state(sk, TCP_ESTABLISHED); - sk->dport = th->source; - tp->copied_seq = tp->rcv_nxt; - - if(!sk->dead) - sk->state_change(sk); - - tp->snd_una = TCP_SKB_CB(skb)->ack_seq; - tp->snd_wnd = htons(th->window) << tp->snd_wscale; - tp->snd_wl1 = TCP_SKB_CB(skb)->seq; - tp->snd_wl2 = TCP_SKB_CB(skb)->ack_seq; - - } else { - SOCK_DEBUG(sk, "bad ack\n"); - return 1; - } - break; - - case TCP_FIN_WAIT1: - if (tp->snd_una == tp->write_seq) { - sk->shutdown |= SEND_SHUTDOWN; - tcp_set_state(sk, TCP_FIN_WAIT2); - if (!sk->dead) - sk->state_change(sk); - else - tcp_reset_msl_timer(sk, TIME_CLOSE, sysctl_tcp_fin_timeout); - } - break; - - case TCP_CLOSING: - if (tp->snd_una == tp->write_seq) { - tcp_time_wait(sk); - goto discard; - } - break; - - case TCP_LAST_ACK: - if (tp->snd_una == tp->write_seq) { - sk->shutdown = SHUTDOWN_MASK; - tcp_set_state(sk,TCP_CLOSE); - if (!sk->dead) - sk->state_change(sk); - goto discard; - } - break; - } - } else - goto discard; - -step6: - /* step 6: check the URG bit */ - tcp_urg(sk, th, len); - - /* step 7: process the segment text */ - switch (sk->state) { - case TCP_CLOSE_WAIT: - case TCP_CLOSING: - if (!before(TCP_SKB_CB(skb)->seq, tp->fin_seq)) - break; - - case TCP_FIN_WAIT1: - case TCP_FIN_WAIT2: - /* RFC 793 says to queue data in these states, - * RFC 1122 says we MUST send a reset. - * BSD 4.4 also does reset. - */ - if ((sk->shutdown & RCV_SHUTDOWN) && sk->dead) { - if (after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt)) { - tcp_reset(sk); - return 1; - } - } - - case TCP_ESTABLISHED: - queued = tcp_data(skb, sk, len); - - /* This must be after tcp_data() does the skb_pull() to - * remove the header size from skb->len. - */ - tcp_measure_rcv_mss(sk, skb); - break; - } - - tcp_data_snd_check(sk); - tcp_ack_snd_check(sk); - - if (!queued) { -discard: - kfree_skb(skb); - } - return 0; -} diff --git a/pfinet.old/linux-src/net/ipv4/tcp_output.c~ b/pfinet.old/linux-src/net/ipv4/tcp_output.c~ deleted file mode 100644 index df6d48f2..00000000 --- a/pfinet.old/linux-src/net/ipv4/tcp_output.c~ +++ /dev/null @@ -1,1150 +0,0 @@ -/* - * INET An implementation of the TCP/IP protocol suite for the LINUX - * operating system. INET is implemented using the BSD Socket - * interface as the means of communication with the user level. - * - * Implementation of the Transmission Control Protocol(TCP). - * - * Version: $Id: tcp_output.c,v 1.108.2.1 1999/05/14 23:07:36 davem Exp $ - * - * Authors: Ross Biro, - * Fred N. van Kempen, - * Mark Evans, - * Corey Minyard - * Florian La Roche, - * Charles Hedrick, - * Linus Torvalds, - * Alan Cox, - * Matthew Dillon, - * Arnt Gulbrandsen, - * Jorge Cwik, - */ - -/* - * Changes: Pedro Roque : Retransmit queue handled by TCP. - * : Fragmentation on mtu decrease - * : Segment collapse on retransmit - * : AF independence - * - * Linus Torvalds : send_delayed_ack - * David S. Miller : Charge memory using the right skb - * during syn/ack processing. - * David S. Miller : Output engine completely rewritten. - * Andrea Arcangeli: SYNACK carry ts_recent in tsecr. - * - */ - -#include - -extern int sysctl_tcp_timestamps; -extern int sysctl_tcp_window_scaling; -extern int sysctl_tcp_sack; - -/* People can turn this off for buggy TCP's found in printers etc. */ -int sysctl_tcp_retrans_collapse = 1; - -/* Get rid of any delayed acks, we sent one already.. */ -static __inline__ void clear_delayed_acks(struct sock * sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - tp->delayed_acks = 0; - if(tcp_in_quickack_mode(tp)) - tcp_exit_quickack_mode(tp); - tcp_clear_xmit_timer(sk, TIME_DACK); -} - -static __inline__ void update_send_head(struct sock *sk) -{ - struct tcp_opt *tp = &sk->tp_pinfo.af_tcp; - - tp->send_head = tp->send_head->next; - if (tp->send_head == (struct sk_buff *) &sk->write_queue) - tp->send_head = NULL; -} - -/* This routine actually transmits TCP packets queued in by - * tcp_do_sendmsg(). This is used by both the initial - * transmission and possible later retransmissions. - * All SKB's seen here are completely headerless. It is our - * job to build the TCP header, and pass the packet down to - * IP so it can do the same plus pass the packet off to the - * device. - * - * We are working here with either a clone of the original - * SKB, or a fresh unique copy made by the retransmit engine. - */ -void tcp_transmit_skb(struct sock *sk, struct sk_buff *skb) -{ - if(skb != NULL) { - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct tcp_skb_cb *tcb = TCP_SKB_CB(skb); - int tcp_header_size = tp->tcp_header_len; - struct tcphdr *th; - int sysctl_flags; - -#define SYSCTL_FLAG_TSTAMPS 0x1 -#define SYSCTL_FLAG_WSCALE 0x2 -#define SYSCTL_FLAG_SACK 0x4 - - sysctl_flags = 0; - if(tcb->flags & TCPCB_FLAG_SYN) { - tcp_header_size = sizeof(struct tcphdr) + TCPOLEN_MSS; - if(sysctl_tcp_timestamps) { - tcp_header_size += TCPOLEN_TSTAMP_ALIGNED; - sysctl_flags |= SYSCTL_FLAG_TSTAMPS; - } - if(sysctl_tcp_window_scaling) { - tcp_header_size += TCPOLEN_WSCALE_ALIGNED; - sysctl_flags |= SYSCTL_FLAG_WSCALE; - } - if(sysctl_tcp_sack) { - sysctl_flags |= SYSCTL_FLAG_SACK; - if(!(sysctl_flags & SYSCTL_FLAG_TSTAMPS)) - tcp_header_size += TCPOLEN_SACKPERM_ALIGNED; - } - } else if(tp->sack_ok && tp->num_sacks) { - /* A SACK is 2 pad bytes, a 2 byte header, plus - * 2 32-bit sequence numbers for each SACK block. - */ - tcp_header_size += (TCPOLEN_SACK_BASE_ALIGNED + - (tp->num_sacks * TCPOLEN_SACK_PERBLOCK)); - } - th = (struct tcphdr *) skb_push(skb, tcp_header_size); - skb->h.th = th; - skb_set_owner_w(skb, sk); - - /* Build TCP header and checksum it. */ - th->source = sk->sport; - th->dest = sk->dport; - th->seq = htonl(TCP_SKB_CB(skb)->seq); - th->ack_seq = htonl(tp->rcv_nxt); - th->doff = (tcp_header_size >> 2); - th->res1 = 0; - *(((__u8 *)th) + 13) = tcb->flags; - if(!(tcb->flags & TCPCB_FLAG_SYN)) - th->window = htons(tcp_select_window(sk)); - th->check = 0; - th->urg_ptr = ntohs(tcb->urg_ptr); - if(tcb->flags & TCPCB_FLAG_SYN) { - /* RFC1323: The window in SYN & SYN/ACK segments - * is never scaled. - */ - th->window = htons(tp->rcv_wnd); - tcp_syn_build_options((__u32 *)(th + 1), tp->mss_clamp, - (sysctl_flags & SYSCTL_FLAG_TSTAMPS), - (sysctl_flags & SYSCTL_FLAG_SACK), - (sysctl_flags & SYSCTL_FLAG_WSCALE), - tp->rcv_wscale, - TCP_SKB_CB(skb)->when, - tp->ts_recent); - } else { - tcp_build_and_update_options((__u32 *)(th + 1), - tp, TCP_SKB_CB(skb)->when); - } - tp->af_specific->send_check(sk, th, skb->len, skb); - - clear_delayed_acks(sk); - tp->last_ack_sent = tp->rcv_nxt; - tcp_statistics.TcpOutSegs++; - tp->af_specific->queue_xmit(skb); - } -#undef SYSCTL_FLAG_TSTAMPS -#undef SYSCTL_FLAG_WSCALE -#undef SYSCTL_FLAG_SACK -} - -/* This is the main buffer sending routine. We queue the buffer - * and decide whether to queue or transmit now. - */ -void tcp_send_skb(struct sock *sk, struct sk_buff *skb, int force_queue) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Advance write_seq and place onto the write_queue. */ - tp->write_seq += (TCP_SKB_CB(skb)->end_seq - TCP_SKB_CB(skb)->seq); - __skb_queue_tail(&sk->write_queue, skb); - - if (!force_queue && tp->send_head == NULL && tcp_snd_test(sk, skb)) { - /* Send it out now. */ - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tp->snd_nxt = TCP_SKB_CB(skb)->end_seq; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(skb, GFP_KERNEL)); - if(!tcp_timer_is_set(sk, TIME_RETRANS)) - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } else { - /* Queue it, remembering where we must start sending. */ - if (tp->send_head == NULL) - tp->send_head = skb; - if (!force_queue && tp->packets_out == 0 && !tp->pending) { - tp->pending = TIME_PROBE0; - tcp_reset_xmit_timer(sk, TIME_PROBE0, tp->rto); - } - } -} - -/* Function to create two new TCP segments. Shrinks the given segment - * to the specified size and appends a new segment with the rest of the - * packet to the list. This won't be called frequently, I hope. - * Remember, these are still headerless SKBs at this point. - */ -static int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len) -{ - struct sk_buff *buff; - int nsize = skb->len - len; - u16 flags; - - /* Get a new skb... force flag on. */ - buff = sock_wmalloc(sk, - (nsize + MAX_HEADER + sk->prot->max_header), - 1, GFP_ATOMIC); - if (buff == NULL) - return -1; /* We'll just try again later. */ - - /* Reserve space for headers. */ - skb_reserve(buff, MAX_HEADER + sk->prot->max_header); - - /* Correct the sequence numbers. */ - TCP_SKB_CB(buff)->seq = TCP_SKB_CB(skb)->seq + len; - TCP_SKB_CB(buff)->end_seq = TCP_SKB_CB(skb)->end_seq; - - /* PSH and FIN should only be set in the second packet. */ - flags = TCP_SKB_CB(skb)->flags; - TCP_SKB_CB(skb)->flags = flags & ~(TCPCB_FLAG_FIN | TCPCB_FLAG_PSH); - if(flags & TCPCB_FLAG_URG) { - u16 old_urg_ptr = TCP_SKB_CB(skb)->urg_ptr; - - /* Urgent data is always a pain in the ass. */ - if(old_urg_ptr > len) { - TCP_SKB_CB(skb)->flags &= ~(TCPCB_FLAG_URG); - TCP_SKB_CB(skb)->urg_ptr = 0; - TCP_SKB_CB(buff)->urg_ptr = old_urg_ptr - len; - } else { - flags &= ~(TCPCB_FLAG_URG); - } - } - if(!(flags & TCPCB_FLAG_URG)) - TCP_SKB_CB(buff)->urg_ptr = 0; - TCP_SKB_CB(buff)->flags = flags; - TCP_SKB_CB(buff)->sacked = 0; - - /* Copy and checksum data tail into the new buffer. */ - buff->csum = csum_partial_copy(skb->data + len, skb_put(buff, nsize), - nsize, 0); - - /* This takes care of the FIN sequence number too. */ - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(buff)->seq; - skb_trim(skb, len); - - /* Rechecksum original buffer. */ - skb->csum = csum_partial(skb->data, skb->len, 0); - - /* Looks stupid, but our code really uses when of - * skbs, which it never sent before. --ANK - */ - TCP_SKB_CB(buff)->when = TCP_SKB_CB(skb)->when; - - /* Link BUFF into the send queue. */ - __skb_append(skb, buff); - - return 0; -} - -/* This function synchronize snd mss to current pmtu/exthdr set. - - tp->user_mss is mss set by user by TCP_MAXSEG. It does NOT counts - for TCP options, but includes only bare TCP header. - - tp->mss_clamp is mss negotiated at connection setup. - It is minumum of user_mss and mss received with SYN. - It also does not include TCP options. - - tp->pmtu_cookie is last pmtu, seen by this function. - - tp->mss_cache is current effective sending mss, including - all tcp options except for SACKs. It is evaluated, - taking into account current pmtu, but never exceeds - tp->mss_clamp. - - NOTE1. rfc1122 clearly states that advertised MSS - DOES NOT include either tcp or ip options. - - NOTE2. tp->pmtu_cookie and tp->mss_cache are READ ONLY outside - this function. --ANK (980731) - */ - -int tcp_sync_mss(struct sock *sk, u32 pmtu) -{ - struct tcp_opt *tp = &sk->tp_pinfo.af_tcp; - int mss_now; - - /* Calculate base mss without TCP options: - It is MMS_S - sizeof(tcphdr) of rfc1122 - */ - mss_now = pmtu - tp->af_specific->net_header_len - sizeof(struct tcphdr); - - /* Clamp it (mss_clamp does not include tcp options) */ - if (mss_now > tp->mss_clamp) - mss_now = tp->mss_clamp; - - /* Now subtract TCP options size, not including SACKs */ - mss_now -= tp->tcp_header_len - sizeof(struct tcphdr); - - /* Now subtract optional transport overhead */ - mss_now -= tp->ext_header_len; - - /* It we got too small (or even negative) value, - clamp it by 8 from below. Why 8 ? - Well, it could be 1 with the same success, - but if IP accepted segment of length 1, - it would love 8 even more 8) --ANK (980731) - */ - if (mss_now < 8) - mss_now = 8; - - /* And store cached results */ - tp->pmtu_cookie = pmtu; - tp->mss_cache = mss_now; - return mss_now; -} - - -/* This routine writes packets to the network. It advances the - * send_head. This happens as incoming acks open up the remote - * window for us. - */ -void tcp_write_xmit(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - unsigned int mss_now; - - /* Account for SACKS, we may need to fragment due to this. - * It is just like the real MSS changing on us midstream. - * We also handle things correctly when the user adds some - * IP options mid-stream. Silly to do, but cover it. - */ - mss_now = tcp_current_mss(sk); - - /* If we are zapped, the bytes will have to remain here. - * In time closedown will empty the write queue and all - * will be happy. - */ - if(!sk->zapped) { - struct sk_buff *skb; - int sent_pkts = 0; - - /* Anything on the transmit queue that fits the window can - * be added providing we are: - * - * a) following SWS avoidance [and Nagle algorithm] - * b) not exceeding our congestion window. - * c) not retransmitting [Nagle] - */ - while((skb = tp->send_head) && tcp_snd_test(sk, skb)) { - if (skb->len > mss_now) { - if (tcp_fragment(sk, skb, mss_now)) - break; - } - - /* Advance the send_head. This one is going out. */ - update_send_head(sk); - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tp->snd_nxt = TCP_SKB_CB(skb)->end_seq; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); - sent_pkts = 1; - } - - /* If we sent anything, make sure the retransmit - * timer is active. - */ - if (sent_pkts && !tcp_timer_is_set(sk, TIME_RETRANS)) - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } -} - -/* This function returns the amount that we can raise the - * usable window based on the following constraints - * - * 1. The window can never be shrunk once it is offered (RFC 793) - * 2. We limit memory per socket - * - * RFC 1122: - * "the suggested [SWS] avoidance algorithm for the receiver is to keep - * RECV.NEXT + RCV.WIN fixed until: - * RCV.BUFF - RCV.USER - RCV.WINDOW >= min(1/2 RCV.BUFF, MSS)" - * - * i.e. don't raise the right edge of the window until you can raise - * it at least MSS bytes. - * - * Unfortunately, the recommended algorithm breaks header prediction, - * since header prediction assumes th->window stays fixed. - * - * Strictly speaking, keeping th->window fixed violates the receiver - * side SWS prevention criteria. The problem is that under this rule - * a stream of single byte packets will cause the right side of the - * window to always advance by a single byte. - * - * Of course, if the sender implements sender side SWS prevention - * then this will not be a problem. - * - * BSD seems to make the following compromise: - * - * If the free space is less than the 1/4 of the maximum - * space available and the free space is less than 1/2 mss, - * then set the window to 0. - * Otherwise, just prevent the window from shrinking - * and from being larger than the largest representable value. - * - * This prevents incremental opening of the window in the regime - * where TCP is limited by the speed of the reader side taking - * data out of the TCP receive queue. It does nothing about - * those cases where the window is constrained on the sender side - * because the pipeline is full. - * - * BSD also seems to "accidentally" limit itself to windows that are a - * multiple of MSS, at least until the free space gets quite small. - * This would appear to be a side effect of the mbuf implementation. - * Combining these two algorithms results in the observed behavior - * of having a fixed window size at almost all times. - * - * Below we obtain similar behavior by forcing the offered window to - * a multiple of the mss when it is feasible to do so. - * - * Note, we don't "adjust" for TIMESTAMP or SACK option bytes. - */ -u32 __tcp_select_window(struct sock *sk) -{ - struct tcp_opt *tp = &sk->tp_pinfo.af_tcp; - unsigned int mss = tp->mss_cache; - int free_space; - u32 window; - - /* Sometimes free_space can be < 0. */ - free_space = (sk->rcvbuf - atomic_read(&sk->rmem_alloc)) / 2; - if (tp->window_clamp) { - if (free_space > ((int) tp->window_clamp)) - free_space = tp->window_clamp; - mss = min(tp->window_clamp, mss); - } else { - printk("tcp_select_window: tp->window_clamp == 0.\n"); - } - - if (mss < 1) { - mss = 1; - printk("tcp_select_window: sk->mss fell to 0.\n"); - } - - if ((free_space < (sk->rcvbuf/4)) && (free_space < ((int) (mss/2)))) { - window = 0; - tp->pred_flags = 0; - } else { - /* Get the largest window that is a nice multiple of mss. - * Window clamp already applied above. - * If our current window offering is within 1 mss of the - * free space we just keep it. This prevents the divide - * and multiply from happening most of the time. - * We also don't do any window rounding when the free space - * is too small. - */ - window = tp->rcv_wnd; - if ((((int) window) <= (free_space - ((int) mss))) || - (((int) window) > free_space)) - window = (((unsigned int) free_space)/mss)*mss; - } - return window; -} - -/* Attempt to collapse two adjacent SKB's during retransmission. */ -static void tcp_retrans_try_collapse(struct sock *sk, struct sk_buff *skb, int mss_now) -{ - struct sk_buff *next_skb = skb->next; - - /* The first test we must make is that neither of these two - * SKB's are still referenced by someone else. - */ - if(!skb_cloned(skb) && !skb_cloned(next_skb)) { - int skb_size = skb->len, next_skb_size = next_skb->len; - u16 flags = TCP_SKB_CB(skb)->flags; - - /* Punt if the first SKB has URG set. */ - if(flags & TCPCB_FLAG_URG) - return; - - /* Also punt if next skb has been SACK'd. */ - if(TCP_SKB_CB(next_skb)->sacked & TCPCB_SACKED_ACKED) - return; - - /* Punt if not enough space exists in the first SKB for - * the data in the second, or the total combined payload - * would exceed the MSS. - */ - if ((next_skb_size > skb_tailroom(skb)) || - ((skb_size + next_skb_size) > mss_now)) - return; - - /* Ok. We will be able to collapse the packet. */ - __skb_unlink(next_skb, next_skb->list); - - if(skb->len % 4) { - /* Must copy and rechecksum all data. */ - memcpy(skb_put(skb, next_skb_size), next_skb->data, next_skb_size); - skb->csum = csum_partial(skb->data, skb->len, 0); - } else { - /* Optimize, actually we could also combine next_skb->csum - * to skb->csum using a single add w/carry operation too. - */ - skb->csum = csum_partial_copy(next_skb->data, - skb_put(skb, next_skb_size), - next_skb_size, skb->csum); - } - - /* Update sequence range on original skb. */ - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(next_skb)->end_seq; - - /* Merge over control information. */ - flags |= TCP_SKB_CB(next_skb)->flags; /* This moves PSH/FIN etc. over */ - if(flags & TCPCB_FLAG_URG) { - u16 urgptr = TCP_SKB_CB(next_skb)->urg_ptr; - TCP_SKB_CB(skb)->urg_ptr = urgptr + skb_size; - } - TCP_SKB_CB(skb)->flags = flags; - - /* All done, get rid of second SKB and account for it so - * packet counting does not break. - */ - kfree_skb(next_skb); - sk->tp_pinfo.af_tcp.packets_out--; - } -} - -/* Do a simple retransmit without using the backoff mechanisms in - * tcp_timer. This is used for path mtu discovery. - * The socket is already locked here. - */ -void tcp_simple_retransmit(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb, *old_next_skb; - unsigned int mss = tcp_current_mss(sk); - - /* Don't muck with the congestion window here. */ - tp->dup_acks = 0; - tp->high_seq = tp->snd_nxt; - tp->retrans_head = NULL; - - /* Input control flow will see that this was retransmitted - * and not use it for RTT calculation in the absence of - * the timestamp option. - */ - for (old_next_skb = skb = skb_peek(&sk->write_queue); - ((skb != tp->send_head) && - (skb != (struct sk_buff *)&sk->write_queue)); - skb = skb->next) { - int resend_skb = 0; - - /* Our goal is to push out the packets which we - * sent already, but are being chopped up now to - * account for the PMTU information we have. - * - * As we resend the queue, packets are fragmented - * into two pieces, and when we try to send the - * second piece it may be collapsed together with - * a subsequent packet, and so on. -DaveM - */ - if (old_next_skb != skb || skb->len > mss) - resend_skb = 1; - old_next_skb = skb->next; - if (resend_skb != 0) - tcp_retransmit_skb(sk, skb); - } -} - -static __inline__ void update_retrans_head(struct sock *sk) -{ - struct tcp_opt *tp = &sk->tp_pinfo.af_tcp; - - tp->retrans_head = tp->retrans_head->next; - if((tp->retrans_head == tp->send_head) || - (tp->retrans_head == (struct sk_buff *) &sk->write_queue)) { - tp->retrans_head = NULL; - tp->rexmt_done = 1; - } -} - -/* This retransmits one SKB. Policy decisions and retransmit queue - * state updates are done by the caller. Returns non-zero if an - * error occurred which prevented the send. - */ -int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - unsigned int cur_mss = tcp_current_mss(sk); - - if(skb->len > cur_mss) { - if(tcp_fragment(sk, skb, cur_mss)) - return 1; /* We'll try again later. */ - - /* New SKB created, account for it. */ - tp->packets_out++; - } - - /* Collapse two adjacent packets if worthwhile and we can. */ - if(!(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_SYN) && - (skb->len < (cur_mss >> 1)) && - (skb->next != tp->send_head) && - (skb->next != (struct sk_buff *)&sk->write_queue) && - (sysctl_tcp_retrans_collapse != 0)) - tcp_retrans_try_collapse(sk, skb, cur_mss); - - if(tp->af_specific->rebuild_header(sk)) - return 1; /* Routing failure or similar. */ - - /* Some Solaris stacks overoptimize and ignore the FIN on a - * retransmit when old data is attached. So strip it off - * since it is cheap to do so and saves bytes on the network. - */ - if(skb->len > 0 && - (TCP_SKB_CB(skb)->flags & TCPCB_FLAG_FIN) && - tp->snd_una == (TCP_SKB_CB(skb)->end_seq - 1)) { - TCP_SKB_CB(skb)->seq = TCP_SKB_CB(skb)->end_seq - 1; - skb_trim(skb, 0); - skb->csum = 0; - } - - /* Ok, we're gonna send it out, update state. */ - TCP_SKB_CB(skb)->sacked |= TCPCB_SACKED_RETRANS; - tp->retrans_out++; - - /* Make a copy, if the first transmission SKB clone we made - * is still in somebody's hands, else make a clone. - */ - TCP_SKB_CB(skb)->when = tcp_time_stamp; - if(skb_cloned(skb)) - skb = skb_copy(skb, GFP_ATOMIC); - else - skb = skb_clone(skb, GFP_ATOMIC); - - tcp_transmit_skb(sk, skb); - - /* Update global TCP statistics and return success. */ - sk->prot->retransmits++; - tcp_statistics.TcpRetransSegs++; - - return 0; -} - -/* This gets called after a retransmit timeout, and the initially - * retransmitted data is acknowledged. It tries to continue - * resending the rest of the retransmit queue, until either - * we've sent it all or the congestion window limit is reached. - * If doing SACK, the first ACK which comes back for a timeout - * based retransmit packet might feed us FACK information again. - * If so, we use it to avoid unnecessarily retransmissions. - */ -void tcp_xmit_retransmit_queue(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb; - - if (tp->retrans_head == NULL && - tp->rexmt_done == 0) - tp->retrans_head = skb_peek(&sk->write_queue); - if (tp->retrans_head == tp->send_head) - tp->retrans_head = NULL; - - /* Each time, advance the retrans_head if we got - * a packet out or we skipped one because it was - * SACK'd. -DaveM - */ - while ((skb = tp->retrans_head) != NULL) { - /* If it has been ack'd by a SACK block, we don't - * retransmit it. - */ - if(!(TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_ACKED)) { - /* Send it out, punt if error occurred. */ - if(tcp_retransmit_skb(sk, skb)) - break; - - update_retrans_head(sk); - - /* Stop retransmitting if we've hit the congestion - * window limit. - */ - if (tp->retrans_out >= tp->snd_cwnd) - break; - } else { - update_retrans_head(sk); - } - } -} - -/* Using FACK information, retransmit all missing frames at the receiver - * up to the forward most SACK'd packet (tp->fackets_out) if the packet - * has not been retransmitted already. - */ -void tcp_fack_retransmit(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb = skb_peek(&sk->write_queue); - int packet_cnt = 0; - - while((skb != NULL) && - (skb != tp->send_head) && - (skb != (struct sk_buff *)&sk->write_queue)) { - __u8 sacked = TCP_SKB_CB(skb)->sacked; - - if(sacked & (TCPCB_SACKED_ACKED | TCPCB_SACKED_RETRANS)) - goto next_packet; - - /* Ok, retransmit it. */ - if(tcp_retransmit_skb(sk, skb)) - break; - - if(tcp_packets_in_flight(tp) >= tp->snd_cwnd) - break; -next_packet: - packet_cnt++; - if(packet_cnt >= tp->fackets_out) - break; - skb = skb->next; - } -} - -/* Send a fin. The caller locks the socket for us. This cannot be - * allowed to fail queueing a FIN frame under any circumstances. - */ -void tcp_send_fin(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb = skb_peek_tail(&sk->write_queue); - unsigned int mss_now; - - /* Optimization, tack on the FIN if we have a queue of - * unsent frames. But be careful about outgoing SACKS - * and IP options. - */ - mss_now = tcp_current_mss(sk); - - if((tp->send_head != NULL) && (skb->len < mss_now)) { - /* tcp_write_xmit() takes care of the rest. */ - TCP_SKB_CB(skb)->flags |= TCPCB_FLAG_FIN; - TCP_SKB_CB(skb)->end_seq++; - tp->write_seq++; - - /* Special case to avoid Nagle bogosity. If this - * segment is the last segment, and it was queued - * due to Nagle/SWS-avoidance, send it out now. - */ - if(tp->send_head == skb && - !sk->nonagle && - skb->len < (tp->mss_cache >> 1) && - tp->packets_out && - !(TCP_SKB_CB(skb)->flags & TCPCB_FLAG_URG)) { - update_send_head(sk); - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tp->snd_nxt = TCP_SKB_CB(skb)->end_seq; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); - if(!tcp_timer_is_set(sk, TIME_RETRANS)) - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } - } else { - /* Socket is locked, keep trying until memory is available. */ - do { - skb = sock_wmalloc(sk, - (MAX_HEADER + - sk->prot->max_header), - 1, GFP_KERNEL); - } while (skb == NULL); - - /* Reserve space for headers and prepare control bits. */ - skb_reserve(skb, MAX_HEADER + sk->prot->max_header); - skb->csum = 0; - TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_FIN); - TCP_SKB_CB(skb)->sacked = 0; - TCP_SKB_CB(skb)->urg_ptr = 0; - - /* FIN eats a sequence byte, write_seq advanced by tcp_send_skb(). */ - TCP_SKB_CB(skb)->seq = tp->write_seq; - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq + 1; - tcp_send_skb(sk, skb, 0); - } -} - -/* We get here when a process closes a file descriptor (either due to - * an explicit close() or as a byproduct of exit()'ing) and there - * was unread data in the receive queue. This behavior is recommended - * by draft-ietf-tcpimpl-prob-03.txt section 3.10. -DaveM - */ -void tcp_send_active_reset(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb; - - /* NOTE: No TCP options attached and we never retransmit this. */ - skb = alloc_skb(MAX_HEADER + sk->prot->max_header, GFP_KERNEL); - if (!skb) - return; - - /* Reserve space for headers and prepare control bits. */ - skb_reserve(skb, MAX_HEADER + sk->prot->max_header); - skb->csum = 0; - TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_RST); - TCP_SKB_CB(skb)->sacked = 0; - TCP_SKB_CB(skb)->urg_ptr = 0; - - /* Send it off. */ - TCP_SKB_CB(skb)->seq = tp->write_seq; - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tcp_transmit_skb(sk, skb); -} - -/* WARNING: This routine must only be called when we have already sent - * a SYN packet that crossed the incoming SYN that caused this routine - * to get called. If this assumption fails then the initial rcv_wnd - * and rcv_wscale values will not be correct. - */ -int tcp_send_synack(struct sock *sk) -{ - struct tcp_opt* tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff* skb; - - skb = sock_wmalloc(sk, (MAX_HEADER + sk->prot->max_header), - 1, GFP_ATOMIC); - if (skb == NULL) - return -ENOMEM; - - /* Reserve space for headers and prepare control bits. */ - skb_reserve(skb, MAX_HEADER + sk->prot->max_header); - skb->csum = 0; - TCP_SKB_CB(skb)->flags = (TCPCB_FLAG_ACK | TCPCB_FLAG_SYN); - TCP_SKB_CB(skb)->sacked = 0; - TCP_SKB_CB(skb)->urg_ptr = 0; - - /* SYN eats a sequence byte. */ - TCP_SKB_CB(skb)->seq = tp->snd_una; - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq + 1; - __skb_queue_tail(&sk->write_queue, skb); - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); - return 0; -} - -/* - * Prepare a SYN-ACK. - */ -struct sk_buff * tcp_make_synack(struct sock *sk, struct dst_entry *dst, - struct open_request *req, int mss) -{ - struct tcphdr *th; - int tcp_header_size; - struct sk_buff *skb; - - skb = sock_wmalloc(sk, MAX_HEADER + sk->prot->max_header, 1, GFP_ATOMIC); - if (skb == NULL) - return NULL; - - /* Reserve space for headers. */ - skb_reserve(skb, MAX_HEADER + sk->prot->max_header); - - skb->dst = dst_clone(dst); - - /* Don't offer more than they did. - * This way we don't have to memorize who said what. - * FIXME: maybe this should be changed for better performance - * with syncookies. - */ - req->mss = min(mss, req->mss); - if (req->mss < 8) { - printk(KERN_DEBUG "initial req->mss below 8\n"); - req->mss = 8; - } - - tcp_header_size = (sizeof(struct tcphdr) + TCPOLEN_MSS + - (req->tstamp_ok ? TCPOLEN_TSTAMP_ALIGNED : 0) + - (req->wscale_ok ? TCPOLEN_WSCALE_ALIGNED : 0) + - /* SACK_PERM is in the place of NOP NOP of TS */ - ((req->sack_ok && !req->tstamp_ok) ? TCPOLEN_SACKPERM_ALIGNED : 0)); - skb->h.th = th = (struct tcphdr *) skb_push(skb, tcp_header_size); - - memset(th, 0, sizeof(struct tcphdr)); - th->syn = 1; - th->ack = 1; - th->source = sk->sport; - th->dest = req->rmt_port; - TCP_SKB_CB(skb)->seq = req->snt_isn; - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq + 1; - th->seq = htonl(TCP_SKB_CB(skb)->seq); - th->ack_seq = htonl(req->rcv_isn + 1); - if (req->rcv_wnd == 0) { /* ignored for retransmitted syns */ - __u8 rcv_wscale; - /* Set this up on the first call only */ - req->window_clamp = skb->dst->window; - tcp_select_initial_window(sock_rspace(sk)/2,req->mss, - &req->rcv_wnd, - &req->window_clamp, - req->wscale_ok, - &rcv_wscale); - req->rcv_wscale = rcv_wscale; - } - - /* RFC1323: The window in SYN & SYN/ACK segments is never scaled. */ - th->window = htons(req->rcv_wnd); - - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tcp_syn_build_options((__u32 *)(th + 1), req->mss, req->tstamp_ok, - req->sack_ok, req->wscale_ok, req->rcv_wscale, - TCP_SKB_CB(skb)->when, - req->ts_recent); - - skb->csum = 0; - th->doff = (tcp_header_size >> 2); - tcp_statistics.TcpOutSegs++; - return skb; -} - -void tcp_connect(struct sock *sk, struct sk_buff *buff, int mtu) -{ - struct dst_entry *dst = sk->dst_cache; - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - /* Reserve space for headers. */ - skb_reserve(buff, MAX_HEADER + sk->prot->max_header); - - tp->snd_wnd = 0; - tp->snd_wl1 = 0; - tp->snd_wl2 = tp->write_seq; - tp->snd_una = tp->write_seq; - tp->rcv_nxt = 0; - - sk->err = 0; - - /* We'll fix this up when we get a response from the other end. - * See tcp_input.c:tcp_rcv_state_process case TCP_SYN_SENT. - */ - tp->tcp_header_len = sizeof(struct tcphdr) + - (sysctl_tcp_timestamps ? TCPOLEN_TSTAMP_ALIGNED : 0); - - /* If user gave his TCP_MAXSEG, record it to clamp */ - if (tp->user_mss) - tp->mss_clamp = tp->user_mss; - tcp_sync_mss(sk, mtu); - - /* Now unpleasant action: if initial pmtu is too low - set lower clamp. I am not sure that it is good. - To be more exact, I do not think that clamping at value, which - is apparently transient and may improve in future is good idea. - It would be better to wait until peer will returns its MSS - (probably 65535 too) and now advertise something sort of 65535 - or at least first hop device mtu. Is it clear, what I mean? - We should tell peer what maximal mss we expect to RECEIVE, - it has nothing to do with pmtu. - I am afraid someone will be confused by such huge value. - --ANK (980731) - */ - if (tp->mss_cache + tp->tcp_header_len - sizeof(struct tcphdr) < tp->mss_clamp ) - tp->mss_clamp = tp->mss_cache + tp->tcp_header_len - sizeof(struct tcphdr); - - TCP_SKB_CB(buff)->flags = TCPCB_FLAG_SYN; - TCP_SKB_CB(buff)->sacked = 0; - TCP_SKB_CB(buff)->urg_ptr = 0; - buff->csum = 0; - TCP_SKB_CB(buff)->seq = tp->write_seq++; - TCP_SKB_CB(buff)->end_seq = tp->write_seq; - tp->snd_nxt = TCP_SKB_CB(buff)->end_seq; - - tp->window_clamp = dst->window; - tcp_select_initial_window(sock_rspace(sk)/2,tp->mss_clamp, - &tp->rcv_wnd, - &tp->window_clamp, - sysctl_tcp_window_scaling, - &tp->rcv_wscale); - /* Ok, now lock the socket before we make it visible to - * the incoming packet engine. - */ - lock_sock(sk); - - /* Socket identity change complete, no longer - * in TCP_CLOSE, so enter ourselves into the - * hash tables. - */ - tcp_set_state(sk,TCP_SYN_SENT); - sk->prot->hash(sk); - - tp->rto = dst->rtt; - tcp_init_xmit_timers(sk); - tp->retransmits = 0; - tp->fackets_out = 0; - tp->retrans_out = 0; - - /* Send it off. */ - __skb_queue_tail(&sk->write_queue, buff); - TCP_SKB_CB(buff)->when = tcp_time_stamp; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(buff, GFP_KERNEL)); - tcp_statistics.TcpActiveOpens++; - - /* Timer for repeating the SYN until an answer. */ - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - - /* Now, it is safe to release the socket. */ - release_sock(sk); -} - -/* Send out a delayed ack, the caller does the policy checking - * to see if we should even be here. See tcp_input.c:tcp_ack_snd_check() - * for details. - */ -void tcp_send_delayed_ack(struct tcp_opt *tp, int max_timeout) -{ - unsigned long timeout; - - /* Stay within the limit we were given */ - timeout = tp->ato; - if (timeout > max_timeout) - timeout = max_timeout; - timeout += jiffies; - - /* Use new timeout only if there wasn't a older one earlier. */ - if (!tp->delack_timer.prev) { - tp->delack_timer.expires = timeout; - add_timer(&tp->delack_timer); - } else { - if (time_before(timeout, tp->delack_timer.expires)) - mod_timer(&tp->delack_timer, timeout); - } -} - -/* This routine sends an ack and also updates the window. */ -void tcp_send_ack(struct sock *sk) -{ - char *str1 = "pfinet tcp_send_ack check point 1\n"; - char *str2 = "pfinet tcp_send_ack check point 2\n"; - int stderr_fd = fileno (stderr); - /* If we have been reset, we may not send again. */ - if(!sk->zapped) { - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *buff; - - /* We are not putting this on the write queue, so - * tcp_transmit_skb() will set the ownership to this - * sock. - */ - buff = alloc_skb(MAX_HEADER + sk->prot->max_header, GFP_ATOMIC); - if (buff == NULL) { - /* Force it to send an ack. We don't have to do this - * (ACK is unreliable) but it's much better use of - * bandwidth on slow links to send a spare ack than - * resend packets. - * - * This is the one possible way that we can delay an - * ACK and have tp->ato indicate that we are in - * quick ack mode, so clear it. - */ - if(tcp_in_quickack_mode(tp)) - tcp_exit_quickack_mode(tp); - tcp_send_delayed_ack(tp, HZ/2); - return; - } - - /* Reserve space for headers and prepare control bits. */ - skb_reserve(buff, MAX_HEADER + sk->prot->max_header); - buff->csum = 0; - TCP_SKB_CB(buff)->flags = TCPCB_FLAG_ACK; - TCP_SKB_CB(buff)->sacked = 0; - TCP_SKB_CB(buff)->urg_ptr = 0; - - /* Send it off, this clears delayed acks for us. */ - TCP_SKB_CB(buff)->seq = TCP_SKB_CB(buff)->end_seq = tp->snd_nxt; - TCP_SKB_CB(buff)->when = tcp_time_stamp; - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - tcp_transmit_skb(sk, buff); - write (stderr_fd, str2, strlen (str2) + 1); - fflush (stderr); - } -} - -/* This routine sends a packet with an out of date sequence - * number. It assumes the other end will try to ack it. - */ -void tcp_write_wakeup(struct sock *sk) -{ - /* After a valid reset we can send no more. */ - if (!sk->zapped) { - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - struct sk_buff *skb; - - /* Write data can still be transmitted/retransmitted in the - * following states. If any other state is encountered, return. - * [listen/close will never occur here anyway] - */ - if ((1 << sk->state) & - ~(TCPF_ESTABLISHED|TCPF_CLOSE_WAIT|TCPF_FIN_WAIT1| - TCPF_LAST_ACK|TCPF_CLOSING)) - return; - - if (before(tp->snd_nxt, tp->snd_una + tp->snd_wnd) && - ((skb = tp->send_head) != NULL)) { - unsigned long win_size; - - /* We are probing the opening of a window - * but the window size is != 0 - * must have been a result SWS avoidance ( sender ) - */ - win_size = tp->snd_wnd - (tp->snd_nxt - tp->snd_una); - if (win_size < TCP_SKB_CB(skb)->end_seq - TCP_SKB_CB(skb)->seq) { - if (tcp_fragment(sk, skb, win_size)) - return; /* Let a retransmit get it. */ - } - update_send_head(sk); - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tp->snd_nxt = TCP_SKB_CB(skb)->end_seq; - tp->packets_out++; - tcp_transmit_skb(sk, skb_clone(skb, GFP_ATOMIC)); - if (!tcp_timer_is_set(sk, TIME_RETRANS)) - tcp_reset_xmit_timer(sk, TIME_RETRANS, tp->rto); - } else { - /* We don't queue it, tcp_transmit_skb() sets ownership. */ - skb = alloc_skb(MAX_HEADER + sk->prot->max_header, - GFP_ATOMIC); - if (skb == NULL) - return; - - /* Reserve space for headers and set control bits. */ - skb_reserve(skb, MAX_HEADER + sk->prot->max_header); - skb->csum = 0; - TCP_SKB_CB(skb)->flags = TCPCB_FLAG_ACK; - TCP_SKB_CB(skb)->sacked = 0; - TCP_SKB_CB(skb)->urg_ptr = 0; - - /* Use a previous sequence. This should cause the other - * end to send an ack. Don't queue or clone SKB, just - * send it. - */ - TCP_SKB_CB(skb)->seq = tp->snd_nxt - 1; - TCP_SKB_CB(skb)->end_seq = TCP_SKB_CB(skb)->seq; - TCP_SKB_CB(skb)->when = tcp_time_stamp; - tcp_transmit_skb(sk, skb); - } - } -} - -/* A window probe timeout has occurred. If window is not closed send - * a partial packet else a zero probe. - */ -void tcp_send_probe0(struct sock *sk) -{ - struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp); - - tcp_write_wakeup(sk); - tp->pending = TIME_PROBE0; - tp->backoff++; - tp->probes_out++; - tcp_reset_xmit_timer (sk, TIME_PROBE0, - min(tp->rto << tp->backoff, 120*HZ)); -} diff --git a/pfinet.old/pfinet.patch~ b/pfinet.old/pfinet.patch~ deleted file mode 100644 index c5882899..00000000 --- a/pfinet.old/pfinet.patch~ +++ /dev/null @@ -1,31 +0,0 @@ -Index: ethernet.c -=================================================================== -RCS file: /sources/hurd/hurd/pfinet/ethernet.c,v -retrieving revision 1.32 -diff -u -r1.32 ethernet.c ---- ethernet.c 9 Oct 2007 08:01:34 -0000 1.32 -+++ ethernet.c 29 Aug 2008 23:46:13 -0000 -@@ -68,15 +68,15 @@ - { - } - --static short ether_filter[] = -+/* The BPF instruction allows IP and ARP packets */ -+static struct bpf_insn ether_filter[] = - { --#ifdef NETF_IN -- /* We have to tell the packet filtering code that we're interested in -- incoming packets. */ -- NETF_IN, /* Header. */ --#endif -- NETF_PUSHLIT | NETF_NOP, -- 1 -+ {NETF_IN|NETF_BPF, /* Header. */ 0, 0, 0}, -+ {40, 0, 0, 12}, -+ {21, 1, 0, 2054}, -+ {21, 0, 1, 2048}, -+ {6, 0, 0, 1500}, -+ {6, 0, 0, 0} - }; - static int ether_filter_len = sizeof (ether_filter) / sizeof (short); - diff --git a/pfinet.old/sched.c~ b/pfinet.old/sched.c~ deleted file mode 100644 index 4e67df6e..00000000 --- a/pfinet.old/sched.c~ +++ /dev/null @@ -1,81 +0,0 @@ -/* - Copyright (C) 1995,96,2000,02 Free Software Foundation, Inc. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "pfinet.h" - -#include -#include -#include - -struct mutex global_lock = MUTEX_INITIALIZER; -struct mutex net_bh_lock = MUTEX_INITIALIZER; -struct condition net_bh_wakeup = CONDITION_INITIALIZER; - -struct task_struct current_contents; /* zeros are right default values */ - - -/* Wake up the owner of the SOCK. If HOW is zero, then just - send SIGIO. If HOW is one, then send SIGIO only if the - SO_WAITDATA flag is off. If HOW is two, then send SIGIO - only if the SO_NOSPACE flag is on, and also clear it. */ -int -sock_wake_async (struct socket *sock, int how) -{ - /* For now, do nothing. XXX */ - return 0; -} - - -/* This function is the "net_bh worker thread". - The packet receiver thread calls net/core/dev.c::netif_rx with a packet; - netif_rx either drops the packet, or enqueues it and wakes us up - via mark_bh which is really condition_broadcast on net_bh_wakeup. - The packet receiver thread holds net_bh_lock while calling netif_rx. - We wake up and take global_lock, which locks out RPC service threads. - We then also take net_bh_lock running net_bh. - Thus, only this thread running net_bh locks out the packet receiver - thread (which takes only net_bh_lock while calling netif_rx), so packets - are quickly moved from the Mach port's message queue to the `backlog' - queue, or dropped, without synchronizing with RPC service threads. - (The RPC service threads lock out the running of net_bh, but not - the queuing/dropping of packets in netif_rx.) */ -any_t -net_bh_worker (any_t arg) -{ - char *str1 = "pfinet net_bh_worker before locking net_bh_lock"; - char *str2 = "pfinet net_bh_worker after locking net_bh_lock"; - char *str3 = "pfinet net_bh_worker after unlocking net_bh_lock"; - int stderr_fd = fileno (stderr); - __mutex_lock (&global_lock); - while (1) - { - condition_wait (&net_bh_wakeup, &global_lock); - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - __mutex_lock (&net_bh_lock); - write (stderr_fd, str2, strlen (str2) + 1); - fflush (stderr); - net_bh (); - __mutex_unlock (&net_bh_lock); - write (stderr_fd, str3, strlen (str3) + 1); - fflush (stderr); - } - /*NOTREACHED*/ - return 0; -} diff --git a/pfinet.old/socket-ops.c~ b/pfinet.old/socket-ops.c~ deleted file mode 100644 index 726219b9..00000000 --- a/pfinet.old/socket-ops.c~ +++ /dev/null @@ -1,546 +0,0 @@ -/* Interface functions for the socket.defs interface. - Copyright (C) 1995,96,97,99,2000,02,07 Free Software Foundation, Inc. - Written by Michael I. Bushnell, p/BSG. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include -#include -#include -#include -#include -#include - -#include "pfinet.h" -#include "socket_S.h" - -#include -#include -#include -#include - - -error_t -S_socket_create (struct trivfs_protid *master, - int sock_type, - int protocol, - mach_port_t *port, - mach_msg_type_name_t *porttype) -{ - struct sock_user *user; - struct socket *sock; - error_t err; - int isroot; - - if (!master) - return EOPNOTSUPP; - - /* Don't allow bogus SOCK_PACKET here. */ - - if ((sock_type != SOCK_STREAM - && sock_type != SOCK_DGRAM - && sock_type != SOCK_SEQPACKET - && sock_type != SOCK_RAW) - || protocol < 0) - return EINVAL; - - __mutex_lock (&global_lock); - - become_task_protid (master); - - sock = sock_alloc (); - - sock->type = sock_type; - - isroot = master->isroot; - if (!isroot) - { - struct stat st; - - /* XXX */ - st.st_uid = pfinet_owner; - st.st_gid = pfinet_group; - - err = fshelp_isowner (&st, master->user); - if (! err) - isroot = 1; - } - - if (master->pi.class == trivfs_protid_portclasses[PORTCLASS_INET]) - err = - (*net_families[PF_INET]->create) (sock, protocol); - else - err = - (*net_families[PF_INET6]->create) (sock, protocol); - - if (err) - sock_release (sock); - else - { - user = make_sock_user (sock, isroot, 0, 1); - *port = ports_get_right (user); - *porttype = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (user); - } - - __mutex_unlock (&global_lock); - - return err; -} - - -/* Listen on a socket. */ -error_t -S_socket_listen (struct sock_user *user, int queue_limit) -{ - error_t err; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - err = - (*user->sock->ops->listen) (user->sock, queue_limit); - __mutex_unlock (&global_lock); - - return err; -} - -error_t -S_socket_accept (struct sock_user *user, - mach_port_t *new_port, - mach_msg_type_name_t *new_port_type, - mach_port_t *addr_port, - mach_msg_type_name_t *addr_port_type) -{ - struct sock_user *newuser; - struct socket *sock, *newsock; - error_t err; - - if (!user) - return EOPNOTSUPP; - - sock = user->sock; - - __mutex_lock (&global_lock); - - become_task (user); - - newsock = sock_alloc (); - if (!newsock) - err = ENOMEM; - else - { - newsock->type = sock->type; - - err = - (*sock->ops->dup) (newsock, sock); - if (!err) - err = - (*sock->ops->accept) (sock, newsock, sock->flags); - - if (!err) - /* In Linux there is a race here with the socket closing before the - ops->getname call we do in make_sockaddr_port. Since we still - have the world locked, this shouldn't be an issue for us. */ - err = make_sockaddr_port (newsock, 1, addr_port, addr_port_type); - - if (!err) - { - newuser = make_sock_user (newsock, user->isroot, 0, 1); - *new_port = ports_get_right (newuser); - *new_port_type = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (newuser); - } - - if (err) - sock_release (newsock); - } - - __mutex_unlock (&global_lock); - - return err; -} - -error_t -S_socket_connect (struct sock_user *user, - struct sock_addr *addr) -{ - struct socket *sock; - error_t err; - - if (!user || !addr) - return EOPNOTSUPP; - - sock = user->sock; - - __mutex_lock (&global_lock); - - become_task (user); - - err = - (*sock->ops->connect) (sock, &addr->address, addr->address.sa_len, - sock->flags); - - __mutex_unlock (&global_lock); - - /* MiG should do this for us, but it doesn't. */ - if (!err) - mach_port_deallocate (mach_task_self (), addr->pi.port_right); - - return err; -} - -error_t -S_socket_bind (struct sock_user *user, - struct sock_addr *addr) -{ - error_t err; - - if (!user) - return EOPNOTSUPP; - if (! addr) - return EADDRNOTAVAIL; - - __mutex_lock (&global_lock); - become_task (user); - err = - (*user->sock->ops->bind) (user->sock, - &addr->address, addr->address.sa_len); - __mutex_unlock (&global_lock); - - /* MiG should do this for us, but it doesn't. */ - if (!err) - mach_port_deallocate (mach_task_self (), addr->pi.port_right); - - return err; -} - -error_t -S_socket_name (struct sock_user *user, - mach_port_t *addr_port, - mach_msg_type_name_t *addr_port_name) -{ - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - make_sockaddr_port (user->sock, 0, addr_port, addr_port_name); - __mutex_unlock (&global_lock); - return 0; -} - -error_t -S_socket_peername (struct sock_user *user, - mach_port_t *addr_port, - mach_msg_type_name_t *addr_port_name) -{ - error_t err; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - err = make_sockaddr_port (user->sock, 1, addr_port, addr_port_name); - __mutex_unlock (&global_lock); - - return err; -} - -error_t -S_socket_connect2 (struct sock_user *user1, - struct sock_user *user2) -{ - error_t err; - - if (!user1 || !user2) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - - become_task (user1); - - if (user1->sock->type != user2->sock->type) - err = EINVAL; - else if (user1->sock->state != SS_UNCONNECTED - && user2->sock->state != SS_UNCONNECTED) - err = EISCONN; - else - err = - (*user1->sock->ops->socketpair) (user1->sock, user2->sock); - - __mutex_unlock (&global_lock); - - /* MiG should do this for us, but it doesn't. */ - if (!err) - mach_port_deallocate (mach_task_self (), user2->pi.port_right); - - return err; -} - -error_t -S_socket_create_address (mach_port_t server, - int sockaddr_type, - char *data, - mach_msg_type_number_t data_len, - mach_port_t *addr_port, - mach_msg_type_name_t *addr_port_type) -{ - error_t err; - struct sock_addr *addrstruct; - const struct sockaddr *const sa = (void *) data; - - if (sockaddr_type != AF_INET && sockaddr_type != AF_INET6) - return EAFNOSUPPORT; - if (sa->sa_family != sockaddr_type - || data_len < offsetof (struct sockaddr, sa_data)) - return EINVAL; - - err = ports_create_port (addrport_class, pfinet_bucket, - (offsetof (struct sock_addr, address) - + data_len), &addrstruct); - if (err) - return err; - - memcpy (&addrstruct->address, data, data_len); - - /* BSD does not require incoming sa_len to be set, so we don't either. */ - addrstruct->address.sa_len = data_len; - - *addr_port = ports_get_right (addrstruct); - *addr_port_type = MACH_MSG_TYPE_MAKE_SEND; - ports_port_deref (addrstruct); - return 0; -} - -error_t -S_socket_fabricate_address (mach_port_t server, - int sockaddr_type, - mach_port_t *addr_port, - mach_msg_type_name_t *addr_port_type) -{ - return EOPNOTSUPP; -} - -error_t -S_socket_whatis_address (struct sock_addr *addr, - int *type, - char **data, - mach_msg_type_number_t *datalen) -{ - if (!addr) - return EOPNOTSUPP; - - *type = addr->address.sa_family; - if (*datalen < addr->address.sa_len) - *data = mmap (0, addr->address.sa_len, - PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - *datalen = addr->address.sa_len; - memcpy (*data, &addr->address, addr->address.sa_len); - - return 0; -} - -error_t -S_socket_shutdown (struct sock_user *user, - int direction) -{ - error_t err; - - if (!user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - err = - (*user->sock->ops->shutdown) (user->sock, direction); - __mutex_unlock (&global_lock); - - return err; -} - -error_t -S_socket_getopt (struct sock_user *user, - int level, - int option, - char **data, - size_t *datalen) -{ - error_t err; - - if (! user) - return EOPNOTSUPP; - - __mutex_lock (&global_lock); - become_task (user); - - int len = *datalen; - err = - (level == SOL_SOCKET ? sock_getsockopt - : *user->sock->ops->getsockopt) - (user->sock, level, option, *data, &len); - *datalen = len; - - __mutex_unlock (&global_lock); - - /* XXX option data not properly typed, needs byte-swapping for netmsgserver. - Most options are ints, some like IP_OPTIONS are bytesex-neutral. */ - - return err; -} - -error_t -S_socket_setopt (struct sock_user *user, - int level, - int option, - char *data, - size_t datalen) -{ - error_t err; - - if (! user) - return EOPNOTSUPP; - - /* XXX option data not properly typed, needs byte-swapping for netmsgserver. - Most options are ints, some like IP_OPTIONS are bytesex-neutral. */ - - __mutex_lock (&global_lock); - become_task (user); - - err = - (level == SOL_SOCKET ? sock_setsockopt - : *user->sock->ops->setsockopt) - (user->sock, level, option, data, datalen); - - __mutex_unlock (&global_lock); - - return err; -} - -error_t -S_socket_send (struct sock_user *user, - struct sock_addr *addr, - int flags, - char *data, - size_t datalen, - mach_port_t *ports, - size_t nports, - char *control, - size_t controllen, - mach_msg_type_number_t *amount) -{ - int sent; - struct iovec iov = { data, datalen }; - struct msghdr m = { msg_name: addr ? &addr->address : 0, - msg_namelen: addr ? addr->address.sa_len : 0, - msg_flags: flags, - msg_controllen: 0, msg_iov: &iov, msg_iovlen: 1 }; - char *str1 = "pfinet socket_send check point 1.\n"; - int stderr_fd = fileno (stderr); - - if (!user) - return EOPNOTSUPP; - - /* Don't do this yet, it's too bizarre to think about right now. */ - if (nports != 0 || controllen != 0) - return EINVAL; - - fprintf (stderr, "pfinet socket_send before locking global_lock.\n"); - fflush (stderr); - - __mutex_lock (&global_lock); - write (stderr_fd, str1, strlen (str1) + 1); - fflush (stderr); - become_task (user); - if (user->sock->flags & O_NONBLOCK) - m.msg_flags |= MSG_DONTWAIT; - sent = (*user->sock->ops->sendmsg) (user->sock, &m, datalen, 0); - __mutex_unlock (&global_lock); - - fprintf (stderr, "pfinet socket_send after unlocking global_lock.\n"); - fflush (stderr); - - /* MiG should do this for us, but it doesn't. */ - if (addr && sent >= 0) - mach_port_deallocate (mach_task_self (), addr->pi.port_right); - - if (sent >= 0) - { - *amount = sent; - return 0; - } - else - return (error_t)-sent; -} - -error_t -S_socket_recv (struct sock_user *user, - mach_port_t *addrport, - mach_msg_type_name_t *addrporttype, - int flags, - char **data, - size_t *datalen, - mach_port_t **ports, - mach_msg_type_name_t *portstype, - size_t *nports, - char **control, - size_t *controllen, - int *outflags, - mach_msg_type_number_t amount) -{ - error_t err; - union { struct sockaddr_storage storage; struct sockaddr sa; } addr; - int alloced = 0; - struct iovec iov; - struct msghdr m = { msg_name: &addr.sa, msg_namelen: sizeof addr, - msg_controllen: 0, msg_iov: &iov, msg_iovlen: 1 }; - - if (!user) - return EOPNOTSUPP; - - /* Instead of this, we should peek and the socket and only - allocate as much as necessary. */ - if (amount > *datalen) - { - *data = mmap (0, amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - alloced = 1; - } - - iov.iov_base = *data; - iov.iov_len = amount; - - __mutex_lock (&global_lock); - become_task (user); - if (user->sock->flags & O_NONBLOCK) - flags |= MSG_DONTWAIT; - err = (*user->sock->ops->recvmsg) (user->sock, &m, amount, flags, 0); - __mutex_unlock (&global_lock); - - if (err < 0) - err = -err; - else - { - *datalen = err; - if (alloced && round_page (*datalen) < round_page (amount)) - munmap (*data + round_page (*datalen), - round_page (amount) - round_page (*datalen)); - err = S_socket_create_address (0, addr.sa.sa_family, - (void *) &addr.sa, m.msg_namelen, - addrport, addrporttype); - if (err && alloced) - munmap (*data, *datalen); - - *outflags = m.msg_flags; - *nports = 0; - *portstype = MACH_MSG_TYPE_COPY_SEND; - *controllen = 0; - } - - return err; -} diff --git a/pfinet.old/tmp.patch~ b/pfinet.old/tmp.patch~ deleted file mode 100644 index e293857a..00000000 --- a/pfinet.old/tmp.patch~ +++ /dev/null @@ -1,146 +0,0 @@ -? addrconf.d -? af_inet.d -? af_inet6.d -? arp.d -? checksum.d -? datagram.d -? datagram_ipv6.d -? dev.d -? dev_mcast.d -? devinet.d -? dst.d -? dummy.d -? eth.d -? ethernet.d -? exthdrs.d -? fib_frontend.d -? fib_hash.d -? fib_semantics.d -? icmp.d -? icmpv6.d -? igmp.d -? iioctl-ops.d -? iioctl.sdefs.d -? iioctlServer.c -? iioctlServer.d -? iioctl_S.h -? io-ops.d -? io.sdefs.d -? ioServer.c -? ioServer.d -? io_S.h -? iovec.d -? ip6_fib.d -? ip6_flowlabel.d -? ip6_input.d -? ip6_output.d -? ip_forward.d -? ip_fragment.d -? ip_input.d -? ip_options.d -? ip_output.d -? ip_sockglue.d -? ipv6_sockglue.d -? kmem_cache.d -? loopback.d -? main.d -? mcast.d -? misc.d -? ndisc.d -? neighbour.d -? old-checksum.d -? options.d -? pfinet -? pfinet-ops.d -? pfinet.prof_d -? pfinet.sdefs.d -? pfinetServer.c -? pfinetServer.d -? pfinet_S.h -? protocol.d -? protocol_ipv6.d -? raw.d -? raw_ipv6.d -? reassembly.d -? route.d -? route_ipv6.d -? sched.d -? skbuff.d -? sock.d -? socket-ops.d -? socket.d -? socket.sdefs.d -? socketServer.c -? socketServer.d -? socket_S.h -? startup_notify.sdefs.d -? startup_notifyServer.c -? startup_notifyServer.d -? startup_notify_S.h -? stubs.d -? syncookies.d -? sysctl_net_ipv4.d -? tcp.d -? tcp_input.d -? tcp_ipv4.d -? tcp_ipv6.d -? tcp_output.d -? tcp_timer.d -? time.d -? timer-emul.d -? timer.d -? tmp.patch -? tunnel.d -? udp.d -? udp_ipv6.d -? utils.d -? asm/checksum.h -Index: ethernet.c -=================================================================== -RCS file: /sources/hurd/hurd/pfinet/ethernet.c,v -retrieving revision 1.32 -diff -r1.32 ethernet.c -28a29,30 -> #define _HACK_ERRNO_H -> #include -33a36 -> #include -71c74,75 -< static short ether_filter[] = ---- -> /* The BPF instruction allows IP and ARP packets */ -> static struct bpf_insn ether_filter[] = -73,79c77,82 -< #ifdef NETF_IN -< /* We have to tell the packet filtering code that we're interested in -< incoming packets. */ -< NETF_IN, /* Header. */ -< #endif -< NETF_PUSHLIT | NETF_NOP, -< 1 ---- -> {NETF_IN|NETF_BPF, /* Header. */ 0, 0, 0}, -> {40, 0, 0, 12}, -> {21, 1, 0, 2054}, -> {21, 0, 1, 2048}, -> {6, 0, 0, 1500}, -> {6, 0, 0, 0} -98a102 -> static int count = 0; -118a123,125 -> // fprintf (stderr, "pfinet receives the %dst packet.\n", ++count); -> // fflush (stderr); -> -169,171c176,179 -< err = get_privileged_ports (0, &master_device); -< if (err) -< error (2, err, "cannot get device master port"); ---- -> /* The device name here is the path of a device file. */ -> master_device = file_name_lookup (dev->name, 0, 0); -> if (master_device == MACH_PORT_NULL) -> error (2, errno, "file_name_lookup %s", dev->name); -173c181 -< err = device_open (master_device, D_WRITE | D_READ, dev->name, &edev->ether_port); ---- -> err = device_open (master_device, D_WRITE | D_READ, "eth", &edev->ether_port); diff --git a/pfinet.old/tunnel.c~ b/pfinet.old/tunnel.c~ deleted file mode 100644 index c4f95804..00000000 --- a/pfinet.old/tunnel.c~ +++ /dev/null @@ -1,636 +0,0 @@ -/* - Copyright (C) 1995,96,98,99,2000,02 Free Software Foundation, Inc. - Written by Michael I. Bushnell, p/BSG. - - This file is part of the GNU Hurd. - - The GNU Hurd is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. - - The GNU Hurd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ - -#include "pfinet.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -struct port_class *tunnel_cntlclass; -struct port_class *tunnel_class; - -struct tunnel_device -{ - struct tunnel_device *next; - struct trivfs_control *cntl; - char *devname; - file_t underlying; - struct iouser *user; - struct sk_buff_head xq; /* Transmit queue. */ - struct condition wait; /* For read and select. */ - struct condition select_alert; /* For read and select. */ - struct mutex lock; /* For read and select. */ - int read_blocked; /* For read and select. */ - struct device dev; - struct net_device_stats stats; -}; - - -/* Linked list of all tunnel devices. */ -struct tunnel_device *tunnel_dev; - - -struct net_device_stats * -tunnel_get_stats (struct device *dev) -{ - struct tunnel_device *tdev = (struct tunnel_device *) dev->priv; - - assert (tdev); - - return &tdev->stats; -} - -int -tunnel_stop (struct device *dev) -{ - struct tunnel_device *tdev = (struct tunnel_device *) dev->priv; - struct sk_buff *skb; - - assert (tdev); - - while ((skb = skb_dequeue (&tdev->xq)) != 0) - dev_kfree_skb(skb); - - /* Call those only if removing the device completely. */ - /* free (tdev->devname); */ - /* XXX??? mach_port_deallocate (mach_task_self, tdev->underlying) */ - return 0; -} - -void -tunnel_set_multi (struct device *dev) -{ -} - -void -tunnel_initialize (void) -{ -} - -int -tunnel_open (struct device *dev) -{ - struct tunnel_device *tdev = (struct tunnel_device *) dev->priv; - - assert (tdev); - - skb_queue_head_init(&tdev->xq); - - return 0; -} - -/* Transmit an ethernet frame */ -int -tunnel_xmit (struct sk_buff *skb, struct device *dev) -{ - struct tunnel_device *tdev = (struct tunnel_device *) dev->priv; - - assert (tdev); - - __mutex_lock (&tdev->lock); - - /* Avoid unlimited growth. */ - if (skb_queue_len(&tdev->xq) > 128) - { - struct sk_buff *skb; - - skb = skb_dequeue(&tdev->xq); - dev_kfree_skb(skb); - } - - /* Queue it for processing. */ - skb_queue_tail(&tdev->xq, skb); - - if (tdev->read_blocked) - { - tdev->read_blocked = 0; - condition_broadcast (&tdev->wait); - } - - __mutex_unlock (&tdev->lock); - - return 0; -} - -void -setup_tunnel_device (char *name, struct device **device) -{ - error_t err; - struct tunnel_device *tdev; - struct device *dev; - - /* Do global initialization before setting up first tunnel device. */ - if (!tunnel_dev) - { - trivfs_add_control_port_class (&tunnel_cntlclass); - trivfs_add_protid_port_class (&tunnel_class); - } - - tdev = calloc (1, sizeof (struct tunnel_device)); - if (!tdev) - error (2, ENOMEM, "%s", name); - tdev->next = tunnel_dev; - tunnel_dev = tdev; - - *device = dev = &tdev->dev; - - dev->name = strdup (name); - - dev->priv = tdev; - dev->get_stats = tunnel_get_stats; - - /* Functions. These ones are the true "hardware layer" in Linux. */ - dev->open = tunnel_open; - dev->stop = tunnel_stop; - dev->hard_start_xmit = tunnel_xmit; - dev->set_multicast_list = tunnel_set_multi; - - /* These are the ones set by drivers/net/ppp_generic.c::ppp_net_init. */ - dev->hard_header = 0; - dev->hard_header_len = 0; - dev->mtu = PPP_MTU; - dev->addr_len = 0; - dev->tx_queue_len = 3; - dev->type = ARPHRD_PPP; - dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST; - - dev_init_buffers (dev); - - /* Setting up the translator at /dev/tunX. */ - asprintf (&tdev->devname, "/dev/%s", tdev->dev.name); - tdev->underlying = file_name_lookup (tdev->devname, O_CREAT|O_NOTRANS, 0664); - - if (tdev->underlying == MACH_PORT_NULL) - error (2, /* XXX */ 1, "%s", tdev->dev.name); - - err = trivfs_create_control (tdev->underlying, tunnel_cntlclass, - pfinet_bucket, tunnel_class, pfinet_bucket, - &tdev->cntl); - tdev->cntl->hook = tdev; - - if (! err) - { - mach_port_t right = ports_get_send_right (tdev->cntl); - err = file_set_translator (tdev->underlying, 0, FS_TRANS_EXCL - | FS_TRANS_SET, 0, 0, 0, right, - MACH_MSG_TYPE_COPY_SEND); - mach_port_deallocate (mach_task_self (), right); - } - - if (err) - error (2, err, "%s", tdev->dev.name); - - __mutex_init (&tdev->lock); - condition_init (&tdev->wait); - condition_init (&tdev->select_alert); - condition_implies (&tdev->wait, &tdev->select_alert); - - /* This call adds the device to the `dev_base' chain, - initializes its `ifindex' member (which matters!), - and tells the protocol stacks about the device. */ - err = - register_netdevice (dev); - assert_perror (err); -} - -/* If a new open with read and/or write permissions is requested, - restrict to exclusive usage. */ -static error_t -check_open_hook (struct trivfs_control *cntl, - struct iouser *user, - int flags) -{ - struct tunnel_device *tdev; - - for (tdev = tunnel_dev; tdev; tdev = tdev->next) - if (tdev->cntl == cntl) - break; - - if (tdev && flags != O_NORW) - { - if (tdev->user) - return EBUSY; - else - tdev->user = user; - } - return 0; -} - -/* When a protid is destroyed, check if it is the current user. - If yes, release the interface for other users. */ -static void -pi_destroy_hook (struct trivfs_protid *cred) -{ - struct tunnel_device *tdev; - - if (cred->pi.class != tunnel_class) - return; - - tdev = (struct tunnel_device *) cred->po->cntl->hook; - - if (tdev->user == cred->user) - tdev->user = 0; -} - -/* If this variable is set, it is called every time a new peropen - structure is created and initialized. */ -error_t (*trivfs_check_open_hook)(struct trivfs_control *, - struct iouser *, int) - = check_open_hook; - -/* If this variable is set, it is called every time a protid structure - is about to be destroyed. */ -void (*trivfs_protid_destroy_hook) (struct trivfs_protid *) = pi_destroy_hook; - -/* Read data from an IO object. If offset is -1, read from the object - maintained file pointer. If the object is not seekable, offset is - ignored. The amount desired to be read is in AMOUNT. */ -error_t -trivfs_S_io_read (struct trivfs_protid *cred, - mach_port_t reply, mach_msg_type_name_t reply_type, - char **data, mach_msg_type_number_t *data_len, - loff_t offs, size_t amount) -{ - struct tunnel_device *tdev; - struct sk_buff *skb; - - /* Deny access if they have bad credentials. */ - if (! cred) - return EOPNOTSUPP; - else if (! (cred->po->openmodes & O_READ)) - return EBADF; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - tdev = (struct tunnel_device *) cred->po->cntl->hook; - - __mutex_lock (&tdev->lock); - - while (skb_queue_len(&tdev->xq) == 0) - { - if (cred->po->openmodes & O_NONBLOCK) - { - __mutex_unlock (&tdev->lock); - return EWOULDBLOCK; - } - - tdev->read_blocked = 1; - if (hurd_condition_wait (&tdev->wait, &tdev->lock)) - { - __mutex_unlock (&tdev->lock); - return EINTR; - } - /* See term/users.c for possible race? */ - } - - skb = skb_dequeue (&tdev->xq); - assert(skb); - - if (skb->len < amount) - amount = skb->len; - if (amount > 0) - { - /* Possibly allocate a new buffer. */ - if (*data_len < amount) - { - *data = mmap (0, amount, PROT_READ|PROT_WRITE, MAP_ANON, 0, 0); - if (*data == MAP_FAILED) - { - dev_kfree_skb (skb); - __mutex_unlock (&tdev->lock); - return ENOMEM; - } - } - - /* Copy the constant data into the buffer. */ - memcpy ((char *) *data, skb->data, amount); - } - *data_len = amount; - dev_kfree_skb (skb); - - /* Set atime, see term/users.c */ - - __mutex_unlock (&tdev->lock); - - return 0; -} - -/* Write data to an IO object. If offset is -1, write at the object - maintained file pointer. If the object is not seekable, offset is - ignored. The amount successfully written is returned in amount. A - given user should not have more than one outstanding io_write on an - object at a time; servers implement congestion control by delaying - responses to io_write. Servers may drop data (returning ENOBUFS) - if they receive more than one write when not prepared for it. */ -error_t -trivfs_S_io_write (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t replytype, - char *data, - mach_msg_type_number_t datalen, - off_t offset, - mach_msg_type_number_t *amount) -{ - struct tunnel_device *tdev; - struct sk_buff *skb; - - /* Deny access if they have bad credentials. */ - if (! cred) - return EOPNOTSUPP; - else if (! (cred->po->openmodes & O_WRITE)) - return EBADF; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - tdev = (struct tunnel_device *) cred->po->cntl->hook; - - __mutex_lock (&tdev->lock); - - __mutex_lock (&net_bh_lock); - skb = alloc_skb (datalen, GFP_ATOMIC); - skb->len = datalen; - skb->dev = &tdev->dev; - - bcopy (data, skb->data, datalen); - - /* Drop it on the queue. */ - skb->mac.raw = skb->data; - skb->protocol = htons (ETH_P_IP); - netif_rx (skb); - __mutex_unlock (&net_bh_lock); - - *amount = datalen; - - __mutex_unlock (&tdev->lock); - return 0; -} - -/* Tell how much data can be read from the object without blocking for - a "long time" (this should be the same meaning of "long time" used - by the nonblocking flag. */ -kern_return_t -trivfs_S_io_readable (struct trivfs_protid *cred, - mach_port_t reply, mach_msg_type_name_t replytype, - mach_msg_type_number_t *amount) -{ - struct tunnel_device *tdev; - struct sk_buff *skb; - - /* Deny access if they have bad credentials. */ - if (! cred) - return EOPNOTSUPP; - else if (! (cred->po->openmodes & O_READ)) - return EBADF; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - tdev = (struct tunnel_device *) cred->po->cntl->hook; - - __mutex_lock (&tdev->lock); - - /* XXX: Now return the length of the next entry in the queue. - From the BSD manual: - The tunnel device, normally /dev/tunN, is exclusive-open (it cannot be - opened if it is already open) and is restricted to the super-user. A - read() call will return an error (EHOSTDOWN) if the interface is not - ``ready'' address has been set (which means that the control device is - open and the interface's). Once the interface is ready, read() will re- - turn a packet if one is available; if not, it will either block until one - is or return EWOULDBLOCK, depending on whether non-blocking I/O has been - enabled. If the packet is longer than is allowed for in the buffer - passed to read(), the extra data will be silently dropped. - */ - - skb = skb_dequeue(&tdev->xq); - if (skb) - { - *amount = skb->len; - skb_queue_head(&tdev->xq, skb); - } - else - *amount = 0; - - __mutex_unlock (&tdev->lock); - - return 0; -} - -/* SELECT_TYPE is the bitwise OR of SELECT_READ, SELECT_WRITE, and SELECT_URG. - Block until one of the indicated types of i/o can be done "quickly", and - return the types that are then available. ID_TAG is returned as passed; it - is just for the convenience of the user in matching up reply messages with - specific requests sent. */ -error_t -trivfs_S_io_select (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t reply_type, - int *type) -{ - struct tunnel_device *tdev; - - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - tdev = (struct tunnel_device *) cred->po->cntl->hook; - - /* We only deal with SELECT_READ here. */ - if (*type & ~SELECT_READ) - return EINVAL; - - if (*type == 0) - return 0; - - __mutex_lock (&tdev->lock); - - while (1) - { - if (skb_queue_len (&tdev->xq) != 0) - { - *type = SELECT_READ; - __mutex_unlock (&tdev->lock); - return 0; - } - - ports_interrupt_self_on_port_death (cred, reply); - tdev->read_blocked = 1; - if (hurd_condition_wait (&tdev->select_alert, &tdev->lock)) - { - *type = 0; - __mutex_unlock (&tdev->lock); - return EINTR; - } - } -} - -/* Change current read/write offset */ -error_t -trivfs_S_io_seek (struct trivfs_protid *cred, - mach_port_t reply, mach_msg_type_name_t reply_type, - off_t offs, int whence, off_t *new_offs) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return ESPIPE; -} - -/* Change the size of the file. If the size increases, new blocks are - zero-filled. After successful return, it is safe to reference mapped - areas of the file up to NEW_SIZE. */ -error_t -trivfs_S_file_set_size (struct trivfs_protid *cred, - mach_port_t reply, mach_msg_type_name_t reply_type, - off_t size) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return size == 0 ? 0 : EINVAL; -} - -/* These four routines modify the O_APPEND, O_ASYNC, O_FSYNC, and - O_NONBLOCK bits for the IO object. In addition, io_get_openmodes - will tell you which of O_READ, O_WRITE, and O_EXEC the object can - be used for. The O_ASYNC bit affects icky async I/O; good async - I/O is done through io_async which is orthogonal to these calls. */ -error_t -trivfs_S_io_set_all_openmodes(struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t reply_type, - int mode) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return 0; -} - -error_t -trivfs_S_io_set_some_openmodes (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t reply_type, - int bits) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return 0; -} - -error_t -trivfs_S_io_clear_some_openmodes (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t reply_type, - int bits) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return 0; -} - -error_t -trivfs_S_io_get_owner (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t reply_type, - pid_t *owner) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - *owner = 0; - return 0; -} - -error_t -trivfs_S_io_mod_owner (struct trivfs_protid *cred, - mach_port_t reply, mach_msg_type_name_t reply_type, - pid_t owner) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return EINVAL; -} - -/* Return objects mapping the data underlying this memory object. If - the object can be read then memobjrd will be provided; if the - object can be written then memobjwr will be provided. For objects - where read data and write data are the same, these objects will be - equal, otherwise they will be disjoint. Servers are permitted to - implement io_map but not io_map_cntl. Some objects do not provide - mapping; they will set none of the ports and return an error. Such - objects can still be accessed by io_read and io_write. */ -error_t -trivfs_S_io_map (struct trivfs_protid *cred, - mach_port_t reply, - mach_msg_type_name_t replyPoly, - memory_object_t *rdobj, - mach_msg_type_name_t *rdtype, - memory_object_t *wrobj, - mach_msg_type_name_t *wrtype) -{ - if (!cred) - return EOPNOTSUPP; - - if (cred->pi.class != tunnel_class) - return EOPNOTSUPP; - - return EINVAL; -} diff --git a/proc_proxy/ChangeLog~ b/proc_proxy/ChangeLog~ deleted file mode 100644 index 7866e64b..00000000 --- a/proc_proxy/ChangeLog~ +++ /dev/null @@ -1,36 +0,0 @@ -2008-08-29 Zheng Da - - * Makefile: Add process_ops.c - - * proc_proxy.c (master_port, args_doc, doc, options): New variables. - (reqport_find): Remove debugging print. - (comm_argv, comm_argc): New variables. - (add_comm_arg, add_comm_line, parse_opt): New functions. - (argp): New variable. - (main): Parse the options with argp. - - * proc_proxy.h (DEBUG): Removed macro. - - * process_ops.c (S_proc_getprivports): Return the master device port. - -2008-08-18 Zheng Da - - * README: New file. - -2008-08-17 Zheng Da - - * process.defs: Remove file. - - * process_ops.c: Replace the server prefix with the default one "S_". - -2008-08-17 Zheng Da - - * process.defs: New file. - - * Makefile: New file. - - * process_ops.c: New file. - - * proc_proxy.c: New file. - - * proc_proxy.h: New file. -- cgit v1.2.3 From 887f59196c6fd3006732d94526acf377a183a879 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 7 May 2010 00:26:14 +0000 Subject: make devnode open for reading and writing. --- devnode/devnode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'devnode') diff --git a/devnode/devnode.c b/devnode/devnode.c index 55fd8d92..7abf2bf8 100644 --- a/devnode/devnode.c +++ b/devnode/devnode.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include @@ -68,7 +67,7 @@ int trivfs_fsid = 0; int trivfs_support_read = 0; int trivfs_support_write = 0; int trivfs_support_exec = 0; -int trivfs_allow_open = O_READ | O_WRITE; +int trivfs_allow_open = 0; struct port_class *trivfs_protid_portclasses[1]; struct port_class *trivfs_cntl_portclasses[1]; -- cgit v1.2.3 From 4fc0eb5c612281074bd1ba55a4d6d32041ee7a6e Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Wed, 19 May 2010 13:33:29 +0200 Subject: Revert "make devnode open for reading and writing." This reverts commit e0571ec558b13cbf400f2a0c55787238fcf3d858. --- devnode/devnode.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'devnode') diff --git a/devnode/devnode.c b/devnode/devnode.c index 7abf2bf8..55fd8d92 100644 --- a/devnode/devnode.c +++ b/devnode/devnode.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -67,7 +68,7 @@ int trivfs_fsid = 0; int trivfs_support_read = 0; int trivfs_support_write = 0; int trivfs_support_exec = 0; -int trivfs_allow_open = 0; +int trivfs_allow_open = O_READ | O_WRITE; struct port_class *trivfs_protid_portclasses[1]; struct port_class *trivfs_cntl_portclasses[1]; -- cgit v1.2.3 From 90a37e6663362c5059110022a67503e927861d1f Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Wed, 16 Jun 2010 18:46:42 +0200 Subject: add fsys opt support in devnode. --- devnode/devnode.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'devnode') diff --git a/devnode/devnode.c b/devnode/devnode.c index 55fd8d92..299de3c3 100644 --- a/devnode/devnode.c +++ b/devnode/devnode.c @@ -43,6 +43,7 @@ static char *device_name; /* The device name used by the socket servers. */ static char *user_device_name; +static char *master_file; /* The master device port for opening the interface. */ static mach_port_t master_device; @@ -238,6 +239,28 @@ ds_device_set_filter (device_t device, mach_port_t receive_port, return D_INVALID_OPERATION; } +error_t +trivfs_append_args (struct trivfs_control *fsys, char **argz, size_t *argz_len) +{ + error_t err = 0; + +#define ADD_OPT(fmt, args...) \ + do { char buf[100]; \ + if (! err) { \ + snprintf (buf, sizeof buf, fmt , ##args); \ + err = argz_add (argz, argz_len, buf); } } while (0) + + if (user_device_name) + ADD_OPT ("--name=%s", user_device_name); + if (master_file) + ADD_OPT ("--master-device=%s", master_file); + + ADD_OPT (device_name); + +#undef ADD_OPT + return err; +} + void trivfs_modify_stat (struct trivfs_protid *cred, io_statbuf_t *stat) { @@ -275,6 +298,7 @@ parse_opt (int opt, char *arg, struct argp_state *state) switch (opt) { case 'M': + master_file = arg; master_device = file_name_lookup (arg, 0, 0); if (master_device == MACH_PORT_NULL) error (1, errno, "file_name_lookup"); -- cgit v1.2.3 From 916340f950cba13a867dcbe6fccaffed44f12dc0 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 8 May 2011 22:48:41 +0200 Subject: Remove CVS directories --- CVS/Entries | 88 ----- CVS/Entries.Log | 1 - CVS/Repository | 1 - CVS/Root | 1 - CVS/Tag | 1 - boot-proxy-exc/CVS/Entries | 26 -- boot-proxy-exc/CVS/Repository | 1 - boot-proxy-exc/CVS/Root | 1 - boot-proxy-exc/CVS/Tag | 1 - boot.backup1/CVS/Entries | 14 - boot.backup1/CVS/Repository | 1 - boot.backup1/CVS/Root | 1 - boot.backup1/CVS/Tag | 1 - bsdfsck/CVS/Entries | 16 - bsdfsck/CVS/Repository | 1 - bsdfsck/CVS/Root | 1 - bsdfsck/CVS/Tag | 1 - devnode/CVS/Entries | 6 - devnode/CVS/Repository | 1 - devnode/CVS/Root | 1 - devnode/CVS/Tag | 1 - eth-filter.multi-thread/CVS/Entries | 11 - eth-filter.multi-thread/CVS/Repository | 1 - eth-filter.multi-thread/CVS/Root | 1 - eth-filter.multi-thread/CVS/Tag | 1 - eth-filter/CVS/Entries | 11 - eth-filter/CVS/Repository | 1 - eth-filter/CVS/Root | 1 - eth-filter/CVS/Tag | 1 - eth-multiplexer/CVS/Entries | 21 -- eth-multiplexer/CVS/Repository | 1 - eth-multiplexer/CVS/Root | 1 - eth-multiplexer/CVS/Tag | 1 - libpthread/CVS/Entries | 12 - libpthread/CVS/Repository | 1 - libpthread/CVS/Root | 1 - libpthread/CVS/Tag | 1 - libpthread/include/CVS/Entries | 5 - libpthread/include/CVS/Repository | 1 - libpthread/include/CVS/Root | 1 - libpthread/include/CVS/Tag | 1 - libpthread/include/pthread/CVS/Entries | 3 - libpthread/include/pthread/CVS/Repository | 1 - libpthread/include/pthread/CVS/Root | 1 - libpthread/include/pthread/CVS/Tag | 1 - libpthread/pthread/CVS/Entries | 20 -- libpthread/pthread/CVS/Repository | 1 - libpthread/pthread/CVS/Root | 1 - libpthread/pthread/CVS/Tag | 1 - libpthread/sysdeps/CVS/Entries | 6 - libpthread/sysdeps/CVS/Repository | 1 - libpthread/sysdeps/CVS/Root | 1 - libpthread/sysdeps/CVS/Tag | 1 - libpthread/sysdeps/generic/CVS/Entries | 102 ------ libpthread/sysdeps/generic/CVS/Repository | 1 - libpthread/sysdeps/generic/CVS/Root | 1 - libpthread/sysdeps/generic/CVS/Tag | 1 - libpthread/sysdeps/generic/bits/CVS/Entries | 15 - libpthread/sysdeps/generic/bits/CVS/Repository | 1 - libpthread/sysdeps/generic/bits/CVS/Root | 1 - libpthread/sysdeps/generic/bits/CVS/Tag | 1 - libpthread/sysdeps/hurd/CVS/Entries | 9 - libpthread/sysdeps/hurd/CVS/Repository | 1 - libpthread/sysdeps/hurd/CVS/Root | 1 - libpthread/sysdeps/hurd/CVS/Tag | 1 - libpthread/sysdeps/i386/CVS/Entries | 3 - libpthread/sysdeps/i386/CVS/Repository | 1 - libpthread/sysdeps/i386/CVS/Root | 1 - libpthread/sysdeps/i386/CVS/Tag | 1 - libpthread/sysdeps/i386/bits/CVS/Entries | 4 - libpthread/sysdeps/i386/bits/CVS/Repository | 1 - libpthread/sysdeps/i386/bits/CVS/Root | 1 - libpthread/sysdeps/i386/bits/CVS/Tag | 1 - libpthread/sysdeps/l4/CVS/Entries | 9 - libpthread/sysdeps/l4/CVS/Repository | 1 - libpthread/sysdeps/l4/CVS/Root | 1 - libpthread/sysdeps/l4/CVS/Tag | 1 - libpthread/sysdeps/l4/hurd/CVS/Entries | 3 - libpthread/sysdeps/l4/hurd/CVS/Repository | 1 - libpthread/sysdeps/l4/hurd/CVS/Root | 1 - libpthread/sysdeps/l4/hurd/CVS/Tag | 1 - libpthread/sysdeps/l4/hurd/i386/CVS/Entries | 3 - libpthread/sysdeps/l4/hurd/i386/CVS/Repository | 1 - libpthread/sysdeps/l4/hurd/i386/CVS/Root | 1 - libpthread/sysdeps/l4/hurd/i386/CVS/Tag | 1 - libpthread/sysdeps/mach/CVS/Entries | 11 - libpthread/sysdeps/mach/CVS/Repository | 1 - libpthread/sysdeps/mach/CVS/Root | 1 - libpthread/sysdeps/mach/CVS/Tag | 1 - libpthread/sysdeps/mach/bits/CVS/Entries | 2 - libpthread/sysdeps/mach/bits/CVS/Repository | 1 - libpthread/sysdeps/mach/bits/CVS/Root | 1 - libpthread/sysdeps/mach/bits/CVS/Tag | 1 - libpthread/sysdeps/mach/hurd/CVS/Entries | 9 - libpthread/sysdeps/mach/hurd/CVS/Repository | 1 - libpthread/sysdeps/mach/hurd/CVS/Root | 1 - libpthread/sysdeps/mach/hurd/CVS/Tag | 1 - libpthread/sysdeps/mach/hurd/i386/CVS/Entries | 3 - libpthread/sysdeps/mach/hurd/i386/CVS/Repository | 1 - libpthread/sysdeps/mach/hurd/i386/CVS/Root | 1 - libpthread/sysdeps/mach/hurd/i386/CVS/Tag | 1 - libpthread/sysdeps/posix/CVS/Entries | 2 - libpthread/sysdeps/posix/CVS/Repository | 1 - libpthread/sysdeps/posix/CVS/Root | 1 - libpthread/sysdeps/posix/CVS/Tag | 1 - libpthread/tests/CVS/Entries | 19 -- libpthread/tests/CVS/Repository | 1 - libpthread/tests/CVS/Root | 1 - libpthread/tests/CVS/Tag | 1 - pfinet.old/CVS/Entries | 29 -- pfinet.old/CVS/Repository | 1 - pfinet.old/CVS/Root | 1 - pfinet.old/asm/CVS/Entries | 1 - pfinet.old/asm/CVS/Repository | 1 - pfinet.old/asm/CVS/Root | 1 - pfinet.old/glue-include/CVS/Entries | 2 - pfinet.old/glue-include/CVS/Repository | 1 - pfinet.old/glue-include/CVS/Root | 1 - pfinet.old/glue-include/asm/CVS/Entries | 13 - pfinet.old/glue-include/asm/CVS/Repository | 1 - pfinet.old/glue-include/asm/CVS/Root | 1 - pfinet.old/glue-include/linux/CVS/Entries | 36 -- pfinet.old/glue-include/linux/CVS/Repository | 1 - pfinet.old/glue-include/linux/CVS/Root | 1 - pfinet.old/linux-inet/CVS/Entries | 1 - pfinet.old/linux-inet/CVS/Repository | 1 - pfinet.old/linux-inet/CVS/Root | 1 - pfinet.old/linux-src/CVS/Entries | 3 - pfinet.old/linux-src/CVS/Repository | 1 - pfinet.old/linux-src/CVS/Root | 1 - pfinet.old/linux-src/arch/CVS/Entries | 8 - pfinet.old/linux-src/arch/CVS/Repository | 1 - pfinet.old/linux-src/arch/CVS/Root | 1 - pfinet.old/linux-src/arch/alpha/CVS/Entries | 1 - pfinet.old/linux-src/arch/alpha/CVS/Repository | 1 - pfinet.old/linux-src/arch/alpha/CVS/Root | 1 - pfinet.old/linux-src/arch/alpha/lib/CVS/Entries | 3 - pfinet.old/linux-src/arch/alpha/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/alpha/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/arm/CVS/Entries | 1 - pfinet.old/linux-src/arch/arm/CVS/Repository | 1 - pfinet.old/linux-src/arch/arm/CVS/Root | 1 - pfinet.old/linux-src/arch/arm/lib/CVS/Entries | 2 - pfinet.old/linux-src/arch/arm/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/arm/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/i386/CVS/Entries | 1 - pfinet.old/linux-src/arch/i386/CVS/Repository | 1 - pfinet.old/linux-src/arch/i386/CVS/Root | 1 - pfinet.old/linux-src/arch/i386/lib/CVS/Entries | 3 - pfinet.old/linux-src/arch/i386/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/i386/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/m68k/CVS/Entries | 1 - pfinet.old/linux-src/arch/m68k/CVS/Repository | 1 - pfinet.old/linux-src/arch/m68k/CVS/Root | 1 - pfinet.old/linux-src/arch/m68k/lib/CVS/Entries | 2 - pfinet.old/linux-src/arch/m68k/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/m68k/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/ppc/CVS/Entries | 1 - pfinet.old/linux-src/arch/ppc/CVS/Repository | 1 - pfinet.old/linux-src/arch/ppc/CVS/Root | 1 - pfinet.old/linux-src/arch/ppc/lib/CVS/Entries | 2 - pfinet.old/linux-src/arch/ppc/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/ppc/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/s390/CVS/Entries | 1 - pfinet.old/linux-src/arch/s390/CVS/Repository | 1 - pfinet.old/linux-src/arch/s390/CVS/Root | 1 - pfinet.old/linux-src/arch/s390/lib/CVS/Entries | 2 - pfinet.old/linux-src/arch/s390/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/s390/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/sparc/CVS/Entries | 1 - pfinet.old/linux-src/arch/sparc/CVS/Repository | 1 - pfinet.old/linux-src/arch/sparc/CVS/Root | 1 - pfinet.old/linux-src/arch/sparc/lib/CVS/Entries | 2 - pfinet.old/linux-src/arch/sparc/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/sparc/lib/CVS/Root | 1 - pfinet.old/linux-src/arch/sparc64/CVS/Entries | 1 - pfinet.old/linux-src/arch/sparc64/CVS/Repository | 1 - pfinet.old/linux-src/arch/sparc64/CVS/Root | 1 - pfinet.old/linux-src/arch/sparc64/lib/CVS/Entries | 2 - .../linux-src/arch/sparc64/lib/CVS/Repository | 1 - pfinet.old/linux-src/arch/sparc64/lib/CVS/Root | 1 - pfinet.old/linux-src/include/CVS/Entries | 11 - pfinet.old/linux-src/include/CVS/Repository | 1 - pfinet.old/linux-src/include/CVS/Root | 1 - pfinet.old/linux-src/include/asm-alpha/CVS/Entries | 2 - .../linux-src/include/asm-alpha/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-alpha/CVS/Root | 1 - pfinet.old/linux-src/include/asm-arm/CVS/Entries | 2 - .../linux-src/include/asm-arm/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-arm/CVS/Root | 1 - pfinet.old/linux-src/include/asm-i386/CVS/Entries | 2 - .../linux-src/include/asm-i386/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-i386/CVS/Root | 1 - pfinet.old/linux-src/include/asm-m68k/CVS/Entries | 2 - .../linux-src/include/asm-m68k/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-m68k/CVS/Root | 1 - pfinet.old/linux-src/include/asm-mips/CVS/Entries | 2 - .../linux-src/include/asm-mips/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-mips/CVS/Root | 1 - pfinet.old/linux-src/include/asm-ppc/CVS/Entries | 2 - .../linux-src/include/asm-ppc/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-ppc/CVS/Root | 1 - pfinet.old/linux-src/include/asm-s390/CVS/Entries | 2 - .../linux-src/include/asm-s390/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-s390/CVS/Root | 1 - pfinet.old/linux-src/include/asm-sparc/CVS/Entries | 2 - .../linux-src/include/asm-sparc/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-sparc/CVS/Root | 1 - .../linux-src/include/asm-sparc64/CVS/Entries | 2 - .../linux-src/include/asm-sparc64/CVS/Repository | 1 - pfinet.old/linux-src/include/asm-sparc64/CVS/Root | 1 - pfinet.old/linux-src/include/linux/CVS/Entries | 370 --------------------- pfinet.old/linux-src/include/linux/CVS/Repository | 1 - pfinet.old/linux-src/include/linux/CVS/Root | 1 - pfinet.old/linux-src/include/net/CVS/Entries | 65 ---- pfinet.old/linux-src/include/net/CVS/Repository | 1 - pfinet.old/linux-src/include/net/CVS/Root | 1 - pfinet.old/linux-src/net/CVS/Entries | 4 - pfinet.old/linux-src/net/CVS/Repository | 1 - pfinet.old/linux-src/net/CVS/Root | 1 - pfinet.old/linux-src/net/core/CVS/Entries | 17 - pfinet.old/linux-src/net/core/CVS/Repository | 1 - pfinet.old/linux-src/net/core/CVS/Root | 1 - pfinet.old/linux-src/net/ethernet/CVS/Entries | 5 - pfinet.old/linux-src/net/ethernet/CVS/Repository | 1 - pfinet.old/linux-src/net/ethernet/CVS/Root | 1 - pfinet.old/linux-src/net/ipv4/CVS/Entries | 52 --- pfinet.old/linux-src/net/ipv4/CVS/Repository | 1 - pfinet.old/linux-src/net/ipv4/CVS/Root | 1 - pfinet.old/linux-src/net/ipv6/CVS/Entries | 19 -- pfinet.old/linux-src/net/ipv6/CVS/Repository | 1 - pfinet.old/linux-src/net/ipv6/CVS/Root | 1 - pfinet.old/linux/CVS/Entries | 1 - pfinet.old/linux/CVS/Repository | 1 - pfinet.old/linux/CVS/Root | 1 - proc_proxy/CVS/Entries | 7 - proc_proxy/CVS/Repository | 1 - proc_proxy/CVS/Root | 1 - proc_proxy/CVS/Tag | 1 - serverboot/CVS/Entries | 36 -- serverboot/CVS/Repository | 1 - serverboot/CVS/Root | 1 - serverboot/CVS/Tag | 1 - ufs-fsck/CVS/Entries | 15 - ufs-fsck/CVS/Repository | 1 - ufs-fsck/CVS/Root | 1 - ufs-fsck/CVS/Tag | 1 - ufs-utils/CVS/Entries | 8 - ufs-utils/CVS/Repository | 1 - ufs-utils/CVS/Root | 1 - ufs-utils/CVS/Tag | 1 - ufs/CVS/Entries | 19 -- ufs/CVS/Repository | 1 - ufs/CVS/Root | 1 - ufs/CVS/Tag | 1 - unionfs/CVS/Entries | 33 -- unionfs/CVS/Repository | 1 - unionfs/CVS/Root | 1 - 258 files changed, 1415 deletions(-) delete mode 100644 CVS/Entries delete mode 100644 CVS/Entries.Log delete mode 100644 CVS/Repository delete mode 100644 CVS/Root delete mode 100644 CVS/Tag delete mode 100644 boot-proxy-exc/CVS/Entries delete mode 100644 boot-proxy-exc/CVS/Repository delete mode 100644 boot-proxy-exc/CVS/Root delete mode 100644 boot-proxy-exc/CVS/Tag delete mode 100644 boot.backup1/CVS/Entries delete mode 100644 boot.backup1/CVS/Repository delete mode 100644 boot.backup1/CVS/Root delete mode 100644 boot.backup1/CVS/Tag delete mode 100644 bsdfsck/CVS/Entries delete mode 100644 bsdfsck/CVS/Repository delete mode 100644 bsdfsck/CVS/Root delete mode 100644 bsdfsck/CVS/Tag delete mode 100644 devnode/CVS/Entries delete mode 100644 devnode/CVS/Repository delete mode 100644 devnode/CVS/Root delete mode 100644 devnode/CVS/Tag delete mode 100644 eth-filter.multi-thread/CVS/Entries delete mode 100644 eth-filter.multi-thread/CVS/Repository delete mode 100644 eth-filter.multi-thread/CVS/Root delete mode 100644 eth-filter.multi-thread/CVS/Tag delete mode 100644 eth-filter/CVS/Entries delete mode 100644 eth-filter/CVS/Repository delete mode 100644 eth-filter/CVS/Root delete mode 100644 eth-filter/CVS/Tag delete mode 100644 eth-multiplexer/CVS/Entries delete mode 100644 eth-multiplexer/CVS/Repository delete mode 100644 eth-multiplexer/CVS/Root delete mode 100644 eth-multiplexer/CVS/Tag delete mode 100644 libpthread/CVS/Entries delete mode 100644 libpthread/CVS/Repository delete mode 100644 libpthread/CVS/Root delete mode 100644 libpthread/CVS/Tag delete mode 100644 libpthread/include/CVS/Entries delete mode 100644 libpthread/include/CVS/Repository delete mode 100644 libpthread/include/CVS/Root delete mode 100644 libpthread/include/CVS/Tag delete mode 100644 libpthread/include/pthread/CVS/Entries delete mode 100644 libpthread/include/pthread/CVS/Repository delete mode 100644 libpthread/include/pthread/CVS/Root delete mode 100644 libpthread/include/pthread/CVS/Tag delete mode 100644 libpthread/pthread/CVS/Entries delete mode 100644 libpthread/pthread/CVS/Repository delete mode 100644 libpthread/pthread/CVS/Root delete mode 100644 libpthread/pthread/CVS/Tag delete mode 100644 libpthread/sysdeps/CVS/Entries delete mode 100644 libpthread/sysdeps/CVS/Repository delete mode 100644 libpthread/sysdeps/CVS/Root delete mode 100644 libpthread/sysdeps/CVS/Tag delete mode 100644 libpthread/sysdeps/generic/CVS/Entries delete mode 100644 libpthread/sysdeps/generic/CVS/Repository delete mode 100644 libpthread/sysdeps/generic/CVS/Root delete mode 100644 libpthread/sysdeps/generic/CVS/Tag delete mode 100644 libpthread/sysdeps/generic/bits/CVS/Entries delete mode 100644 libpthread/sysdeps/generic/bits/CVS/Repository delete mode 100644 libpthread/sysdeps/generic/bits/CVS/Root delete mode 100644 libpthread/sysdeps/generic/bits/CVS/Tag delete mode 100644 libpthread/sysdeps/hurd/CVS/Entries delete mode 100644 libpthread/sysdeps/hurd/CVS/Repository delete mode 100644 libpthread/sysdeps/hurd/CVS/Root delete mode 100644 libpthread/sysdeps/hurd/CVS/Tag delete mode 100644 libpthread/sysdeps/i386/CVS/Entries delete mode 100644 libpthread/sysdeps/i386/CVS/Repository delete mode 100644 libpthread/sysdeps/i386/CVS/Root delete mode 100644 libpthread/sysdeps/i386/CVS/Tag delete mode 100644 libpthread/sysdeps/i386/bits/CVS/Entries delete mode 100644 libpthread/sysdeps/i386/bits/CVS/Repository delete mode 100644 libpthread/sysdeps/i386/bits/CVS/Root delete mode 100644 libpthread/sysdeps/i386/bits/CVS/Tag delete mode 100644 libpthread/sysdeps/l4/CVS/Entries delete mode 100644 libpthread/sysdeps/l4/CVS/Repository delete mode 100644 libpthread/sysdeps/l4/CVS/Root delete mode 100644 libpthread/sysdeps/l4/CVS/Tag delete mode 100644 libpthread/sysdeps/l4/hurd/CVS/Entries delete mode 100644 libpthread/sysdeps/l4/hurd/CVS/Repository delete mode 100644 libpthread/sysdeps/l4/hurd/CVS/Root delete mode 100644 libpthread/sysdeps/l4/hurd/CVS/Tag delete mode 100644 libpthread/sysdeps/l4/hurd/i386/CVS/Entries delete mode 100644 libpthread/sysdeps/l4/hurd/i386/CVS/Repository delete mode 100644 libpthread/sysdeps/l4/hurd/i386/CVS/Root delete mode 100644 libpthread/sysdeps/l4/hurd/i386/CVS/Tag delete mode 100644 libpthread/sysdeps/mach/CVS/Entries delete mode 100644 libpthread/sysdeps/mach/CVS/Repository delete mode 100644 libpthread/sysdeps/mach/CVS/Root delete mode 100644 libpthread/sysdeps/mach/CVS/Tag delete mode 100644 libpthread/sysdeps/mach/bits/CVS/Entries delete mode 100644 libpthread/sysdeps/mach/bits/CVS/Repository delete mode 100644 libpthread/sysdeps/mach/bits/CVS/Root delete mode 100644 libpthread/sysdeps/mach/bits/CVS/Tag delete mode 100644 libpthread/sysdeps/mach/hurd/CVS/Entries delete mode 100644 libpthread/sysdeps/mach/hurd/CVS/Repository delete mode 100644 libpthread/sysdeps/mach/hurd/CVS/Root delete mode 100644 libpthread/sysdeps/mach/hurd/CVS/Tag delete mode 100644 libpthread/sysdeps/mach/hurd/i386/CVS/Entries delete mode 100644 libpthread/sysdeps/mach/hurd/i386/CVS/Repository delete mode 100644 libpthread/sysdeps/mach/hurd/i386/CVS/Root delete mode 100644 libpthread/sysdeps/mach/hurd/i386/CVS/Tag delete mode 100644 libpthread/sysdeps/posix/CVS/Entries delete mode 100644 libpthread/sysdeps/posix/CVS/Repository delete mode 100644 libpthread/sysdeps/posix/CVS/Root delete mode 100644 libpthread/sysdeps/posix/CVS/Tag delete mode 100644 libpthread/tests/CVS/Entries delete mode 100644 libpthread/tests/CVS/Repository delete mode 100644 libpthread/tests/CVS/Root delete mode 100644 libpthread/tests/CVS/Tag delete mode 100644 pfinet.old/CVS/Entries delete mode 100644 pfinet.old/CVS/Repository delete mode 100644 pfinet.old/CVS/Root delete mode 100644 pfinet.old/asm/CVS/Entries delete mode 100644 pfinet.old/asm/CVS/Repository delete mode 100644 pfinet.old/asm/CVS/Root delete mode 100644 pfinet.old/glue-include/CVS/Entries delete mode 100644 pfinet.old/glue-include/CVS/Repository delete mode 100644 pfinet.old/glue-include/CVS/Root delete mode 100644 pfinet.old/glue-include/asm/CVS/Entries delete mode 100644 pfinet.old/glue-include/asm/CVS/Repository delete mode 100644 pfinet.old/glue-include/asm/CVS/Root delete mode 100644 pfinet.old/glue-include/linux/CVS/Entries delete mode 100644 pfinet.old/glue-include/linux/CVS/Repository delete mode 100644 pfinet.old/glue-include/linux/CVS/Root delete mode 100644 pfinet.old/linux-inet/CVS/Entries delete mode 100644 pfinet.old/linux-inet/CVS/Repository delete mode 100644 pfinet.old/linux-inet/CVS/Root delete mode 100644 pfinet.old/linux-src/CVS/Entries delete mode 100644 pfinet.old/linux-src/CVS/Repository delete mode 100644 pfinet.old/linux-src/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/alpha/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/alpha/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/alpha/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/alpha/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/alpha/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/alpha/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/arm/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/arm/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/arm/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/arm/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/arm/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/arm/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/i386/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/i386/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/i386/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/i386/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/i386/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/i386/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/m68k/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/m68k/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/m68k/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/m68k/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/m68k/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/m68k/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/ppc/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/ppc/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/ppc/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/ppc/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/ppc/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/ppc/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/s390/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/s390/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/s390/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/s390/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/s390/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/s390/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/sparc/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/sparc/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/sparc/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/sparc/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/sparc/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/sparc/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/sparc64/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/sparc64/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/sparc64/CVS/Root delete mode 100644 pfinet.old/linux-src/arch/sparc64/lib/CVS/Entries delete mode 100644 pfinet.old/linux-src/arch/sparc64/lib/CVS/Repository delete mode 100644 pfinet.old/linux-src/arch/sparc64/lib/CVS/Root delete mode 100644 pfinet.old/linux-src/include/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-alpha/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-alpha/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-alpha/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-arm/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-arm/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-arm/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-i386/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-i386/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-i386/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-m68k/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-m68k/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-m68k/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-mips/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-mips/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-mips/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-ppc/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-ppc/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-ppc/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-s390/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-s390/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-s390/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-sparc/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-sparc/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-sparc/CVS/Root delete mode 100644 pfinet.old/linux-src/include/asm-sparc64/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/asm-sparc64/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/asm-sparc64/CVS/Root delete mode 100644 pfinet.old/linux-src/include/linux/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/linux/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/linux/CVS/Root delete mode 100644 pfinet.old/linux-src/include/net/CVS/Entries delete mode 100644 pfinet.old/linux-src/include/net/CVS/Repository delete mode 100644 pfinet.old/linux-src/include/net/CVS/Root delete mode 100644 pfinet.old/linux-src/net/CVS/Entries delete mode 100644 pfinet.old/linux-src/net/CVS/Repository delete mode 100644 pfinet.old/linux-src/net/CVS/Root delete mode 100644 pfinet.old/linux-src/net/core/CVS/Entries delete mode 100644 pfinet.old/linux-src/net/core/CVS/Repository delete mode 100644 pfinet.old/linux-src/net/core/CVS/Root delete mode 100644 pfinet.old/linux-src/net/ethernet/CVS/Entries delete mode 100644 pfinet.old/linux-src/net/ethernet/CVS/Repository delete mode 100644 pfinet.old/linux-src/net/ethernet/CVS/Root delete mode 100644 pfinet.old/linux-src/net/ipv4/CVS/Entries delete mode 100644 pfinet.old/linux-src/net/ipv4/CVS/Repository delete mode 100644 pfinet.old/linux-src/net/ipv4/CVS/Root delete mode 100644 pfinet.old/linux-src/net/ipv6/CVS/Entries delete mode 100644 pfinet.old/linux-src/net/ipv6/CVS/Repository delete mode 100644 pfinet.old/linux-src/net/ipv6/CVS/Root delete mode 100644 pfinet.old/linux/CVS/Entries delete mode 100644 pfinet.old/linux/CVS/Repository delete mode 100644 pfinet.old/linux/CVS/Root delete mode 100644 proc_proxy/CVS/Entries delete mode 100644 proc_proxy/CVS/Repository delete mode 100644 proc_proxy/CVS/Root delete mode 100644 proc_proxy/CVS/Tag delete mode 100644 serverboot/CVS/Entries delete mode 100644 serverboot/CVS/Repository delete mode 100644 serverboot/CVS/Root delete mode 100644 serverboot/CVS/Tag delete mode 100644 ufs-fsck/CVS/Entries delete mode 100644 ufs-fsck/CVS/Repository delete mode 100644 ufs-fsck/CVS/Root delete mode 100644 ufs-fsck/CVS/Tag delete mode 100644 ufs-utils/CVS/Entries delete mode 100644 ufs-utils/CVS/Repository delete mode 100644 ufs-utils/CVS/Root delete mode 100644 ufs-utils/CVS/Tag delete mode 100644 ufs/CVS/Entries delete mode 100644 ufs/CVS/Repository delete mode 100644 ufs/CVS/Root delete mode 100644 ufs/CVS/Tag delete mode 100644 unionfs/CVS/Entries delete mode 100644 unionfs/CVS/Repository delete mode 100644 unionfs/CVS/Root (limited to 'devnode') diff --git a/CVS/Entries b/CVS/Entries deleted file mode 100644 index 418a0f28..00000000 --- a/CVS/Entries +++ /dev/null @@ -1,88 +0,0 @@ -/BUGS/1.2/Wed Aug 14 18:08:46 1996//Tzhengda-soc2008-virt-branch -/COPYING/1.1/Thu Jul 18 04:28:05 1996//Tzhengda-soc2008-virt-branch -/ChangeLog/1.147/Tue Nov 13 22:52:31 2007//Tzhengda-soc2008-virt-branch -/INSTALL/1.8/Sun Feb 10 17:11:22 2002//Tzhengda-soc2008-virt-branch -/INSTALL-cross/1.4/Sun Sep 30 19:50:16 2007//Tzhengda-soc2008-virt-branch -/Makeconf/1.211/Wed Nov 7 13:07:52 2007//Tzhengda-soc2008-virt-branch -/NEWS/1.10/Sun Sep 29 20:58:34 2002//Tzhengda-soc2008-virt-branch -/README/1.4/Tue Jun 10 00:48:16 1997//Tzhengda-soc2008-virt-branch -/README.CVS/1.1/Thu Mar 18 21:19:06 2004//Tzhengda-soc2008-virt-branch -/TODO/1.108/Tue Apr 25 13:57:22 2006//Tzhengda-soc2008-virt-branch -/aclocal.m4/1.5/Sat Feb 15 23:57:50 2003//Tzhengda-soc2008-virt-branch -/build.mk.in/1.2/Fri Sep 22 18:26:03 1995//Tzhengda-soc2008-virt-branch -/build.mkcf.in/1.2/Thu Jul 18 06:28:57 1996//Tzhengda-soc2008-virt-branch -/config.guess/1.3/Thu Jan 26 17:37:58 2006//Tzhengda-soc2008-virt-branch -/config.make.in/1.19.8.1/Wed Aug 13 13:52:36 2008//Tzhengda-soc2008-virt-branch -/config.sub/1.3/Thu Jan 26 17:37:58 2006//Tzhengda-soc2008-virt-branch -/hurd.boot/1.6/Mon Aug 20 22:49:03 2001//Tzhengda-soc2008-virt-branch -/install-sh/1.1/Wed Apr 15 15:07:20 1998//Tzhengda-soc2008-virt-branch -/mkinstalldirs/1.1/Thu Jul 18 04:35:29 1996//Tzhengda-soc2008-virt-branch -/move-if-change/1.1/Fri Jun 18 21:01:28 1999//Tzhengda-soc2008-virt-branch -/tasks/1.14/Tue Apr 25 13:54:58 2006//Tzhengda-soc2008-virt-branch -/version.h.in/1.2/Mon May 13 20:45:23 2002//Tzhengda-soc2008-virt-branch -D/auth//// -D/benchmarks//// -D/boot//// -D/bsdfsck//// -D/config//// -D/console//// -D/console-client//// -D/daemons//// -D/defpager//// -D/devnode//// -D/doc//// -D/eth-filter//// -D/eth-multiplexer//// -D/exec//// -D/ext2fs//// -D/fatfs//// -D/fstests//// -D/ftpfs//// -D/hostmux//// -D/hurd//// -D/include//// -D/init//// -D/isofs//// -D/libcons//// -D/libdirmgt//// -D/libdiskfs//// -D/libfshelp//// -D/libftpconn//// -D/libhurdbugaddr//// -D/libihash//// -D/libiohelp//// -D/libnetfs//// -D/libpager//// -D/libpipe//// -D/libports//// -D/libps//// -D/libpthread//// -D/libshouldbeinlibc//// -D/libstore//// -D/libthreads//// -D/libtreefs//// -D/libtrivfs//// -D/login//// -D/mach-defpager//// -D/mount//// -D/nfs//// -D/nfsd//// -D/pfinet//// -D/pflocal//// -D/proc//// -D/proc_proxy//// -D/release//// -D/serverboot//// -D/storeio//// -D/sutils//// -D/term//// -D/tmpfs//// -D/trans//// -D/ufs//// -D/ufs-fsck//// -D/ufs-utils//// -D/usermux//// -D/utils//// -/Makefile/1.128.10.2/Wed Aug 27 05:42:49 2008//Tzhengda-soc2008-virt-branch -/configure.in/1.37.8.2/Fri Oct 3 22:35:49 2008//Tzhengda-soc2008-virt-branch -/configure/1.3.8.2/Fri Oct 3 21:28:08 2008//Tzhengda-soc2008-virt-branch diff --git a/CVS/Entries.Log b/CVS/Entries.Log deleted file mode 100644 index d3c1aece..00000000 --- a/CVS/Entries.Log +++ /dev/null @@ -1 +0,0 @@ -A D/unionfs//// diff --git a/CVS/Repository b/CVS/Repository deleted file mode 100644 index 16b83484..00000000 --- a/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd diff --git a/CVS/Root b/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/CVS/Tag b/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/boot-proxy-exc/CVS/Entries b/boot-proxy-exc/CVS/Entries deleted file mode 100644 index 52df2bda..00000000 --- a/boot-proxy-exc/CVS/Entries +++ /dev/null @@ -1,26 +0,0 @@ -/boot_script.h/1.10/Wed May 29 02:42:34 2002//Tzhengda-soc2008-virt-branch -/frank1.ld/1.1/Thu Jul 18 04:29:29 1996//Tzhengda-soc2008-virt-branch -/frankemul.ld/1.1/Thu Jul 18 04:29:30 1996//Tzhengda-soc2008-virt-branch -/mach-crt0.c/1.3/Fri Sep 22 18:14:11 1995//Tzhengda-soc2008-virt-branch -/sigvec.S/1.3/Mon May 22 15:49:14 1995//Tzhengda-soc2008-virt-branch -/syscall.S/1.6/Sat Sep 23 06:30:10 1995//Tzhengda-soc2008-virt-branch -/ux.c/1.3/Mon Apr 29 03:54:24 1996//Tzhengda-soc2008-virt-branch -/ux.h/1.2/Wed Feb 14 18:09:19 1996//Tzhengda-soc2008-virt-branch -/Makefile/1.56.14.1/Sun Apr 5 19:36:59 2009//Tzhengda-soc2008-virt-branch -/boot_script.c/1.15.14.1/Sun Apr 5 22:00:26 2009//Tzhengda-soc2008-virt-branch -/exc_impl.c/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/list.c/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/list.h/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/mach_host_impl.c/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/mach_impl.c/1.1.2.1/Sun Apr 5 19:31:21 2009//Tzhengda-soc2008-virt-branch -/mach_port_impl.c/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/mach_proxy.c/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/mach_proxy.h/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/ourmach.defs/1.1.2.1/Sun Apr 5 19:51:14 2009//Tzhengda-soc2008-virt-branch -/ourmach_host.defs/1.1.2.1/Sun Apr 5 19:59:02 2009//Tzhengda-soc2008-virt-branch -/ourmach_port.defs/1.1.2.1/Sun Apr 5 18:55:11 2009//Tzhengda-soc2008-virt-branch -/userland-boot.c/1.4.14.2/Sat Apr 18 12:48:03 2009//Tzhengda-soc2008-virt-branch -/util.h/1.1.2.2/Mon Apr 6 19:41:15 2009//Tzhengda-soc2008-virt-branch -/ChangeLog/1.46.12.5/Sun Apr 19 18:04:59 2009//Tzhengda-soc2008-virt-branch -/boot.c/1.109.12.5/Sun Apr 19 18:02:37 2009//Tzhengda-soc2008-virt-branch -D diff --git a/boot-proxy-exc/CVS/Repository b/boot-proxy-exc/CVS/Repository deleted file mode 100644 index 038eab09..00000000 --- a/boot-proxy-exc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/boot diff --git a/boot-proxy-exc/CVS/Root b/boot-proxy-exc/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/boot-proxy-exc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/boot-proxy-exc/CVS/Tag b/boot-proxy-exc/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/boot-proxy-exc/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/boot.backup1/CVS/Entries b/boot.backup1/CVS/Entries deleted file mode 100644 index 0d4afb1c..00000000 --- a/boot.backup1/CVS/Entries +++ /dev/null @@ -1,14 +0,0 @@ -/Makefile/1.56/Fri Aug 17 04:47:51 2001//Tzhengda-soc2008-virt-branch -/boot_script.c/1.15/Sat Jan 4 21:30:10 2003//Tzhengda-soc2008-virt-branch -/boot_script.h/1.10/Wed May 29 02:42:34 2002//Tzhengda-soc2008-virt-branch -/frank1.ld/1.1/Thu Jul 18 04:29:29 1996//Tzhengda-soc2008-virt-branch -/frankemul.ld/1.1/Thu Jul 18 04:29:30 1996//Tzhengda-soc2008-virt-branch -/mach-crt0.c/1.3/Fri Sep 22 18:14:11 1995//Tzhengda-soc2008-virt-branch -/sigvec.S/1.3/Mon May 22 15:49:14 1995//Tzhengda-soc2008-virt-branch -/syscall.S/1.6/Sat Sep 23 06:30:10 1995//Tzhengda-soc2008-virt-branch -/userland-boot.c/1.4/Fri Aug 17 19:50:27 2001//Tzhengda-soc2008-virt-branch -/ux.c/1.3/Mon Apr 29 03:54:24 1996//Tzhengda-soc2008-virt-branch -/ux.h/1.2/Wed Feb 14 18:09:19 1996//Tzhengda-soc2008-virt-branch -/ChangeLog/1.46.12.2/Tue Sep 9 12:11:21 2008//Tzhengda-soc2008-virt-branch -/boot.c/1.109.12.2/Tue Sep 9 09:10:33 2008//Tzhengda-soc2008-virt-branch -D diff --git a/boot.backup1/CVS/Repository b/boot.backup1/CVS/Repository deleted file mode 100644 index 038eab09..00000000 --- a/boot.backup1/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/boot diff --git a/boot.backup1/CVS/Root b/boot.backup1/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/boot.backup1/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/boot.backup1/CVS/Tag b/boot.backup1/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/boot.backup1/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/bsdfsck/CVS/Entries b/bsdfsck/CVS/Entries deleted file mode 100644 index 17453b19..00000000 --- a/bsdfsck/CVS/Entries +++ /dev/null @@ -1,16 +0,0 @@ -/ChangeLog/1.1/Wed Jul 17 22:55:01 1996//Tzhengda-soc2008-virt-branch -/Makefile/1.9/Fri Jul 7 02:00:43 1995//Tzhengda-soc2008-virt-branch -/dir.c/1.5/Fri Nov 4 21:54:56 1994//Tzhengda-soc2008-virt-branch -/fsck.h/1.10/Wed Oct 5 17:09:06 1994//Tzhengda-soc2008-virt-branch -/inode.c/1.6/Wed Oct 5 17:05:30 1994//Tzhengda-soc2008-virt-branch -/main.c/1.4/Fri Aug 26 18:06:30 1994//Tzhengda-soc2008-virt-branch -/pass1.c/1.4/Wed Oct 5 16:53:12 1994//Tzhengda-soc2008-virt-branch -/pass1b.c/1.2/Tue Aug 23 20:01:24 1994//Tzhengda-soc2008-virt-branch -/pass2.c/1.3/Wed Aug 24 15:11:56 1994//Tzhengda-soc2008-virt-branch -/pass3.c/1.2/Tue Aug 23 20:02:13 1994//Tzhengda-soc2008-virt-branch -/pass4.c/1.2/Tue Aug 23 20:02:28 1994//Tzhengda-soc2008-virt-branch -/pass5.c/1.3/Fri Aug 26 18:03:07 1994//Tzhengda-soc2008-virt-branch -/preen.c/1.1/Tue Aug 23 19:29:25 1994//Tzhengda-soc2008-virt-branch -/setup.c/1.3/Thu Aug 25 15:22:35 1994//Tzhengda-soc2008-virt-branch -/utilities.c/1.2/Tue Aug 23 20:18:15 1994//Tzhengda-soc2008-virt-branch -D diff --git a/bsdfsck/CVS/Repository b/bsdfsck/CVS/Repository deleted file mode 100644 index 64dc3f58..00000000 --- a/bsdfsck/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/bsdfsck diff --git a/bsdfsck/CVS/Root b/bsdfsck/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/bsdfsck/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/bsdfsck/CVS/Tag b/bsdfsck/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/bsdfsck/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/devnode/CVS/Entries b/devnode/CVS/Entries deleted file mode 100644 index a8d9b644..00000000 --- a/devnode/CVS/Entries +++ /dev/null @@ -1,6 +0,0 @@ -/Makefile/1.1.2.1/Sun Aug 17 19:15:08 2008//Tzhengda-soc2008-virt-branch -/util.h/1.1.2.2/Thu Aug 28 19:25:34 2008//Tzhengda-soc2008-virt-branch -/ChangeLog/1.1.2.5/Fri Sep 26 22:26:32 2008//Tzhengda-soc2008-virt-branch -/README/1.1.2.2/Fri Sep 26 22:16:13 2008//Tzhengda-soc2008-virt-branch -/devnode.c/1.1.2.5/Fri Sep 26 22:10:58 2008//Tzhengda-soc2008-virt-branch -D diff --git a/devnode/CVS/Repository b/devnode/CVS/Repository deleted file mode 100644 index 2adffeb8..00000000 --- a/devnode/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/devnode diff --git a/devnode/CVS/Root b/devnode/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/devnode/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/devnode/CVS/Tag b/devnode/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/devnode/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/eth-filter.multi-thread/CVS/Entries b/eth-filter.multi-thread/CVS/Entries deleted file mode 100644 index 3ee05b29..00000000 --- a/eth-filter.multi-thread/CVS/Entries +++ /dev/null @@ -1,11 +0,0 @@ -/ChangeLog/1.1.2.8/Fri Aug 22 17:07:59 2008//Tzhengda-soc2008-virt-branch -/Makefile/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/README/1.1.2.3/Fri Aug 22 17:07:59 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.c/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.h/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/filter.c/1.1.2.8/Fri Aug 22 17:07:59 2008//Tzhengda-soc2008-virt-branch -/pcap_filter.c/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/queue.c/1.1.2.1/Wed Aug 13 13:29:32 2008//Tzhengda-soc2008-virt-branch -/queue.h/1.1.2.1/Wed Aug 13 13:29:32 2008//Tzhengda-soc2008-virt-branch -/util.h/1.1.2.1/Wed Aug 13 13:29:32 2008//Tzhengda-soc2008-virt-branch -D diff --git a/eth-filter.multi-thread/CVS/Repository b/eth-filter.multi-thread/CVS/Repository deleted file mode 100644 index 343b4f89..00000000 --- a/eth-filter.multi-thread/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/eth-filter diff --git a/eth-filter.multi-thread/CVS/Root b/eth-filter.multi-thread/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/eth-filter.multi-thread/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/eth-filter.multi-thread/CVS/Tag b/eth-filter.multi-thread/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/eth-filter.multi-thread/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/eth-filter/CVS/Entries b/eth-filter/CVS/Entries deleted file mode 100644 index 4c606977..00000000 --- a/eth-filter/CVS/Entries +++ /dev/null @@ -1,11 +0,0 @@ -/README/1.1.2.3/Fri Aug 22 17:07:59 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.c/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.h/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/pcap_filter.c/1.1.2.1/Wed Aug 13 13:29:31 2008//Tzhengda-soc2008-virt-branch -/queue.c/1.1.2.1/Wed Aug 13 13:29:32 2008//Tzhengda-soc2008-virt-branch -/queue.h/1.1.2.1/Wed Aug 13 13:29:32 2008//Tzhengda-soc2008-virt-branch -/Makefile/1.1.2.2/Fri Oct 3 20:32:19 2008//Tzhengda-soc2008-virt-branch -/util.h/1.1.2.3/Fri Oct 3 20:50:52 2008//Tzhengda-soc2008-virt-branch -/ChangeLog/1.1.2.11/Sat Apr 18 05:13:30 2009//Tzhengda-soc2008-virt-branch -/filter.c/1.1.2.11/Sat Apr 18 05:10:56 2009//Tzhengda-soc2008-virt-branch -D diff --git a/eth-filter/CVS/Repository b/eth-filter/CVS/Repository deleted file mode 100644 index 343b4f89..00000000 --- a/eth-filter/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/eth-filter diff --git a/eth-filter/CVS/Root b/eth-filter/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/eth-filter/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/eth-filter/CVS/Tag b/eth-filter/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/eth-filter/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/eth-multiplexer/CVS/Entries b/eth-multiplexer/CVS/Entries deleted file mode 100644 index b63c1ba0..00000000 --- a/eth-multiplexer/CVS/Entries +++ /dev/null @@ -1,21 +0,0 @@ -/ethernet.h/1.1.2.1/Wed Aug 13 13:33:59 2008//Tzhengda-soc2008-virt-branch -/queue.h/1.1.2.1/Wed Aug 13 13:33:59 2008//Tzhengda-soc2008-virt-branch -/README/1.1.2.6/Sun Oct 26 23:26:40 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.c/1.1.2.2/Sun Oct 26 20:34:05 2008//Tzhengda-soc2008-virt-branch -/bpf_impl.h/1.1.2.2/Sun Oct 26 23:31:10 2008//Tzhengda-soc2008-virt-branch -/dev_stat.c/1.1.2.1/Sun Aug 31 02:06:58 2008//Tzhengda-soc2008-virt-branch -/queue.c/1.1.2.1/Sun Aug 31 02:06:58 2008//Tzhengda-soc2008-virt-branch -/test.c/1.1.2.1/Sun Aug 31 02:06:58 2008//Tzhengda-soc2008-virt-branch -/notify_impl.c/1.1.2.1/Mon Oct 27 18:50:39 2008//Tzhengda-soc2008-virt-branch -/demuxer.c/1.1.2.2/Sun Nov 9 02:56:06 2008//Tzhengda-soc2008-virt-branch -/util.h/1.1.2.5/Sun Nov 9 09:02:06 2008//Tzhengda-soc2008-virt-branch -/Makefile/1.1.2.7/Sun Nov 9 13:43:15 2008//Tzhengda-soc2008-virt-branch -/vdev.c/1.1.2.13/Sun Nov 9 13:08:25 2008//Tzhengda-soc2008-virt-branch -/vdev.h/1.1.2.11/Mon Dec 8 11:29:32 2008//Tzhengda-soc2008-virt-branch -/ethernet.c/1.1.2.6/Sat Jan 3 00:57:06 2009//Tzhengda-soc2008-virt-branch -/multiplexer.c/1.1.2.19/Fri Mar 13 21:14:05 2009//Tzhengda-soc2008-virt-branch -/ChangeLog/1.1.2.26/Sat Apr 18 10:05:51 2009//Tzhengda-soc2008-virt-branch -/device_impl.c/1.1.2.6/Sat Apr 18 09:46:21 2009//Tzhengda-soc2008-virt-branch -/netfs_impl.c/1.1.2.5/Sat Apr 18 09:59:45 2009//Tzhengda-soc2008-virt-branch -/netfs_impl.h/1.1.2.3/Sat Apr 18 08:28:01 2009//Tzhengda-soc2008-virt-branch -D diff --git a/eth-multiplexer/CVS/Repository b/eth-multiplexer/CVS/Repository deleted file mode 100644 index 75b1a8ef..00000000 --- a/eth-multiplexer/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/eth-multiplexer diff --git a/eth-multiplexer/CVS/Root b/eth-multiplexer/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/eth-multiplexer/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/eth-multiplexer/CVS/Tag b/eth-multiplexer/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/eth-multiplexer/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/CVS/Entries b/libpthread/CVS/Entries deleted file mode 100644 index 356b84d8..00000000 --- a/libpthread/CVS/Entries +++ /dev/null @@ -1,12 +0,0 @@ -/.cvsignore/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/ChangeLog/1.39/Fri Jul 18 14:31:06 2008//Tzhengda-soc2008-virt-branch -/Makefile/1.10/Fri Jul 18 14:31:06 2008//Tzhengda-soc2008-virt-branch -/TODO/1.3/Sun Jun 24 15:11:51 2007//Tzhengda-soc2008-virt-branch -/libpthread.a/1.1/Fri Oct 11 23:57:46 2002//Tzhengda-soc2008-virt-branch -/libpthread_pic.a/1.1/Fri Oct 11 23:57:47 2002//Tzhengda-soc2008-virt-branch -/lockfile.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/not-in-libc.h/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -D/include//// -D/pthread//// -D/sysdeps//// -D/tests//// diff --git a/libpthread/CVS/Repository b/libpthread/CVS/Repository deleted file mode 100644 index d231a928..00000000 --- a/libpthread/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread diff --git a/libpthread/CVS/Root b/libpthread/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/CVS/Tag b/libpthread/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/include/CVS/Entries b/libpthread/include/CVS/Entries deleted file mode 100644 index 81b10d25..00000000 --- a/libpthread/include/CVS/Entries +++ /dev/null @@ -1,5 +0,0 @@ -/libc-symbols.h/1.3/Tue Jul 1 11:43:14 2008//Tzhengda-soc2008-virt-branch -/pthread.h/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/semaphore.h/1.4/Tue Jul 1 11:43:14 2008//Tzhengda-soc2008-virt-branch -/set-hooks.h/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -D/pthread//// diff --git a/libpthread/include/CVS/Repository b/libpthread/include/CVS/Repository deleted file mode 100644 index ac2ebb46..00000000 --- a/libpthread/include/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/include diff --git a/libpthread/include/CVS/Root b/libpthread/include/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/include/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/include/CVS/Tag b/libpthread/include/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/include/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/include/pthread/CVS/Entries b/libpthread/include/pthread/CVS/Entries deleted file mode 100644 index df89a261..00000000 --- a/libpthread/include/pthread/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/pthread.h/1.13/Tue Jul 1 11:43:14 2008//Tzhengda-soc2008-virt-branch -/pthreadtypes.h/1.2/Tue Jul 1 11:43:14 2008//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/include/pthread/CVS/Repository b/libpthread/include/pthread/CVS/Repository deleted file mode 100644 index 551cc7d1..00000000 --- a/libpthread/include/pthread/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/include/pthread diff --git a/libpthread/include/pthread/CVS/Root b/libpthread/include/pthread/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/include/pthread/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/include/pthread/CVS/Tag b/libpthread/include/pthread/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/include/pthread/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/pthread/CVS/Entries b/libpthread/pthread/CVS/Entries deleted file mode 100644 index 7007a370..00000000 --- a/libpthread/pthread/CVS/Entries +++ /dev/null @@ -1,20 +0,0 @@ -/Versions/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/cthreads-compat.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-alloc.c/1.3/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-cancel.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cleanup.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-create.c/1.4/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-dealloc.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-detach.c/1.2/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-exit.c/1.2/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-getattr.c/1.1/Sat May 17 20:07:56 2008//Tzhengda-soc2008-virt-branch -/pt-initialize.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-internal.h/1.7/Tue Jul 1 11:43:14 2008//Tzhengda-soc2008-virt-branch -/pt-join.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-self.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-setcancelstate.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-setcanceltype.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-sigmask.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-spin-inlines.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-testcancel.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/pthread/CVS/Repository b/libpthread/pthread/CVS/Repository deleted file mode 100644 index 11a2c33b..00000000 --- a/libpthread/pthread/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/pthread diff --git a/libpthread/pthread/CVS/Root b/libpthread/pthread/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/pthread/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/pthread/CVS/Tag b/libpthread/pthread/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/pthread/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/CVS/Entries b/libpthread/sysdeps/CVS/Entries deleted file mode 100644 index e7d44b09..00000000 --- a/libpthread/sysdeps/CVS/Entries +++ /dev/null @@ -1,6 +0,0 @@ -D/generic//// -D/hurd//// -D/i386//// -D/l4//// -D/mach//// -D/posix//// diff --git a/libpthread/sysdeps/CVS/Repository b/libpthread/sysdeps/CVS/Repository deleted file mode 100644 index 9e7e5b3d..00000000 --- a/libpthread/sysdeps/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps diff --git a/libpthread/sysdeps/CVS/Root b/libpthread/sysdeps/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/CVS/Tag b/libpthread/sysdeps/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/generic/CVS/Entries b/libpthread/sysdeps/generic/CVS/Entries deleted file mode 100644 index 98d62f3f..00000000 --- a/libpthread/sysdeps/generic/CVS/Entries +++ /dev/null @@ -1,102 +0,0 @@ -/pt-atfork.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getdetachstate.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getguardsize.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getinheritsched.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getschedparam.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getschedpolicy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getscope.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getstack.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getstackaddr.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-getstacksize.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-init.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setdetachstate.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setguardsize.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setinheritsched.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setschedparam.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setschedpolicy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setscope.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setstack.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setstackaddr.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setstacksize.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-attr.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrier-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrier-init.c/1.2/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-barrier-wait.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrier.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrierattr-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrierattr-getpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrierattr-init.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-barrierattr-setpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cond-brdcast.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cond-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cond-init.c/1.2/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-cond-signal.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cond-timedwait.c/1.3/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-cond-wait.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-cond.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-getclock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-getpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-init.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-setclock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-condattr-setpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-destroy-specific.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-equal.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-getconcurrency.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-getcpuclockid.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-getschedparam.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-getspecific.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-init-specific.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-key-create.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-key-delete.c/1.2/Sat Nov 2 23:41:51 2002//Tzhengda-soc2008-virt-branch -/pt-key.h/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutex-destroy.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-mutex-getprioceiling.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutex-init.c/1.4/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-mutex-lock.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-mutex-setprioceiling.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutex-timedlock.c/1.4/Sun Jun 22 09:05:31 2008//Tzhengda-soc2008-virt-branch -/pt-mutex-trylock.c/1.6/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-mutex-unlock.c/1.5/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-mutexattr-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-getprioceiling.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-getprotocol.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-getpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-gettype.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-init.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-setprioceiling.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-setprotocol.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-setpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr-settype.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-mutexattr.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-once.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlock-attr.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlock-destroy.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-rwlock-init.c/1.4/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/pt-rwlock-rdlock.c/1.2/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-rwlock-timedrdlock.c/1.3/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-rwlock-timedwrlock.c/1.3/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/pt-rwlock-tryrdlock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlock-trywrlock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlock-unlock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlock-wrlock.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlockattr-destroy.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlockattr-getpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlockattr-init.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-rwlockattr-setpshared.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-setconcurrency.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-setschedparam.c/1.2/Wed Apr 20 15:26:52 2005//Tzhengda-soc2008-virt-branch -/pt-setschedprio.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/pt-setspecific.c/1.1/Thu Oct 10 23:05:06 2002//Tzhengda-soc2008-virt-branch -/sem-close.c/1.2/Sat Jan 20 13:07:06 2007//Tzhengda-soc2008-virt-branch -/sem-destroy.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-getvalue.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-init.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-open.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-post.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-timedwait.c/1.4/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-trywait.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-unlink.c/1.3/Tue Jul 1 11:43:15 2008//Tzhengda-soc2008-virt-branch -/sem-wait.c/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -D/bits//// diff --git a/libpthread/sysdeps/generic/CVS/Repository b/libpthread/sysdeps/generic/CVS/Repository deleted file mode 100644 index df04e6a6..00000000 --- a/libpthread/sysdeps/generic/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/generic diff --git a/libpthread/sysdeps/generic/CVS/Root b/libpthread/sysdeps/generic/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/generic/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/generic/CVS/Tag b/libpthread/sysdeps/generic/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/generic/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/generic/bits/CVS/Entries b/libpthread/sysdeps/generic/bits/CVS/Entries deleted file mode 100644 index 13c50c38..00000000 --- a/libpthread/sysdeps/generic/bits/CVS/Entries +++ /dev/null @@ -1,15 +0,0 @@ -/barrier-attr.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/barrier.h/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/cancelation.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/condition-attr.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/condition.h/1.2/Thu May 12 20:55:38 2005//Tzhengda-soc2008-virt-branch -/mutex-attr.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/mutex.h/1.6/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/once.h/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pthread.h/1.5/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/rwlock-attr.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/rwlock.h/1.6/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/semaphore.h/1.1/Thu May 12 11:50:42 2005//Tzhengda-soc2008-virt-branch -/thread-attr.h/1.3/Tue Jul 1 11:43:16 2008//Tzhengda-soc2008-virt-branch -/thread-specific.h/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/generic/bits/CVS/Repository b/libpthread/sysdeps/generic/bits/CVS/Repository deleted file mode 100644 index 565a3470..00000000 --- a/libpthread/sysdeps/generic/bits/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/generic/bits diff --git a/libpthread/sysdeps/generic/bits/CVS/Root b/libpthread/sysdeps/generic/bits/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/generic/bits/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/generic/bits/CVS/Tag b/libpthread/sysdeps/generic/bits/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/generic/bits/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/hurd/CVS/Entries b/libpthread/sysdeps/hurd/CVS/Entries deleted file mode 100644 index 1e6dc2ce..00000000 --- a/libpthread/sysdeps/hurd/CVS/Entries +++ /dev/null @@ -1,9 +0,0 @@ -/pt-destroy-specific.c/1.3/Mon Mar 1 09:58:44 2004//Tzhengda-soc2008-virt-branch -/pt-getspecific.c/1.2/Mon Mar 1 09:58:44 2004//Tzhengda-soc2008-virt-branch -/pt-init-specific.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-key-create.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-key-delete.c/1.2/Sat Nov 2 23:41:51 2002//Tzhengda-soc2008-virt-branch -/pt-key.h/1.2/Mon Mar 1 09:58:44 2004//Tzhengda-soc2008-virt-branch -/pt-kill.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-setspecific.c/1.2/Mon Mar 1 09:58:44 2004//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/hurd/CVS/Repository b/libpthread/sysdeps/hurd/CVS/Repository deleted file mode 100644 index 81891d23..00000000 --- a/libpthread/sysdeps/hurd/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/hurd diff --git a/libpthread/sysdeps/hurd/CVS/Root b/libpthread/sysdeps/hurd/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/hurd/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/hurd/CVS/Tag b/libpthread/sysdeps/hurd/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/hurd/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/i386/CVS/Entries b/libpthread/sysdeps/i386/CVS/Entries deleted file mode 100644 index 2f9b7418..00000000 --- a/libpthread/sysdeps/i386/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/machine-sp.h/1.3/Tue Jul 1 11:43:17 2008//Tzhengda-soc2008-virt-branch -/pt-machdep.h/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -D/bits//// diff --git a/libpthread/sysdeps/i386/CVS/Repository b/libpthread/sysdeps/i386/CVS/Repository deleted file mode 100644 index 61a58d3a..00000000 --- a/libpthread/sysdeps/i386/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/i386 diff --git a/libpthread/sysdeps/i386/CVS/Root b/libpthread/sysdeps/i386/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/i386/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/i386/CVS/Tag b/libpthread/sysdeps/i386/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/i386/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/i386/bits/CVS/Entries b/libpthread/sysdeps/i386/bits/CVS/Entries deleted file mode 100644 index 500bd95c..00000000 --- a/libpthread/sysdeps/i386/bits/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -/atomic.h/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/memory.h/1.3/Tue Jul 1 11:43:17 2008//Tzhengda-soc2008-virt-branch -/spin-lock.h/1.5/Tue Jul 1 11:43:17 2008//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/i386/bits/CVS/Repository b/libpthread/sysdeps/i386/bits/CVS/Repository deleted file mode 100644 index 9ddbe855..00000000 --- a/libpthread/sysdeps/i386/bits/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/i386/bits diff --git a/libpthread/sysdeps/i386/bits/CVS/Root b/libpthread/sysdeps/i386/bits/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/i386/bits/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/i386/bits/CVS/Tag b/libpthread/sysdeps/i386/bits/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/i386/bits/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/l4/CVS/Entries b/libpthread/sysdeps/l4/CVS/Entries deleted file mode 100644 index 2566f6f3..00000000 --- a/libpthread/sysdeps/l4/CVS/Entries +++ /dev/null @@ -1,9 +0,0 @@ -/pt-block.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-docancel.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-stack-alloc.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-start.c/1.2/Mon Nov 18 22:20:58 2002//Tzhengda-soc2008-virt-branch -/pt-thread-alloc.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-thread-halt.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-thread-start.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-wakeup.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -D/hurd//// diff --git a/libpthread/sysdeps/l4/CVS/Repository b/libpthread/sysdeps/l4/CVS/Repository deleted file mode 100644 index a9735deb..00000000 --- a/libpthread/sysdeps/l4/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/l4 diff --git a/libpthread/sysdeps/l4/CVS/Root b/libpthread/sysdeps/l4/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/l4/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/l4/CVS/Tag b/libpthread/sysdeps/l4/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/l4/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/l4/hurd/CVS/Entries b/libpthread/sysdeps/l4/hurd/CVS/Entries deleted file mode 100644 index 280c2c1f..00000000 --- a/libpthread/sysdeps/l4/hurd/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/pt-sysdep.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-sysdep.h/1.2/Tue Jan 18 10:08:52 2005//Tzhengda-soc2008-virt-branch -D/i386//// diff --git a/libpthread/sysdeps/l4/hurd/CVS/Repository b/libpthread/sysdeps/l4/hurd/CVS/Repository deleted file mode 100644 index 751f5e08..00000000 --- a/libpthread/sysdeps/l4/hurd/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/l4/hurd diff --git a/libpthread/sysdeps/l4/hurd/CVS/Root b/libpthread/sysdeps/l4/hurd/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/l4/hurd/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/l4/hurd/CVS/Tag b/libpthread/sysdeps/l4/hurd/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/l4/hurd/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/l4/hurd/i386/CVS/Entries b/libpthread/sysdeps/l4/hurd/i386/CVS/Entries deleted file mode 100644 index 867e57ea..00000000 --- a/libpthread/sysdeps/l4/hurd/i386/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/pt-machdep.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-setup.c/1.3/Tue Jul 1 11:43:17 2008//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/l4/hurd/i386/CVS/Repository b/libpthread/sysdeps/l4/hurd/i386/CVS/Repository deleted file mode 100644 index c8d46d8c..00000000 --- a/libpthread/sysdeps/l4/hurd/i386/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/l4/hurd/i386 diff --git a/libpthread/sysdeps/l4/hurd/i386/CVS/Root b/libpthread/sysdeps/l4/hurd/i386/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/l4/hurd/i386/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/l4/hurd/i386/CVS/Tag b/libpthread/sysdeps/l4/hurd/i386/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/l4/hurd/i386/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/mach/CVS/Entries b/libpthread/sysdeps/mach/CVS/Entries deleted file mode 100644 index 910bd7e9..00000000 --- a/libpthread/sysdeps/mach/CVS/Entries +++ /dev/null @@ -1,11 +0,0 @@ -/pt-block.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-spin.c/1.2/Tue Feb 8 14:42:03 2005//Tzhengda-soc2008-virt-branch -/pt-stack-alloc.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-thread-alloc.c/1.3/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-thread-dealloc.c/1.1/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-thread-halt.c/1.2/Wed May 4 16:04:06 2005//Tzhengda-soc2008-virt-branch -/pt-thread-start.c/1.2/Mon Nov 18 22:20:58 2002//Tzhengda-soc2008-virt-branch -/pt-timedblock.c/1.2/Thu May 12 20:55:37 2005//Tzhengda-soc2008-virt-branch -/pt-wakeup.c/1.2/Mon Nov 18 22:20:58 2002//Tzhengda-soc2008-virt-branch -D/bits//// -D/hurd//// diff --git a/libpthread/sysdeps/mach/CVS/Repository b/libpthread/sysdeps/mach/CVS/Repository deleted file mode 100644 index 23602bb1..00000000 --- a/libpthread/sysdeps/mach/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/mach diff --git a/libpthread/sysdeps/mach/CVS/Root b/libpthread/sysdeps/mach/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/mach/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/mach/CVS/Tag b/libpthread/sysdeps/mach/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/mach/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/mach/bits/CVS/Entries b/libpthread/sysdeps/mach/bits/CVS/Entries deleted file mode 100644 index 1488d083..00000000 --- a/libpthread/sysdeps/mach/bits/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/spin-lock.h/1.4/Tue Jul 1 11:43:18 2008//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/mach/bits/CVS/Repository b/libpthread/sysdeps/mach/bits/CVS/Repository deleted file mode 100644 index e78fe18d..00000000 --- a/libpthread/sysdeps/mach/bits/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/mach/bits diff --git a/libpthread/sysdeps/mach/bits/CVS/Root b/libpthread/sysdeps/mach/bits/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/mach/bits/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/mach/bits/CVS/Tag b/libpthread/sysdeps/mach/bits/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/mach/bits/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/mach/hurd/CVS/Entries b/libpthread/sysdeps/mach/hurd/CVS/Entries deleted file mode 100644 index a13e7635..00000000 --- a/libpthread/sysdeps/mach/hurd/CVS/Entries +++ /dev/null @@ -1,9 +0,0 @@ -/pt-attr-setstackaddr.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-attr-setstacksize.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-docancel.c/1.3/Tue May 27 18:37:29 2008//Tzhengda-soc2008-virt-branch -/pt-sigstate-destroy.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-sigstate-init.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-sigstate.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-sysdep.c/1.2/Wed May 4 16:04:05 2005//Tzhengda-soc2008-virt-branch -/pt-sysdep.h/1.3/Tue Jan 18 10:08:52 2005//Tzhengda-soc2008-virt-branch -D/i386//// diff --git a/libpthread/sysdeps/mach/hurd/CVS/Repository b/libpthread/sysdeps/mach/hurd/CVS/Repository deleted file mode 100644 index ad77c6f9..00000000 --- a/libpthread/sysdeps/mach/hurd/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/mach/hurd diff --git a/libpthread/sysdeps/mach/hurd/CVS/Root b/libpthread/sysdeps/mach/hurd/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/mach/hurd/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/mach/hurd/CVS/Tag b/libpthread/sysdeps/mach/hurd/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/mach/hurd/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/mach/hurd/i386/CVS/Entries b/libpthread/sysdeps/mach/hurd/i386/CVS/Entries deleted file mode 100644 index d153b1d6..00000000 --- a/libpthread/sysdeps/mach/hurd/i386/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/pt-machdep.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/pt-setup.c/1.6/Tue Jul 1 11:43:18 2008//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/mach/hurd/i386/CVS/Repository b/libpthread/sysdeps/mach/hurd/i386/CVS/Repository deleted file mode 100644 index 9a741168..00000000 --- a/libpthread/sysdeps/mach/hurd/i386/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/mach/hurd/i386 diff --git a/libpthread/sysdeps/mach/hurd/i386/CVS/Root b/libpthread/sysdeps/mach/hurd/i386/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/mach/hurd/i386/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/mach/hurd/i386/CVS/Tag b/libpthread/sysdeps/mach/hurd/i386/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/mach/hurd/i386/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/sysdeps/posix/CVS/Entries b/libpthread/sysdeps/posix/CVS/Entries deleted file mode 100644 index efbdeea5..00000000 --- a/libpthread/sysdeps/posix/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/pt-spin.c/1.2/Tue Feb 8 14:42:02 2005//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/sysdeps/posix/CVS/Repository b/libpthread/sysdeps/posix/CVS/Repository deleted file mode 100644 index 9f063683..00000000 --- a/libpthread/sysdeps/posix/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/sysdeps/posix diff --git a/libpthread/sysdeps/posix/CVS/Root b/libpthread/sysdeps/posix/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/sysdeps/posix/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/sysdeps/posix/CVS/Tag b/libpthread/sysdeps/posix/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/sysdeps/posix/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/libpthread/tests/CVS/Entries b/libpthread/tests/CVS/Entries deleted file mode 100644 index f974a145..00000000 --- a/libpthread/tests/CVS/Entries +++ /dev/null @@ -1,19 +0,0 @@ -/.cvsignore/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/Makefile/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-1.c/1.2/Thu May 12 20:55:36 2005//Tzhengda-soc2008-virt-branch -/test-10.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-11.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-12.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-13.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-14.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-15.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-16.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-2.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-3.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-4.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-5.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-6.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-7.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-8.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -/test-9.c/1.1/Thu Oct 10 23:05:05 2002//Tzhengda-soc2008-virt-branch -D diff --git a/libpthread/tests/CVS/Repository b/libpthread/tests/CVS/Repository deleted file mode 100644 index 3135a927..00000000 --- a/libpthread/tests/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/libpthread/tests diff --git a/libpthread/tests/CVS/Root b/libpthread/tests/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/libpthread/tests/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/libpthread/tests/CVS/Tag b/libpthread/tests/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/libpthread/tests/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/pfinet.old/CVS/Entries b/pfinet.old/CVS/Entries deleted file mode 100644 index aca3b0e7..00000000 --- a/pfinet.old/CVS/Entries +++ /dev/null @@ -1,29 +0,0 @@ -/ChangeLog/1.88/Sun Aug 3 19:07:26 2008// -/Makefile/1.37/Mon Oct 8 21:59:09 2007// -/README/1.2/Fri Oct 12 20:56:10 2007// -/config.h/1.5/Mon Oct 8 21:59:09 2007// -/dummy.c/1.1/Wed Oct 4 01:59:03 2000// -/ethernet.c/1.32/Tue Oct 9 08:01:34 2007// -/iioctl-ops.c/1.4/Sat Oct 13 18:30:31 2007// -/io-ops.c/1.28/Tue Jun 11 21:40:25 2002// -/kmem_cache.c/1.1/Fri Feb 4 06:32:38 2000// -/loopback.c/1.5/Fri Feb 4 06:32:38 2000// -/main.c/1.40/Mon Oct 8 21:59:09 2007// -/mapped-time.h/1.5/Sat Jan 29 01:27:31 2000// -/misc.c/1.13/Fri Feb 4 06:32:38 2000// -/mutations.h/1.4/Fri Feb 4 06:32:38 2000// -/options.c/1.14/Sun Oct 14 02:26:10 2007// -/pfinet-ops.c/1.2/Tue Jun 11 21:40:28 2002// -/pfinet.h/1.27/Tue Oct 9 08:01:34 2007// -/sched.c/1.16/Fri May 31 22:55:35 2002// -/socket-ops.c/1.22/Mon Oct 8 21:59:09 2007// -/socket.c/1.5/Wed May 29 08:34:38 2002// -/stubs.c/1.2/Wed May 29 08:34:33 2002// -/time.c/1.2/Thu Apr 25 19:16:49 1996// -/timer-emul.c/1.13/Sun May 5 03:25:53 2002// -/tunnel.c/1.4/Thu Jun 13 20:59:14 2002// -D/asm//// -D/glue-include//// -D/linux//// -D/linux-inet//// -D/linux-src//// diff --git a/pfinet.old/CVS/Repository b/pfinet.old/CVS/Repository deleted file mode 100644 index b149cead..00000000 --- a/pfinet.old/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet diff --git a/pfinet.old/CVS/Root b/pfinet.old/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/asm/CVS/Entries b/pfinet.old/asm/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/pfinet.old/asm/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/pfinet.old/asm/CVS/Repository b/pfinet.old/asm/CVS/Repository deleted file mode 100644 index 0b72dbe3..00000000 --- a/pfinet.old/asm/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/asm diff --git a/pfinet.old/asm/CVS/Root b/pfinet.old/asm/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/asm/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/glue-include/CVS/Entries b/pfinet.old/glue-include/CVS/Entries deleted file mode 100644 index 5e93e789..00000000 --- a/pfinet.old/glue-include/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -D/asm//// -D/linux//// diff --git a/pfinet.old/glue-include/CVS/Repository b/pfinet.old/glue-include/CVS/Repository deleted file mode 100644 index 5a8a5494..00000000 --- a/pfinet.old/glue-include/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/glue-include diff --git a/pfinet.old/glue-include/CVS/Root b/pfinet.old/glue-include/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/glue-include/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/glue-include/asm/CVS/Entries b/pfinet.old/glue-include/asm/CVS/Entries deleted file mode 100644 index 37aac069..00000000 --- a/pfinet.old/glue-include/asm/CVS/Entries +++ /dev/null @@ -1,13 +0,0 @@ -/atomic.h/1.1/Fri Feb 4 06:32:38 2000// -/bitops.h/1.1/Fri Feb 4 06:32:38 2000// -/byteorder.h/1.2/Mon Apr 3 18:44:37 2000// -/delay.h/1.1/Mon Oct 8 22:03:00 2007// -/errno.h/1.1/Fri Feb 4 06:32:38 2000// -/hardirq.h/1.1/Fri Feb 4 06:32:38 2000// -/init.h/1.1/Fri Feb 4 06:32:38 2000// -/segment.h/1.1/Fri Feb 4 06:32:38 2000// -/spinlock.h/1.2/Tue Sep 17 20:42:06 2002// -/system.h/1.2/Tue Mar 14 23:25:14 2006// -/types.h/1.1/Fri Feb 4 06:32:38 2000// -/uaccess.h/1.2/Wed May 29 08:34:41 2002// -D diff --git a/pfinet.old/glue-include/asm/CVS/Repository b/pfinet.old/glue-include/asm/CVS/Repository deleted file mode 100644 index 2c850806..00000000 --- a/pfinet.old/glue-include/asm/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/glue-include/asm diff --git a/pfinet.old/glue-include/asm/CVS/Root b/pfinet.old/glue-include/asm/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/glue-include/asm/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/glue-include/linux/CVS/Entries b/pfinet.old/glue-include/linux/CVS/Entries deleted file mode 100644 index 67752075..00000000 --- a/pfinet.old/glue-include/linux/CVS/Entries +++ /dev/null @@ -1,36 +0,0 @@ -/autoconf.h/1.1/Fri Feb 4 06:32:38 2000// -/binfmts.h/1.1/Fri Feb 4 06:32:38 2000// -/config.h/1.1/Fri Feb 4 06:32:38 2000// -/errno.h/1.1/Fri Feb 4 06:32:39 2000// -/fcntl.h/1.1/Fri Feb 4 06:32:39 2000// -/fs.h/1.1/Fri Feb 4 06:32:39 2000// -/if.h/1.2/Tue Jun 10 21:56:19 2008// -/in.h/1.1/Fri Feb 4 06:32:39 2000// -/in6.h/1.2/Mon Oct 8 21:59:09 2007// -/interrupt.h/1.1/Fri Feb 4 06:32:39 2000// -/ioctl.h/1.1/Fri Feb 4 06:32:39 2000// -/ipv6.h/1.2/Mon Oct 8 21:59:10 2007// -/kernel.h/1.1/Fri Feb 4 06:32:39 2000// -/limits.h/1.1/Fri Feb 4 06:32:39 2000// -/major.h/1.1/Fri Feb 4 06:32:39 2000// -/malloc.h/1.1/Fri Feb 4 06:32:39 2000// -/mm.h/1.2/Sat Feb 5 12:48:25 2000// -/param.h/1.1/Fri Feb 4 06:32:39 2000// -/personality.h/1.1/Fri Feb 4 06:32:39 2000// -/poll.h/1.2/Wed Jul 26 18:44:39 2000// -/proc_fs.h/1.1/Fri Feb 4 06:32:39 2000// -/sched.h/1.2/Sun Oct 14 23:33:38 2001// -/slab.h/1.1/Fri Feb 4 06:32:39 2000// -/socket.h/1.5/Sun Aug 3 19:07:26 2008// -/sockios.h/1.1/Fri Feb 4 06:32:39 2000// -/stat.h/1.1/Fri Feb 4 06:32:39 2000// -/string.h/1.1/Fri Feb 4 06:32:39 2000// -/termios.h/1.1/Fri Feb 4 06:32:39 2000// -/time.h/1.1/Fri Feb 4 06:32:39 2000// -/timer.h/1.1/Fri Feb 4 06:32:39 2000// -/timex.h/1.1/Fri Feb 4 06:32:39 2000// -/types.h/1.1/Fri Feb 4 06:32:39 2000// -/un.h/1.1/Fri Feb 4 06:32:39 2000// -/version.h/1.1/Fri Feb 4 06:32:39 2000// -/wait.h/1.1/Fri Feb 4 06:32:39 2000// -D diff --git a/pfinet.old/glue-include/linux/CVS/Repository b/pfinet.old/glue-include/linux/CVS/Repository deleted file mode 100644 index 067eddbb..00000000 --- a/pfinet.old/glue-include/linux/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/glue-include/linux diff --git a/pfinet.old/glue-include/linux/CVS/Root b/pfinet.old/glue-include/linux/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/glue-include/linux/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-inet/CVS/Entries b/pfinet.old/linux-inet/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/pfinet.old/linux-inet/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/pfinet.old/linux-inet/CVS/Repository b/pfinet.old/linux-inet/CVS/Repository deleted file mode 100644 index ea6c3d2e..00000000 --- a/pfinet.old/linux-inet/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-inet diff --git a/pfinet.old/linux-inet/CVS/Root b/pfinet.old/linux-inet/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-inet/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/CVS/Entries b/pfinet.old/linux-src/CVS/Entries deleted file mode 100644 index c486eace..00000000 --- a/pfinet.old/linux-src/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -D/arch//// -D/include//// -D/net//// diff --git a/pfinet.old/linux-src/CVS/Repository b/pfinet.old/linux-src/CVS/Repository deleted file mode 100644 index bbb1ddb4..00000000 --- a/pfinet.old/linux-src/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src diff --git a/pfinet.old/linux-src/CVS/Root b/pfinet.old/linux-src/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/CVS/Entries b/pfinet.old/linux-src/arch/CVS/Entries deleted file mode 100644 index f42dcfaa..00000000 --- a/pfinet.old/linux-src/arch/CVS/Entries +++ /dev/null @@ -1,8 +0,0 @@ -D/alpha//// -D/arm//// -D/i386//// -D/m68k//// -D/ppc//// -D/s390//// -D/sparc//// -D/sparc64//// diff --git a/pfinet.old/linux-src/arch/CVS/Repository b/pfinet.old/linux-src/arch/CVS/Repository deleted file mode 100644 index 60b74622..00000000 --- a/pfinet.old/linux-src/arch/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch diff --git a/pfinet.old/linux-src/arch/CVS/Root b/pfinet.old/linux-src/arch/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/alpha/CVS/Entries b/pfinet.old/linux-src/arch/alpha/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/alpha/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/alpha/CVS/Repository b/pfinet.old/linux-src/arch/alpha/CVS/Repository deleted file mode 100644 index cef2e087..00000000 --- a/pfinet.old/linux-src/arch/alpha/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/alpha diff --git a/pfinet.old/linux-src/arch/alpha/CVS/Root b/pfinet.old/linux-src/arch/alpha/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/alpha/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/alpha/lib/CVS/Entries b/pfinet.old/linux-src/arch/alpha/lib/CVS/Entries deleted file mode 100644 index 65920e32..00000000 --- a/pfinet.old/linux-src/arch/alpha/lib/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/checksum.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/csum_partial_copy.c/1.1/Wed May 29 08:34:41 2002// -D diff --git a/pfinet.old/linux-src/arch/alpha/lib/CVS/Repository b/pfinet.old/linux-src/arch/alpha/lib/CVS/Repository deleted file mode 100644 index ddde2872..00000000 --- a/pfinet.old/linux-src/arch/alpha/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/alpha/lib diff --git a/pfinet.old/linux-src/arch/alpha/lib/CVS/Root b/pfinet.old/linux-src/arch/alpha/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/alpha/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/arm/CVS/Entries b/pfinet.old/linux-src/arch/arm/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/arm/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/arm/CVS/Repository b/pfinet.old/linux-src/arch/arm/CVS/Repository deleted file mode 100644 index 05c0a38b..00000000 --- a/pfinet.old/linux-src/arch/arm/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/arm diff --git a/pfinet.old/linux-src/arch/arm/CVS/Root b/pfinet.old/linux-src/arch/arm/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/arm/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/arm/lib/CVS/Entries b/pfinet.old/linux-src/arch/arm/lib/CVS/Entries deleted file mode 100644 index 4ba4c2af..00000000 --- a/pfinet.old/linux-src/arch/arm/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.S/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/arm/lib/CVS/Repository b/pfinet.old/linux-src/arch/arm/lib/CVS/Repository deleted file mode 100644 index dede55d9..00000000 --- a/pfinet.old/linux-src/arch/arm/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/arm/lib diff --git a/pfinet.old/linux-src/arch/arm/lib/CVS/Root b/pfinet.old/linux-src/arch/arm/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/arm/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/i386/CVS/Entries b/pfinet.old/linux-src/arch/i386/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/i386/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/i386/CVS/Repository b/pfinet.old/linux-src/arch/i386/CVS/Repository deleted file mode 100644 index 904efffb..00000000 --- a/pfinet.old/linux-src/arch/i386/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/i386 diff --git a/pfinet.old/linux-src/arch/i386/CVS/Root b/pfinet.old/linux-src/arch/i386/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/i386/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/i386/lib/CVS/Entries b/pfinet.old/linux-src/arch/i386/lib/CVS/Entries deleted file mode 100644 index a636c5a5..00000000 --- a/pfinet.old/linux-src/arch/i386/lib/CVS/Entries +++ /dev/null @@ -1,3 +0,0 @@ -/checksum.S/1.2/Wed Feb 11 08:28:11 2004/-ko/ -/old-checksum.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/i386/lib/CVS/Repository b/pfinet.old/linux-src/arch/i386/lib/CVS/Repository deleted file mode 100644 index d6068e1e..00000000 --- a/pfinet.old/linux-src/arch/i386/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/i386/lib diff --git a/pfinet.old/linux-src/arch/i386/lib/CVS/Root b/pfinet.old/linux-src/arch/i386/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/i386/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/m68k/CVS/Entries b/pfinet.old/linux-src/arch/m68k/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/m68k/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/m68k/CVS/Repository b/pfinet.old/linux-src/arch/m68k/CVS/Repository deleted file mode 100644 index 55aa87e7..00000000 --- a/pfinet.old/linux-src/arch/m68k/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/m68k diff --git a/pfinet.old/linux-src/arch/m68k/CVS/Root b/pfinet.old/linux-src/arch/m68k/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/m68k/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/m68k/lib/CVS/Entries b/pfinet.old/linux-src/arch/m68k/lib/CVS/Entries deleted file mode 100644 index 5de2cdcd..00000000 --- a/pfinet.old/linux-src/arch/m68k/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/m68k/lib/CVS/Repository b/pfinet.old/linux-src/arch/m68k/lib/CVS/Repository deleted file mode 100644 index 3f7645af..00000000 --- a/pfinet.old/linux-src/arch/m68k/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/m68k/lib diff --git a/pfinet.old/linux-src/arch/m68k/lib/CVS/Root b/pfinet.old/linux-src/arch/m68k/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/m68k/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/ppc/CVS/Entries b/pfinet.old/linux-src/arch/ppc/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/ppc/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/ppc/CVS/Repository b/pfinet.old/linux-src/arch/ppc/CVS/Repository deleted file mode 100644 index 52349b3a..00000000 --- a/pfinet.old/linux-src/arch/ppc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/ppc diff --git a/pfinet.old/linux-src/arch/ppc/CVS/Root b/pfinet.old/linux-src/arch/ppc/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/ppc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/ppc/lib/CVS/Entries b/pfinet.old/linux-src/arch/ppc/lib/CVS/Entries deleted file mode 100644 index 4ba4c2af..00000000 --- a/pfinet.old/linux-src/arch/ppc/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.S/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/ppc/lib/CVS/Repository b/pfinet.old/linux-src/arch/ppc/lib/CVS/Repository deleted file mode 100644 index 6f399582..00000000 --- a/pfinet.old/linux-src/arch/ppc/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/ppc/lib diff --git a/pfinet.old/linux-src/arch/ppc/lib/CVS/Root b/pfinet.old/linux-src/arch/ppc/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/ppc/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/s390/CVS/Entries b/pfinet.old/linux-src/arch/s390/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/s390/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/s390/CVS/Repository b/pfinet.old/linux-src/arch/s390/CVS/Repository deleted file mode 100644 index 55a1f21a..00000000 --- a/pfinet.old/linux-src/arch/s390/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/s390 diff --git a/pfinet.old/linux-src/arch/s390/CVS/Root b/pfinet.old/linux-src/arch/s390/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/s390/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Entries b/pfinet.old/linux-src/arch/s390/lib/CVS/Entries deleted file mode 100644 index c82e1d67..00000000 --- a/pfinet.old/linux-src/arch/s390/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.c/1.1.1.1/Sat Feb 5 12:21:17 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Repository b/pfinet.old/linux-src/arch/s390/lib/CVS/Repository deleted file mode 100644 index 182a0dbc..00000000 --- a/pfinet.old/linux-src/arch/s390/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/s390/lib diff --git a/pfinet.old/linux-src/arch/s390/lib/CVS/Root b/pfinet.old/linux-src/arch/s390/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/s390/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/sparc/CVS/Entries b/pfinet.old/linux-src/arch/sparc/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/sparc/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/sparc/CVS/Repository b/pfinet.old/linux-src/arch/sparc/CVS/Repository deleted file mode 100644 index 3024bcc5..00000000 --- a/pfinet.old/linux-src/arch/sparc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/sparc diff --git a/pfinet.old/linux-src/arch/sparc/CVS/Root b/pfinet.old/linux-src/arch/sparc/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/sparc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/sparc/lib/CVS/Entries b/pfinet.old/linux-src/arch/sparc/lib/CVS/Entries deleted file mode 100644 index 4ba4c2af..00000000 --- a/pfinet.old/linux-src/arch/sparc/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.S/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/sparc/lib/CVS/Repository b/pfinet.old/linux-src/arch/sparc/lib/CVS/Repository deleted file mode 100644 index 3651d213..00000000 --- a/pfinet.old/linux-src/arch/sparc/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/sparc/lib diff --git a/pfinet.old/linux-src/arch/sparc/lib/CVS/Root b/pfinet.old/linux-src/arch/sparc/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/sparc/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/sparc64/CVS/Entries b/pfinet.old/linux-src/arch/sparc64/CVS/Entries deleted file mode 100644 index 7b214dc9..00000000 --- a/pfinet.old/linux-src/arch/sparc64/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D/lib//// diff --git a/pfinet.old/linux-src/arch/sparc64/CVS/Repository b/pfinet.old/linux-src/arch/sparc64/CVS/Repository deleted file mode 100644 index 577dbe19..00000000 --- a/pfinet.old/linux-src/arch/sparc64/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/sparc64 diff --git a/pfinet.old/linux-src/arch/sparc64/CVS/Root b/pfinet.old/linux-src/arch/sparc64/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/sparc64/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Entries b/pfinet.old/linux-src/arch/sparc64/lib/CVS/Entries deleted file mode 100644 index 4ba4c2af..00000000 --- a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.S/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Repository b/pfinet.old/linux-src/arch/sparc64/lib/CVS/Repository deleted file mode 100644 index bafd2f8a..00000000 --- a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/arch/sparc64/lib diff --git a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Root b/pfinet.old/linux-src/arch/sparc64/lib/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/arch/sparc64/lib/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/CVS/Entries b/pfinet.old/linux-src/include/CVS/Entries deleted file mode 100644 index 61c80485..00000000 --- a/pfinet.old/linux-src/include/CVS/Entries +++ /dev/null @@ -1,11 +0,0 @@ -D/asm-alpha//// -D/asm-arm//// -D/asm-i386//// -D/asm-m68k//// -D/asm-mips//// -D/asm-ppc//// -D/asm-s390//// -D/asm-sparc//// -D/asm-sparc64//// -D/linux//// -D/net//// diff --git a/pfinet.old/linux-src/include/CVS/Repository b/pfinet.old/linux-src/include/CVS/Repository deleted file mode 100644 index 4c125c1b..00000000 --- a/pfinet.old/linux-src/include/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include diff --git a/pfinet.old/linux-src/include/CVS/Root b/pfinet.old/linux-src/include/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-alpha/CVS/Entries b/pfinet.old/linux-src/include/asm-alpha/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-alpha/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-alpha/CVS/Repository b/pfinet.old/linux-src/include/asm-alpha/CVS/Repository deleted file mode 100644 index 2bfe1b4b..00000000 --- a/pfinet.old/linux-src/include/asm-alpha/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-alpha diff --git a/pfinet.old/linux-src/include/asm-alpha/CVS/Root b/pfinet.old/linux-src/include/asm-alpha/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-alpha/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-arm/CVS/Entries b/pfinet.old/linux-src/include/asm-arm/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-arm/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-arm/CVS/Repository b/pfinet.old/linux-src/include/asm-arm/CVS/Repository deleted file mode 100644 index 590d9ac9..00000000 --- a/pfinet.old/linux-src/include/asm-arm/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-arm diff --git a/pfinet.old/linux-src/include/asm-arm/CVS/Root b/pfinet.old/linux-src/include/asm-arm/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-arm/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-i386/CVS/Entries b/pfinet.old/linux-src/include/asm-i386/CVS/Entries deleted file mode 100644 index 70f97df9..00000000 --- a/pfinet.old/linux-src/include/asm-i386/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.2/Wed May 7 13:41:44 2003/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-i386/CVS/Repository b/pfinet.old/linux-src/include/asm-i386/CVS/Repository deleted file mode 100644 index 4618c454..00000000 --- a/pfinet.old/linux-src/include/asm-i386/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-i386 diff --git a/pfinet.old/linux-src/include/asm-i386/CVS/Root b/pfinet.old/linux-src/include/asm-i386/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-i386/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-m68k/CVS/Entries b/pfinet.old/linux-src/include/asm-m68k/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-m68k/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-m68k/CVS/Repository b/pfinet.old/linux-src/include/asm-m68k/CVS/Repository deleted file mode 100644 index 83256fb2..00000000 --- a/pfinet.old/linux-src/include/asm-m68k/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-m68k diff --git a/pfinet.old/linux-src/include/asm-m68k/CVS/Root b/pfinet.old/linux-src/include/asm-m68k/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-m68k/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-mips/CVS/Entries b/pfinet.old/linux-src/include/asm-mips/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-mips/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-mips/CVS/Repository b/pfinet.old/linux-src/include/asm-mips/CVS/Repository deleted file mode 100644 index 8678d9b0..00000000 --- a/pfinet.old/linux-src/include/asm-mips/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-mips diff --git a/pfinet.old/linux-src/include/asm-mips/CVS/Root b/pfinet.old/linux-src/include/asm-mips/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-mips/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-ppc/CVS/Entries b/pfinet.old/linux-src/include/asm-ppc/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-ppc/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-ppc/CVS/Repository b/pfinet.old/linux-src/include/asm-ppc/CVS/Repository deleted file mode 100644 index b3a84c44..00000000 --- a/pfinet.old/linux-src/include/asm-ppc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-ppc diff --git a/pfinet.old/linux-src/include/asm-ppc/CVS/Root b/pfinet.old/linux-src/include/asm-ppc/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-ppc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-s390/CVS/Entries b/pfinet.old/linux-src/include/asm-s390/CVS/Entries deleted file mode 100644 index 3759fde6..00000000 --- a/pfinet.old/linux-src/include/asm-s390/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-s390/CVS/Repository b/pfinet.old/linux-src/include/asm-s390/CVS/Repository deleted file mode 100644 index 51b39344..00000000 --- a/pfinet.old/linux-src/include/asm-s390/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-s390 diff --git a/pfinet.old/linux-src/include/asm-s390/CVS/Root b/pfinet.old/linux-src/include/asm-s390/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-s390/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-sparc/CVS/Entries b/pfinet.old/linux-src/include/asm-sparc/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-sparc/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-sparc/CVS/Repository b/pfinet.old/linux-src/include/asm-sparc/CVS/Repository deleted file mode 100644 index 0e943a7e..00000000 --- a/pfinet.old/linux-src/include/asm-sparc/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-sparc diff --git a/pfinet.old/linux-src/include/asm-sparc/CVS/Root b/pfinet.old/linux-src/include/asm-sparc/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-sparc/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/asm-sparc64/CVS/Entries b/pfinet.old/linux-src/include/asm-sparc64/CVS/Entries deleted file mode 100644 index 40b50f0b..00000000 --- a/pfinet.old/linux-src/include/asm-sparc64/CVS/Entries +++ /dev/null @@ -1,2 +0,0 @@ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/asm-sparc64/CVS/Repository b/pfinet.old/linux-src/include/asm-sparc64/CVS/Repository deleted file mode 100644 index 3cdb4e33..00000000 --- a/pfinet.old/linux-src/include/asm-sparc64/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/asm-sparc64 diff --git a/pfinet.old/linux-src/include/asm-sparc64/CVS/Root b/pfinet.old/linux-src/include/asm-sparc64/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/asm-sparc64/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/linux/CVS/Entries b/pfinet.old/linux-src/include/linux/CVS/Entries deleted file mode 100644 index 9ae83cb0..00000000 --- a/pfinet.old/linux-src/include/linux/CVS/Entries +++ /dev/null @@ -1,370 +0,0 @@ -/a.out.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/acct.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/adfs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/adfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/adfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/affs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/affs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/affs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/affs_hardblocks.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/amifd.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/amifdreg.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/amigaffs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/apm_bios.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/arcdevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/atalk.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/atari_rootsec.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/auto_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/awe_voice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ax25.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/b1lli.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/b1pcmcia.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/baycom.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/binfmts.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/bios32.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/bitops.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/blk.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/blkdev.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/bpqether.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/busmouse.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/capability.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/capi.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/cd1400.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/cdk.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/cdrom.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_cache.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_linux.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_opstats.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_proc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coda_psdev.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/coff.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/comstats.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/concap.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/config.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/console.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/console_struct.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/consolemap.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ctype.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/cyclades.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/dcache.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/delay.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/devpts_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/digi1.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/digiFep1.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/digiPCI.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dio.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dirent.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dlists.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dmascc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dtlk.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/efs_dir.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/efs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/efs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/efs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/efs_vh.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/elf.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/elfcore.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/epca.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/epcaconfig.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/errno.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/errqueue.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/etherdevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ext2_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ext2_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ext2_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fat_cvf.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fb.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/fcdevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fcntl.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fd.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fddidevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fdreg.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/file.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/filter.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/firewall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fs.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/ftape-header-segment.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ftape-vendors.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ftape.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/genhd.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/ghash.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hayesesp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hdlcdrv.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hdreg.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hfmodem.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hfs_fs.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/hfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hfs_sysdep.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hippidevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hpfs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hpfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/hpfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/i2c.h/1.1.1.3/Sat Feb 5 12:21:16 2000/-ko/ -/icmp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/icmpv6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/if_arcnet.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_arp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_cablemodem.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_ec.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_eql.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_ether.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_fc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_fddi.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_frad.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_hippi.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_ltalk.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_packet.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_plip.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_ppp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_pppvar.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_shaper.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_slip.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_strip.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_tr.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_tunnel.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/igmp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/in.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/in6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/in_route.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/in_systm.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/inet.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/inetdevice.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/init.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/interrupt.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ioctl.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ioport.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/ip_fw.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipsec.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipv6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipv6_route.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipx.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/irda.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/isdn.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/isdn_divertif.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/isdn_ppp.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/isdnif.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/isicom.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/iso_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/iso_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/iso_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/istallion.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ixjuser.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -/joystick.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/kbd_diacr.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kbd_kern.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kbd_ll.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kd.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kdev_t.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kernel.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kernel_stat.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kernelcapi.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/keyboard.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/kmod.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lapb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/limits.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/linkage.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/linux_logo.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/list.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lists.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/locks.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/loop.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lp.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/lp_intern.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lp_m68k.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lp_mfc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/major.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/malloc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mc146818rtc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mca.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/md.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/minix_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/minix_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/minix_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/miscdevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mm.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/mman.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/modsetver.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/module.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mount.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mpp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/mroute.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/msdos_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/msdos_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/msdos_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/msg.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/mtio.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nbd.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ncp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ncp_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ncp_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ncp_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ncp_mount.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/net.h/1.4/Wed May 29 08:34:38 2002/-ko/ -/netbeui.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/netdevice.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/netlink.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/netrom.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs3.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfs_mount.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nfsiod.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nls.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/notifier.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ntfs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ntfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ntfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nubus.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nvram.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/openpic.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/pagemap.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/param.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/parport.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/parport_pc.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/pc_keyb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pci.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/personality.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pg.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/phonedev.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -/pipe_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pkt_cls.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pkt_sched.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/poll.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/posix_types.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/ppp-comp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ppp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ppp_defs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/prctl.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/proc_fs.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/ps2esdi.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ptrace.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/qic117.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/qnx4_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/qnx4_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/qnx4_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/qnxtypes.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/quota.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/quotaops.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/raid0.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/raid1.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/raid5.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/random.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/reboot.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/resource.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rocket.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/romfs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/romfs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/romfs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rose.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/route.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rpcsock.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rtnetlink.h/1.3/Sat Feb 5 12:24:30 2000/-ko/ -/sc26198.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/scc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sched.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/sdla.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sdla_chdlc.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -/sdla_fr.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/sdla_ppp.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/sdla_x25.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sdladrv.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/sdlapci.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -/sdlasfm.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/securebits.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/selection.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sem.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/serial.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/serial167.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/serialP.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/serial_reg.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/shm.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/signal.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/skbuff.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/slab.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smb_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smb_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smb_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smb_mount.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smbno.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/smp_lock.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/socket.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/sockios.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sound.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/soundcard.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/soundmodem.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/stallion.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/stat.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/stddef.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/string.h/1.1.1.2/Sat Feb 5 12:13:19 2000/-ko/ -/swap.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/swapctl.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/synclink.h/1.1.1.2/Sat Feb 5 12:13:21 2000/-ko/ -/sys.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysctl.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/sysrq.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysv_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysv_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysv_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tasks.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tcp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/telephony.h/1.1.1.1/Sat Feb 5 12:21:16 2000/-ko/ -/termios.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/time.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/timer.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/times.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/timex.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tpqic02.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tqueue.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/trdevice.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tty.h/1.1.1.3/Sat Feb 5 12:21:15 2000/-ko/ -/tty_driver.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tty_flip.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tty_ldisc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/types.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/udp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ufs_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ufs_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ufs_fs_sb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/uio.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ultrasound.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/umsdos_fs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/umsdos_fs.p/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/umsdos_fs_i.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/un.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/unistd.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/user.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/utime.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/uts.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/utsname.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/vfs.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/video_decoder.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/video_encoder.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/videodev.h/1.1.1.2/Sat Feb 5 12:13:20 2000/-ko/ -/videotext.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/vmalloc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/vt.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/vt_buffer.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/vt_kern.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/wait.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/wanpipe.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/wanrouter.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/watchdog.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/wavefront.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/wireless.h/1.1.1.2/Sat Feb 5 12:21:15 2000/-ko/ -/wrapper.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/x25.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/yam.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/zftape.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/zorro.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/linux/CVS/Repository b/pfinet.old/linux-src/include/linux/CVS/Repository deleted file mode 100644 index ad6253a9..00000000 --- a/pfinet.old/linux-src/include/linux/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/linux diff --git a/pfinet.old/linux-src/include/linux/CVS/Root b/pfinet.old/linux-src/include/linux/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/linux/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/include/net/CVS/Entries b/pfinet.old/linux-src/include/net/CVS/Entries deleted file mode 100644 index 469f11d9..00000000 --- a/pfinet.old/linux-src/include/net/CVS/Entries +++ /dev/null @@ -1,65 +0,0 @@ -/addrconf.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/af_unix.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/arp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/atalkcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ax25.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ax25call.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/br.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/checksum.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/datalink.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dst.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/flow.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/icmp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/if_inet6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/inet_common.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip.h/1.1.1.2/Sat Feb 5 12:13:21 2000/-ko/ -/ip6_fib.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip6_fw.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip6_route.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_fib.h/1.2/Thu Jun 13 20:36:59 2002/-ko/ -/ip_masq.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_mod.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipconfig.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipip.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipv6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipx.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipxcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lapb.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/lapbcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/llc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/llc_frame.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/llc_name.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/llc_state.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/llccall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ndisc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/neighbour.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/netbeuicall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/netrom.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/nrcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/p8022.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/p8022call.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pkt_cls.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/pkt_sched.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/profile.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/protocol.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/psnap.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/psnapcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rarp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/raw.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rawv6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rose.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rosecall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/route.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/scm.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/slhc.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/slhc_vj.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/snmp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sock.h/1.2/Wed May 7 13:41:44 2003/-ko/ -/spx.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/spxcall.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tcp.h/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/transp_v6.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/udp.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/x25.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/x25call.h/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/include/net/CVS/Repository b/pfinet.old/linux-src/include/net/CVS/Repository deleted file mode 100644 index 5d7323b1..00000000 --- a/pfinet.old/linux-src/include/net/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/include/net diff --git a/pfinet.old/linux-src/include/net/CVS/Root b/pfinet.old/linux-src/include/net/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/include/net/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/net/CVS/Entries b/pfinet.old/linux-src/net/CVS/Entries deleted file mode 100644 index 6b965611..00000000 --- a/pfinet.old/linux-src/net/CVS/Entries +++ /dev/null @@ -1,4 +0,0 @@ -D/core//// -D/ethernet//// -D/ipv4//// -D/ipv6//// diff --git a/pfinet.old/linux-src/net/CVS/Repository b/pfinet.old/linux-src/net/CVS/Repository deleted file mode 100644 index a53c10ca..00000000 --- a/pfinet.old/linux-src/net/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/net diff --git a/pfinet.old/linux-src/net/CVS/Root b/pfinet.old/linux-src/net/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/net/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/net/core/CVS/Entries b/pfinet.old/linux-src/net/core/CVS/Entries deleted file mode 100644 index 352c3972..00000000 --- a/pfinet.old/linux-src/net/core/CVS/Entries +++ /dev/null @@ -1,17 +0,0 @@ -/Makefile/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/datagram.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dev.c/1.6/Thu Jan 11 22:28:29 2001/-ko/ -/dev_mcast.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/dst.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/filter.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/firewall.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/iovec.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/neighbour.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/profile.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rtnetlink.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/scm.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/skbuff.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sock.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysctl_net_core.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/utils.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/net/core/CVS/Repository b/pfinet.old/linux-src/net/core/CVS/Repository deleted file mode 100644 index c378aeea..00000000 --- a/pfinet.old/linux-src/net/core/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/net/core diff --git a/pfinet.old/linux-src/net/core/CVS/Root b/pfinet.old/linux-src/net/core/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/net/core/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/net/ethernet/CVS/Entries b/pfinet.old/linux-src/net/ethernet/CVS/Entries deleted file mode 100644 index e0bcf790..00000000 --- a/pfinet.old/linux-src/net/ethernet/CVS/Entries +++ /dev/null @@ -1,5 +0,0 @@ -/Makefile/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/eth.c/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/pe2.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/sysctl_net_ether.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/net/ethernet/CVS/Repository b/pfinet.old/linux-src/net/ethernet/CVS/Repository deleted file mode 100644 index a2e6722d..00000000 --- a/pfinet.old/linux-src/net/ethernet/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/net/ethernet diff --git a/pfinet.old/linux-src/net/ethernet/CVS/Root b/pfinet.old/linux-src/net/ethernet/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/net/ethernet/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/net/ipv4/CVS/Entries b/pfinet.old/linux-src/net/ipv4/CVS/Entries deleted file mode 100644 index 23aa5323..00000000 --- a/pfinet.old/linux-src/net/ipv4/CVS/Entries +++ /dev/null @@ -1,52 +0,0 @@ -/Config.in/1.1.1.2/Sat Feb 5 12:13:21 2000/-ko/ -/Makefile/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/af_inet.c/1.2/Fri Feb 4 06:32:39 2000/-ko/ -/arp.c/1.5/Fri Sep 10 19:29:20 2004/-ko/ -/devinet.c/1.8/Wed Jul 18 17:37:13 2001/-ko/ -/fib_frontend.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fib_hash.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fib_rules.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/fib_semantics.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/icmp.c/1.1.1.3/Sat Feb 5 12:21:16 2000/-ko/ -/igmp.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_forward.c/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/ip_fragment.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_fw.c/1.1.1.3/Sat Feb 5 12:21:16 2000/-ko/ -/ip_gre.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_input.c/1.1.1.3/Sat Feb 5 12:21:16 2000/-ko/ -/ip_masq.c/1.1.1.3/Sat Feb 5 12:21:16 2000/-ko/ -/ip_masq_app.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_autofw.c/1.1.1.2/Sat Feb 5 12:13:22 2000/-ko/ -/ip_masq_cuseeme.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_ftp.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_irc.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_mfw.c/1.1.1.2/Sat Feb 5 12:13:22 2000/-ko/ -/ip_masq_mod.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_portfw.c/1.1.1.2/Sat Feb 5 12:13:22 2000/-ko/ -/ip_masq_quake.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_raudio.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_masq_user.c/1.1.1.3/Sat Feb 5 12:21:17 2000/-ko/ -/ip_masq_vdolive.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_nat_dumb.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_options.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ip_output.c/1.1.1.2/Sat Feb 5 12:13:21 2000/-ko/ -/ip_sockglue.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipconfig.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipip.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/ipmr.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/proc.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/protocol.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/rarp.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/raw.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/route.c/1.2/Fri Sep 10 19:29:20 2004/-ko/ -/syncookies.c/1.1.1.2/Sat Feb 5 12:21:17 2000/-ko/ -/sysctl_net_ipv4.c/1.1.1.2/Sat Feb 5 12:13:21 2000/-ko/ -/tcp.c/1.3/Sat Feb 5 12:24:31 2000/-ko/ -/tcp_input.c/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/tcp_ipv4.c/1.3/Tue Mar 14 23:25:14 2006/-ko/ -/tcp_output.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/tcp_timer.c/1.1.1.2/Sat Feb 5 12:21:16 2000/-ko/ -/timer.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -/udp.c/1.3/Fri Sep 10 19:29:20 2004/-ko/ -/utils.c/1.1.1.1/Fri Feb 4 03:21:18 2000/-ko/ -D diff --git a/pfinet.old/linux-src/net/ipv4/CVS/Repository b/pfinet.old/linux-src/net/ipv4/CVS/Repository deleted file mode 100644 index e70dd7fd..00000000 --- a/pfinet.old/linux-src/net/ipv4/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/net/ipv4 diff --git a/pfinet.old/linux-src/net/ipv4/CVS/Root b/pfinet.old/linux-src/net/ipv4/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/net/ipv4/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux-src/net/ipv6/CVS/Entries b/pfinet.old/linux-src/net/ipv6/CVS/Entries deleted file mode 100644 index 9d817a2c..00000000 --- a/pfinet.old/linux-src/net/ipv6/CVS/Entries +++ /dev/null @@ -1,19 +0,0 @@ -/addrconf.c/1.3/Sun Oct 14 02:26:10 2007// -/af_inet6.c/1.3/Sat Oct 13 01:43:00 2007// -/datagram_ipv6.c/1.2/Sat Oct 13 01:43:00 2007// -/exthdrs.c/1.1/Mon Oct 8 21:12:30 2007// -/icmpv6.c/1.2/Mon Oct 8 21:59:10 2007// -/ip6_fib.c/1.2/Mon Oct 8 21:59:10 2007// -/ip6_flowlabel.c/1.2/Mon Oct 8 21:59:10 2007// -/ip6_input.c/1.1/Mon Oct 8 21:12:30 2007// -/ip6_output.c/1.1/Mon Oct 8 21:12:30 2007// -/ipv6_sockglue.c/1.1/Mon Oct 8 21:12:30 2007// -/mcast.c/1.2/Mon Oct 8 21:59:10 2007// -/ndisc.c/1.2/Mon Oct 8 21:59:10 2007// -/protocol_ipv6.c/1.1/Mon Oct 8 21:12:31 2007// -/raw_ipv6.c/1.2/Sat Oct 13 01:43:00 2007// -/reassembly.c/1.1/Mon Oct 8 21:12:31 2007// -/route_ipv6.c/1.2/Mon Oct 8 21:59:10 2007// -/tcp_ipv6.c/1.3/Sat Oct 13 01:43:00 2007// -/udp_ipv6.c/1.3/Sat Oct 13 01:43:00 2007// -D diff --git a/pfinet.old/linux-src/net/ipv6/CVS/Repository b/pfinet.old/linux-src/net/ipv6/CVS/Repository deleted file mode 100644 index 798a9a28..00000000 --- a/pfinet.old/linux-src/net/ipv6/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux-src/net/ipv6 diff --git a/pfinet.old/linux-src/net/ipv6/CVS/Root b/pfinet.old/linux-src/net/ipv6/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux-src/net/ipv6/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/pfinet.old/linux/CVS/Entries b/pfinet.old/linux/CVS/Entries deleted file mode 100644 index 17848105..00000000 --- a/pfinet.old/linux/CVS/Entries +++ /dev/null @@ -1 +0,0 @@ -D diff --git a/pfinet.old/linux/CVS/Repository b/pfinet.old/linux/CVS/Repository deleted file mode 100644 index 6f4910e1..00000000 --- a/pfinet.old/linux/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/pfinet/linux diff --git a/pfinet.old/linux/CVS/Root b/pfinet.old/linux/CVS/Root deleted file mode 100644 index 55403097..00000000 --- a/pfinet.old/linux/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd diff --git a/proc_proxy/CVS/Entries b/proc_proxy/CVS/Entries deleted file mode 100644 index a020247c..00000000 --- a/proc_proxy/CVS/Entries +++ /dev/null @@ -1,7 +0,0 @@ -/Makefile/1.1.2.1/Fri Aug 29 00:16:41 2008//Tzhengda-soc2008-virt-branch -/proc_proxy.c/1.1.2.2/Fri Aug 29 00:18:53 2008//Tzhengda-soc2008-virt-branch -/proc_proxy.h/1.1.2.2/Thu Aug 28 23:45:11 2008//Tzhengda-soc2008-virt-branch -/process_ops.c/1.1.2.3/Thu Aug 28 23:45:41 2008//Tzhengda-soc2008-virt-branch -/ChangeLog/1.1.2.4/Fri Aug 29 15:16:27 2008//Tzhengda-soc2008-virt-branch -/README/1.1.2.2/Fri Aug 29 15:13:07 2008//Tzhengda-soc2008-virt-branch -D diff --git a/proc_proxy/CVS/Repository b/proc_proxy/CVS/Repository deleted file mode 100644 index 14ae5625..00000000 --- a/proc_proxy/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/proc_proxy diff --git a/proc_proxy/CVS/Root b/proc_proxy/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/proc_proxy/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/proc_proxy/CVS/Tag b/proc_proxy/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/proc_proxy/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/serverboot/CVS/Entries b/serverboot/CVS/Entries deleted file mode 100644 index b0991f83..00000000 --- a/serverboot/CVS/Entries +++ /dev/null @@ -1,36 +0,0 @@ -/ChangeLog/1.60/Wed Jun 6 15:32:33 2007//Tzhengda-soc2008-virt-branch -/Makefile/1.13/Thu May 23 21:44:51 2002//Tzhengda-soc2008-virt-branch -/assert.h/1.2/Sun Apr 1 01:41:05 2001//Tzhengda-soc2008-virt-branch -/bootstrap.c/1.23/Sun Jun 2 21:46:22 2002//Tzhengda-soc2008-virt-branch -/bunzip2.c/1.1/Fri Apr 30 11:04:07 1999//Tzhengda-soc2008-virt-branch -/def_pager_setup.c/1.5/Thu Jan 11 22:32:35 2001//Tzhengda-soc2008-virt-branch -/default_pager.c/1.28/Wed Jun 6 15:32:33 2007//Tzhengda-soc2008-virt-branch -/defs.h/1.1/Thu Apr 3 23:26:38 1997//Tzhengda-soc2008-virt-branch -/dir.h/1.1/Thu Apr 3 23:26:43 1997//Tzhengda-soc2008-virt-branch -/disk_inode.h/1.2/Wed Jun 11 15:35:33 1997//Tzhengda-soc2008-virt-branch -/disk_inode_ffs.h/1.2/Sat Jul 21 05:19:15 2001//Tzhengda-soc2008-virt-branch -/elf-load.c/1.5/Wed Jul 3 19:35:03 2002//Tzhengda-soc2008-virt-branch -/exec.c/1.3/Sun Jun 23 04:29:14 2002//Tzhengda-soc2008-virt-branch -/ext2_file_io.c/1.5/Sat Jul 21 05:19:15 2001//Tzhengda-soc2008-virt-branch -/ffs_compat.c/1.2/Mon Jan 3 20:25:04 2000//Tzhengda-soc2008-virt-branch -/ffs_compat.h/1.1/Thu Apr 3 23:27:17 1997//Tzhengda-soc2008-virt-branch -/ffs_file_io.c/1.4/Sat Jul 21 05:19:15 2001//Tzhengda-soc2008-virt-branch -/file_io.c/1.2/Tue Jul 20 20:02:30 1999//Tzhengda-soc2008-virt-branch -/file_io.h/1.3/Mon Jan 3 20:25:04 2000//Tzhengda-soc2008-virt-branch -/fs.h/1.1/Thu Apr 3 23:27:32 1997//Tzhengda-soc2008-virt-branch -/gets.c/1.1/Thu Apr 3 23:27:36 1997//Tzhengda-soc2008-virt-branch -/gunzip.c/1.1/Fri Apr 30 11:04:07 1999//Tzhengda-soc2008-virt-branch -/kalloc.c/1.2/Tue Mar 14 23:34:24 2006//Tzhengda-soc2008-virt-branch -/load.c/1.11/Wed May 7 13:42:14 2003//Tzhengda-soc2008-virt-branch -/mach-exec.h/1.1/Fri Apr 4 01:13:44 1997//Tzhengda-soc2008-virt-branch -/minix_ffs_compat.c/1.1/Thu Apr 3 23:27:48 1997//Tzhengda-soc2008-virt-branch -/minix_ffs_compat.h/1.1/Thu Apr 3 23:27:51 1997//Tzhengda-soc2008-virt-branch -/minix_file_io.c/1.2/Tue Jul 20 20:02:25 1999//Tzhengda-soc2008-virt-branch -/minix_fs.h/1.1/Thu Apr 3 23:28:01 1997//Tzhengda-soc2008-virt-branch -/minix_super.h/1.1/Thu Apr 3 23:28:05 1997//Tzhengda-soc2008-virt-branch -/panic.c/1.4/Sat Jul 21 05:17:53 2001//Tzhengda-soc2008-virt-branch -/queue.h/1.2/Sun Apr 1 01:41:05 2001//Tzhengda-soc2008-virt-branch -/strfcns.c/1.4/Wed May 7 13:42:14 2003//Tzhengda-soc2008-virt-branch -/wiring.c/1.4/Thu Nov 18 06:22:40 1999//Tzhengda-soc2008-virt-branch -/wiring.h/1.1/Thu Apr 3 23:28:32 1997//Tzhengda-soc2008-virt-branch -D diff --git a/serverboot/CVS/Repository b/serverboot/CVS/Repository deleted file mode 100644 index dce73a85..00000000 --- a/serverboot/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/serverboot diff --git a/serverboot/CVS/Root b/serverboot/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/serverboot/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/serverboot/CVS/Tag b/serverboot/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/serverboot/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/ufs-fsck/CVS/Entries b/ufs-fsck/CVS/Entries deleted file mode 100644 index e3d6e52e..00000000 --- a/ufs-fsck/CVS/Entries +++ /dev/null @@ -1,15 +0,0 @@ -/ChangeLog/1.16/Tue Jul 29 16:25:28 2003//Tzhengda-soc2008-virt-branch -/Makefile/1.14/Tue Sep 17 16:43:43 1996//Tzhengda-soc2008-virt-branch -/dir.c/1.16/Tue Jun 11 21:41:14 2002//Tzhengda-soc2008-virt-branch -/fsck.h/1.15/Tue Jul 29 16:25:28 2003//Tzhengda-soc2008-virt-branch -/inode.c/1.8/Tue Jul 23 23:33:38 1996//Tzhengda-soc2008-virt-branch -/main.c/1.15/Thu Feb 20 04:17:39 1997//Tzhengda-soc2008-virt-branch -/pass1.c/1.15/Tue Jun 11 21:41:14 2002//Tzhengda-soc2008-virt-branch -/pass1b.c/1.7/Tue Jun 11 21:43:05 2002//Tzhengda-soc2008-virt-branch -/pass2.c/1.24/Tue Jun 11 21:41:14 2002//Tzhengda-soc2008-virt-branch -/pass3.c/1.5/Thu May 2 01:03:59 1996//Tzhengda-soc2008-virt-branch -/pass4.c/1.9/Mon Jul 1 16:55:43 1996//Tzhengda-soc2008-virt-branch -/pass5.c/1.17/Sun Sep 30 23:14:26 2001//Tzhengda-soc2008-virt-branch -/setup.c/1.11/Tue Jun 11 21:41:20 2002//Tzhengda-soc2008-virt-branch -/utilities.c/1.19/Tue Jun 11 21:41:14 2002//Tzhengda-soc2008-virt-branch -D diff --git a/ufs-fsck/CVS/Repository b/ufs-fsck/CVS/Repository deleted file mode 100644 index fc364534..00000000 --- a/ufs-fsck/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/ufs-fsck diff --git a/ufs-fsck/CVS/Root b/ufs-fsck/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/ufs-fsck/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/ufs-fsck/CVS/Tag b/ufs-fsck/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/ufs-fsck/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/ufs-utils/CVS/Entries b/ufs-utils/CVS/Entries deleted file mode 100644 index ba6a1f2d..00000000 --- a/ufs-utils/CVS/Entries +++ /dev/null @@ -1,8 +0,0 @@ -/ChangeLog/1.14/Tue Mar 14 23:27:50 2006//Tzhengda-soc2008-virt-branch -/Makefile/1.9/Fri May 10 21:05:00 1996//Tzhengda-soc2008-virt-branch -/clri.c/1.4/Fri Jul 7 23:20:18 1995//Tzhengda-soc2008-virt-branch -/dlabel.c/1.6/Fri Dec 7 00:35:24 2001//Tzhengda-soc2008-virt-branch -/mkfs.c/1.22/Tue Mar 14 23:27:50 2006//Tzhengda-soc2008-virt-branch -/newfs.c/1.2/Fri Sep 9 14:11:41 1994//Tzhengda-soc2008-virt-branch -/stati.c/1.5/Mon Feb 26 04:16:18 2001//Tzhengda-soc2008-virt-branch -D diff --git a/ufs-utils/CVS/Repository b/ufs-utils/CVS/Repository deleted file mode 100644 index 237c4d6a..00000000 --- a/ufs-utils/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/ufs-utils diff --git a/ufs-utils/CVS/Root b/ufs-utils/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/ufs-utils/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/ufs-utils/CVS/Tag b/ufs-utils/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/ufs-utils/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/ufs/CVS/Entries b/ufs/CVS/Entries deleted file mode 100644 index f8342b30..00000000 --- a/ufs/CVS/Entries +++ /dev/null @@ -1,19 +0,0 @@ -/ChangeLog/1.50/Tue Nov 13 23:32:45 2007//Tzhengda-soc2008-virt-branch -/Makefile/1.53/Thu Mar 14 21:11:37 2002//Tzhengda-soc2008-virt-branch -/alloc.c/1.24/Tue Jun 11 21:41:03 2002//Tzhengda-soc2008-virt-branch -/bmap.c/1.8/Tue Apr 23 18:09:23 1996//Tzhengda-soc2008-virt-branch -/consts.c/1.9/Wed Oct 13 19:37:29 1999//Tzhengda-soc2008-virt-branch -/dinode.h/1.4/Fri Jul 15 17:36:29 1994//Tzhengda-soc2008-virt-branch -/dir.c/1.47/Fri Oct 5 10:00:44 2007//Tzhengda-soc2008-virt-branch -/dir.h/1.8/Tue Mar 14 23:26:37 2006//Tzhengda-soc2008-virt-branch -/fs.h/1.5/Fri Jul 15 17:45:34 1994//Tzhengda-soc2008-virt-branch -/hyper.c/1.36/Mon Jan 8 22:33:11 2001//Tzhengda-soc2008-virt-branch -/inode.c/1.63/Tue Nov 13 23:32:45 2007//Tzhengda-soc2008-virt-branch -/main.c/1.50/Wed May 8 09:59:52 2002//Tzhengda-soc2008-virt-branch -/pager.c/1.48/Mon Sep 13 06:35:07 1999//Tzhengda-soc2008-virt-branch -/pokeloc.c/1.6/Mon Sep 23 17:25:16 1996//Tzhengda-soc2008-virt-branch -/sizes.c/1.40/Mon Sep 13 06:35:11 1999//Tzhengda-soc2008-virt-branch -/subr.c/1.8/Tue Sep 27 01:30:00 1994//Tzhengda-soc2008-virt-branch -/tables.c/1.4/Thu Sep 1 15:39:31 1994//Tzhengda-soc2008-virt-branch -/ufs.h/1.37/Mon Oct 1 16:37:27 2001//Tzhengda-soc2008-virt-branch -D diff --git a/ufs/CVS/Repository b/ufs/CVS/Repository deleted file mode 100644 index 20bcdd2f..00000000 --- a/ufs/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -hurd/ufs diff --git a/ufs/CVS/Root b/ufs/CVS/Root deleted file mode 100644 index a10aa66d..00000000 --- a/ufs/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:ext:zhengda@cvs.savannah.gnu.org:/sources/hurd diff --git a/ufs/CVS/Tag b/ufs/CVS/Tag deleted file mode 100644 index 7e454c6d..00000000 --- a/ufs/CVS/Tag +++ /dev/null @@ -1 +0,0 @@ -Tzhengda-soc2008-virt-branch diff --git a/unionfs/CVS/Entries b/unionfs/CVS/Entries deleted file mode 100644 index 6a8e3264..00000000 --- a/unionfs/CVS/Entries +++ /dev/null @@ -1,33 +0,0 @@ -/AUTHORS/1.2/Mon May 30 12:53:20 2005// -/BUGS/1.2/Sun Dec 8 14:23:47 2002// -/CAVEAT/1.1/Wed May 25 01:56:32 2005// -/COPYING/1.1.1.1/Sat Dec 7 17:47:11 2002// -/ChangeLog/1.20/Wed Jun 21 19:12:11 2006// -/Makefile/1.4/Sun May 29 16:37:07 2005// -/README/1.3/Mon May 30 12:53:20 2005// -/TODO/1.1.1.1/Sat Dec 7 17:47:11 2002// -/lib.c/1.9/Wed Jun 21 19:12:11 2006// -/lib.h/1.5/Sun May 29 16:37:07 2005// -/lnode.c/1.1.1.1/Sat Dec 7 17:47:11 2002// -/lnode.h/1.1.1.1/Sat Dec 7 17:47:11 2002// -/main.c/1.3/Mon Jun 13 00:22:11 2005// -/ncache.c/1.1.1.1/Sat Dec 7 17:47:11 2002// -/ncache.h/1.1.1.1/Sat Dec 7 17:47:11 2002// -/netfs.c/1.6/Thu Jun 30 18:49:55 2005// -/node.c/1.10/Tue May 31 02:58:48 2005// -/node.h/1.3/Wed May 25 01:59:48 2005// -/options.c/1.7/Thu Apr 13 11:06:02 2006// -/options.h/1.3/Thu Jun 30 18:49:55 2005// -/pattern.c/1.1/Mon Jan 31 12:30:05 2005// -/pattern.h/1.1/Mon Jan 31 12:30:05 2005// -/stow-mutations.h/1.1/Sun May 29 16:37:07 2005// -/stow-priv.h/1.1/Sun May 29 16:37:07 2005// -/stow.c/1.5/Thu Jun 30 18:49:55 2005// -/stow.h/1.2/Sun May 29 16:37:07 2005// -/ulfs.c/1.5/Thu Apr 13 11:06:02 2006// -/ulfs.h/1.4/Thu Apr 13 11:06:02 2006// -/unionfs.h/1.1.1.1/Sat Dec 7 17:47:13 2002// -/update.c/1.1/Sun May 29 16:37:07 2005// -/update.h/1.1/Sun May 29 16:37:07 2005// -/version.h/1.1.1.1/Sat Dec 7 17:47:13 2002// -D diff --git a/unionfs/CVS/Repository b/unionfs/CVS/Repository deleted file mode 100644 index c093c680..00000000 --- a/unionfs/CVS/Repository +++ /dev/null @@ -1 +0,0 @@ -unionfs diff --git a/unionfs/CVS/Root b/unionfs/CVS/Root deleted file mode 100644 index 4ca06faf..00000000 --- a/unionfs/CVS/Root +++ /dev/null @@ -1 +0,0 @@ -:pserver:anonymous@cvs.sv.gnu.org:/sources/hurdextras -- cgit v1.2.3 From 6a1fe5e8547d88114713425d71e8620bcdaf363a Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 8 May 2011 22:52:57 +0200 Subject: remove .prof_d files --- boot-proxy-exc/boot.prof_d | 1 - boot.backup1/boot.prof_d | 1 - devnode/devnode.prof_d | 1 - eth-filter.multi-thread/eth-filter.prof_d | 1 - eth-filter/eth-filter.prof_d | 1 - pfinet.old/pfinet.prof_d | 1 - proc_proxy/proc_proxy.prof_d | 1 - serverboot/serverboot.prof_d | 1 - 8 files changed, 8 deletions(-) delete mode 100644 boot-proxy-exc/boot.prof_d delete mode 100644 boot.backup1/boot.prof_d delete mode 100644 devnode/devnode.prof_d delete mode 100644 eth-filter.multi-thread/eth-filter.prof_d delete mode 100644 eth-filter/eth-filter.prof_d delete mode 100644 pfinet.old/pfinet.prof_d delete mode 100644 proc_proxy/proc_proxy.prof_d delete mode 100644 serverboot/serverboot.prof_d (limited to 'devnode') diff --git a/boot-proxy-exc/boot.prof_d b/boot-proxy-exc/boot.prof_d deleted file mode 100644 index 50416b09..00000000 --- a/boot-proxy-exc/boot.prof_d +++ /dev/null @@ -1 +0,0 @@ -boot.prof: boot_p.o mach_host_impl_p.o mach_impl_p.o mach_port_impl_p.o exc_impl_p.o list_p.o mach_proxy_p.o notifyServer_p.o ourdeviceServer_p.o ioServer_p.o io_replyUser_p.o device_replyUser_p.o termServer_p.o bootstrapServer_p.o boot_script_p.o userland-boot_p.o ourmach_hostServer_p.o ourmachServer_p.o ourmach_portServer_p.o excServer_p.o ../libstore/libstore_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a ../libthreads/libthreads_p.a ../libports/libports_p.a diff --git a/boot.backup1/boot.prof_d b/boot.backup1/boot.prof_d deleted file mode 100644 index 50416b09..00000000 --- a/boot.backup1/boot.prof_d +++ /dev/null @@ -1 +0,0 @@ -boot.prof: boot_p.o mach_host_impl_p.o mach_impl_p.o mach_port_impl_p.o exc_impl_p.o list_p.o mach_proxy_p.o notifyServer_p.o ourdeviceServer_p.o ioServer_p.o io_replyUser_p.o device_replyUser_p.o termServer_p.o bootstrapServer_p.o boot_script_p.o userland-boot_p.o ourmach_hostServer_p.o ourmachServer_p.o ourmach_portServer_p.o excServer_p.o ../libstore/libstore_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a ../libthreads/libthreads_p.a ../libports/libports_p.a diff --git a/devnode/devnode.prof_d b/devnode/devnode.prof_d deleted file mode 100644 index 2e474391..00000000 --- a/devnode/devnode.prof_d +++ /dev/null @@ -1 +0,0 @@ -devnode.prof: devnode_p.o ourdeviceServer_p.o notifyServer_p.o ../libports/libports_p.a ../libtrivfs/libtrivfs_p.a ../libfshelp/libfshelp_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a diff --git a/eth-filter.multi-thread/eth-filter.prof_d b/eth-filter.multi-thread/eth-filter.prof_d deleted file mode 100644 index eb1c5518..00000000 --- a/eth-filter.multi-thread/eth-filter.prof_d +++ /dev/null @@ -1 +0,0 @@ -eth-filter.prof: bpf_impl_p.o filter_p.o queue_p.o pcap_filter_p.o msg_queue_p.o ourdeviceServer_p.o notifyServer_p.o device_replyUser_p.o ../libthreads/libthreads_p.a ../libports/libports_p.a ../libtrivfs/libtrivfs_p.a ../libfshelp/libfshelp_p.a ../libihash/libihash_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a diff --git a/eth-filter/eth-filter.prof_d b/eth-filter/eth-filter.prof_d deleted file mode 100644 index 4941e0ba..00000000 --- a/eth-filter/eth-filter.prof_d +++ /dev/null @@ -1 +0,0 @@ -eth-filter.prof: bpf_impl_p.o filter_p.o queue_p.o pcap_filter_p.o ourdeviceServer_p.o notifyServer_p.o ../libthreads/libthreads_p.a ../libports/libports_p.a ../libtrivfs/libtrivfs_p.a ../libfshelp/libfshelp_p.a ../libihash/libihash_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a diff --git a/pfinet.old/pfinet.prof_d b/pfinet.old/pfinet.prof_d deleted file mode 100644 index 9b57814e..00000000 --- a/pfinet.old/pfinet.prof_d +++ /dev/null @@ -1 +0,0 @@ -pfinet.prof: datagram_p.o dev_p.o dev_mcast_p.o dst_p.o iovec_p.o neighbour_p.o skbuff_p.o sock_p.o utils_p.o eth_p.o af_inet_p.o arp_p.o devinet_p.o fib_frontend_p.o fib_hash_p.o fib_semantics_p.o icmp_p.o igmp_p.o ip_forward_p.o ip_fragment_p.o ip_input_p.o ip_options_p.o ip_output_p.o ip_sockglue_p.o protocol_p.o raw_p.o route_p.o syncookies_p.o sysctl_net_ipv4_p.o tcp_p.o tcp_input_p.o tcp_ipv4_p.o tcp_output_p.o tcp_timer_p.o timer_p.o udp_p.o utils_p.o addrconf_p.o af_inet6_p.o datagram_ipv6_p.o exthdrs_p.o icmpv6_p.o ip6_fib_p.o ip6_flowlabel_p.o ip6_input_p.o ip6_output_p.o ipv6_sockglue_p.o mcast_p.o ndisc_p.o protocol_ipv6_p.o raw_ipv6_p.o reassembly_p.o route_ipv6_p.o tcp_ipv6_p.o udp_ipv6_p.o old-checksum_p.o checksum_p.o sched_p.o timer-emul_p.o socket_p.o main_p.o ethernet_p.o io-ops_p.o socket-ops_p.o misc_p.o time_p.o options_p.o loopback_p.o kmem_cache_p.o stubs_p.o dummy_p.o tunnel_p.o pfinet-ops_p.o iioctl-ops_p.o ioServer_p.o socketServer_p.o startup_notifyServer_p.o pfinetServer_p.o iioctlServer_p.o ../libtrivfs/libtrivfs_p.a ../libfshelp/libfshelp_p.a ../libthreads/libthreads_p.a ../libports/libports_p.a ../libihash/libihash_p.a ../libshouldbeinlibc/libshouldbeinlibc_p.a ../libiohelp/libiohelp_p.a diff --git a/proc_proxy/proc_proxy.prof_d b/proc_proxy/proc_proxy.prof_d deleted file mode 100644 index 466c9ea1..00000000 --- a/proc_proxy/proc_proxy.prof_d +++ /dev/null @@ -1 +0,0 @@ -proc_proxy.prof: proc_proxy_p.o process_ops_p.o processServer_p.o ../libthreads/libthreads_p.a ../libports/libports_p.a diff --git a/serverboot/serverboot.prof_d b/serverboot/serverboot.prof_d deleted file mode 100644 index 6c3232a2..00000000 --- a/serverboot/serverboot.prof_d +++ /dev/null @@ -1 +0,0 @@ -serverboot.prof: bootstrap_p.o ffs_compat_p.o load_p.o wiring_p.o ffs_file_io_p.o minix_ffs_compat_p.o file_io_p.o minix_file_io_p.o ext2_file_io_p.o strfcns_p.o exec_p.o panic_p.o elf-load_p.o gunzip_p.o bunzip2_p.o boot_script_p.o userland-boot_p.o unzip_p.o inflate_p.o util_p.o do-bunzip2_p.o ../libthreads/libthreads_p.a -- cgit v1.2.3 From c6172fc3c379ac2e4e008d36a04d84cfcd6ed3f6 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 9 May 2011 00:22:56 +0200 Subject: drop generated files --- boot-proxy-exc/ourdevice.defs | 383 --------------------------------- devnode/ourdevice.defs | 383 --------------------------------- eth-filter.multi-thread/ourdevice.defs | 383 --------------------------------- eth-filter/ourdevice.defs | 383 --------------------------------- eth-multiplexer/ourdevice.defs | 383 --------------------------------- proc_proxy/ourdevice.defs | 383 --------------------------------- 6 files changed, 2298 deletions(-) delete mode 100644 boot-proxy-exc/ourdevice.defs delete mode 100644 devnode/ourdevice.defs delete mode 100644 eth-filter.multi-thread/ourdevice.defs delete mode 100644 eth-filter/ourdevice.defs delete mode 100644 eth-multiplexer/ourdevice.defs delete mode 100644 proc_proxy/ourdevice.defs (limited to 'devnode') diff --git a/boot-proxy-exc/ourdevice.defs b/boot-proxy-exc/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/boot-proxy-exc/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/devnode/ourdevice.defs b/devnode/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/devnode/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-filter.multi-thread/ourdevice.defs b/eth-filter.multi-thread/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-filter.multi-thread/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-filter/ourdevice.defs b/eth-filter/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-filter/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-multiplexer/ourdevice.defs b/eth-multiplexer/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-multiplexer/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/proc_proxy/ourdevice.defs b/proc_proxy/ourdevice.defs deleted file mode 100644 index ba9a2d80..00000000 --- a/proc_proxy/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/include/device/device.defs" 1 3 4 -# 39 "/usr/include/device/device.defs" 3 4 -subsystem - - - - device 2800; - -# 1 "/usr/include/mach/std_types.defs" 1 3 4 -# 33 "/usr/include/mach/std_types.defs" 3 4 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/include/mach/machine/machine_types.defs" 1 3 4 -# 50 "/usr/include/mach/machine/machine_types.defs" 3 4 -type natural_t = unsigned32; -# 59 "/usr/include/mach/machine/machine_types.defs" 3 4 -type integer_t = int32; -# 45 "/usr/include/mach/std_types.defs" 2 3 4 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/include/device/device.defs" 2 3 4 -# 1 "/usr/include/mach/mach_types.defs" 1 3 4 -# 61 "/usr/include/mach/mach_types.defs" 3 4 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/include/mach/mach_types.defs" 3 4 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/include/mach/mach_types.defs" 3 4 -import ; -# 47 "/usr/include/device/device.defs" 2 3 4 -# 1 "/usr/include/device/device_types.defs" 1 3 4 -# 42 "/usr/include/device/device_types.defs" 3 4 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/include/device/device.defs" 2 3 4 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 -- cgit v1.2.3 From 42f0148a5b081d0528a09542c68b8fc1f489e8a7 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Thu, 30 Jun 2011 14:44:44 +0200 Subject: Revert "drop generated files" This reverts commit fb489ff7a7989b85ae4f3c1deaf5dbf816de6545. The Makefile rules are not actually regenerating them properly. --- boot-proxy-exc/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ devnode/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ eth-filter.multi-thread/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ eth-filter/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ eth-multiplexer/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ proc_proxy/ourdevice.defs | 383 +++++++++++++++++++++++++++++++++ 6 files changed, 2298 insertions(+) create mode 100644 boot-proxy-exc/ourdevice.defs create mode 100644 devnode/ourdevice.defs create mode 100644 eth-filter.multi-thread/ourdevice.defs create mode 100644 eth-filter/ourdevice.defs create mode 100644 eth-multiplexer/ourdevice.defs create mode 100644 proc_proxy/ourdevice.defs (limited to 'devnode') diff --git a/boot-proxy-exc/ourdevice.defs b/boot-proxy-exc/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/boot-proxy-exc/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/devnode/ourdevice.defs b/devnode/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/devnode/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/eth-filter.multi-thread/ourdevice.defs b/eth-filter.multi-thread/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/eth-filter.multi-thread/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/eth-filter/ourdevice.defs b/eth-filter/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/eth-filter/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/eth-multiplexer/ourdevice.defs b/eth-multiplexer/ourdevice.defs new file mode 100644 index 00000000..1b8ac442 --- /dev/null +++ b/eth-multiplexer/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/local/include/device/device.defs" 1 3 +# 39 "/usr/local/include/device/device.defs" 3 +subsystem + + + + device 2800; + +# 1 "/usr/local/include/mach/std_types.defs" 1 3 +# 33 "/usr/local/include/mach/std_types.defs" 3 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 +# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 +type natural_t = unsigned32; +# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 +type integer_t = int32; +# 45 "/usr/local/include/mach/std_types.defs" 2 3 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/mach/mach_types.defs" 1 3 +# 61 "/usr/local/include/mach/mach_types.defs" 3 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/local/include/mach/mach_types.defs" 3 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/local/include/mach/mach_types.defs" 3 +import ; +# 47 "/usr/local/include/device/device.defs" 2 3 +# 1 "/usr/local/include/device/device_types.defs" 1 3 +# 42 "/usr/local/include/device/device_types.defs" 3 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/local/include/device/device.defs" 2 3 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 diff --git a/proc_proxy/ourdevice.defs b/proc_proxy/ourdevice.defs new file mode 100644 index 00000000..ba9a2d80 --- /dev/null +++ b/proc_proxy/ourdevice.defs @@ -0,0 +1,383 @@ +# 1 "device.defs" +# 1 "" +# 1 "" +# 1 "device.defs" +# 1 "/usr/include/device/device.defs" 1 3 4 +# 39 "/usr/include/device/device.defs" 3 4 +subsystem + + + + device 2800; + +# 1 "/usr/include/mach/std_types.defs" 1 3 4 +# 33 "/usr/include/mach/std_types.defs" 3 4 +type char = MACH_MSG_TYPE_CHAR; +type short = MACH_MSG_TYPE_INTEGER_16; +type int = MACH_MSG_TYPE_INTEGER_32; +type int32 = MACH_MSG_TYPE_INTEGER_32; +type int64 = MACH_MSG_TYPE_INTEGER_64; +type boolean_t = MACH_MSG_TYPE_BOOLEAN; +type unsigned = MACH_MSG_TYPE_INTEGER_32; +type unsigned32 = MACH_MSG_TYPE_INTEGER_32; +type unsigned64 = MACH_MSG_TYPE_INTEGER_64; + + +# 1 "/usr/include/mach/machine/machine_types.defs" 1 3 4 +# 50 "/usr/include/mach/machine/machine_types.defs" 3 4 +type natural_t = unsigned32; +# 59 "/usr/include/mach/machine/machine_types.defs" 3 4 +type integer_t = int32; +# 45 "/usr/include/mach/std_types.defs" 2 3 4 + +type kern_return_t = int; + +type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE + ctype: vm_offset_t; + + +type mach_port_t = MACH_MSG_TYPE_COPY_SEND; +type mach_port_array_t = array[] of mach_port_t; + +type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME + ctype: mach_port_t; +type mach_port_name_array_t = array[] of mach_port_name_t + ctype: mach_port_array_t; + +type mach_port_right_t = natural_t; + +type mach_port_type_t = natural_t; +type mach_port_type_array_t = array[] of mach_port_type_t; + +type mach_port_urefs_t = natural_t; +type mach_port_delta_t = integer_t; +type mach_port_seqno_t = natural_t; +type mach_port_mscount_t = unsigned; +type mach_port_msgcount_t = unsigned; +type mach_port_rights_t = unsigned; +type mach_msg_id_t = integer_t; +type mach_msg_type_name_t = unsigned; +type mach_msg_type_number_t = natural_t; + +type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE + ctype: mach_port_t; +type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND + ctype: mach_port_t; +type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND + ctype: mach_port_t; +type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND + ctype: mach_port_t; +type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE + ctype: mach_port_t; +type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE + ctype: mach_port_t; + +type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE + ctype: mach_port_t; +type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND + ctype: mach_port_t; +type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE + ctype: mach_port_t; + +type mach_port_poly_t = polymorphic + ctype: mach_port_t; + +import ; +# 46 "/usr/include/device/device.defs" 2 3 4 +# 1 "/usr/include/mach/mach_types.defs" 1 3 4 +# 61 "/usr/include/mach/mach_types.defs" 3 4 +type mach_port_status_t = struct[9] of integer_t; + +type old_mach_port_status_t = struct[8] of integer_t; + +type task_t = mach_port_t + ctype: mach_port_t + + + + + + ; +# 85 "/usr/include/mach/mach_types.defs" 3 4 +type thread_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type thread_state_t = array[*:1024] of natural_t; + +type task_array_t = ^array[] of task_t; +type thread_array_t = ^array[] of thread_t; + +type vm_task_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type ipc_space_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type vm_address_t = natural_t; +type vm_offset_t = natural_t; +type vm_size_t = natural_t; +type vm_prot_t = int; +type vm_inherit_t = int; +type vm_statistics_data_t = struct[13] of integer_t; +type vm_machine_attribute_t = int; +type vm_machine_attribute_val_t = int; + +type thread_info_t = array[*:1024] of natural_t; +type thread_basic_info_data_t = struct[11] of integer_t; +type thread_sched_info_data_t = struct[7] of integer_t; + +type task_info_t = array[*:1024] of natural_t; +type task_basic_info_data_t = struct[8] of integer_t; +type task_events_info = struct[7] of natural_t; +type task_thread_times_info_data_t = struct[4] of integer_t; + + +type memory_object_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_control_t = mach_port_t + ctype: mach_port_t + + + + ; + +type memory_object_name_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type memory_object_copy_strategy_t = int; +type memory_object_return_t = int; + +type machine_info_data_t = struct[5] of integer_t; +type machine_slot_data_t = struct[8] of integer_t; + +type host_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type host_priv_t = mach_port_t + ctype: mach_port_t + + + + ; + +type host_info_t = array[*:1024] of natural_t; +type host_basic_info_data_t = struct[5] of integer_t; +type host_sched_info_data_t = struct[2] of integer_t; +type host_load_info_data_t = struct[6] of integer_t; + + +type processor_t = mach_port_t + ctype: mach_port_t + + + + + ; + +type processor_array_t = ^array[] of processor_t; +type processor_info_t = array[*:1024] of natural_t; +type processor_basic_info_data_t = struct[5] of integer_t; + + +type processor_set_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_array_t = ^array[] of processor_set_t; + +type processor_set_name_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +type processor_set_name_array_t = ^array[] of processor_set_name_t; + +type processor_set_info_t = array[*:1024] of natural_t; +type processor_set_basic_info_data_t = struct[5] of integer_t; +type processor_set_sched_info_data_t = struct[2] of integer_t; + + +type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); + +type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); + +type time_value_t = struct[2] of integer_t; + +type emulation_vector_t = ^array[] of vm_offset_t; + +type xxx_emulation_vector_t = array[*:1024] of vm_offset_t + ctype: emulation_vector_t; + + +type rpc_signature_info_t = array[*:1024] of int; +# 250 "/usr/include/mach/mach_types.defs" 3 4 +import ; +# 47 "/usr/include/device/device.defs" 2 3 4 +# 1 "/usr/include/device/device_types.defs" 1 3 4 +# 42 "/usr/include/device/device_types.defs" 3 4 +type recnum_t = unsigned32; +type dev_mode_t = unsigned32; +type dev_flavor_t = unsigned32; +type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); +type dev_status_t = array[*:1024] of int; +type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; +type io_buf_ptr_inband_t= array[*:128] of char; +type filter_t = short; +type filter_array_t = array[*:128] of filter_t; + +type device_t = mach_port_t + ctype: mach_port_t + + + + + + ; + +import ; +import ; +# 48 "/usr/include/device/device.defs" 2 3 4 + +serverprefix ds_; + +type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic + ctype: mach_port_t; + +routine device_open( + master_port : mach_port_t; + sreplyport reply_port : reply_port_t; + mode : dev_mode_t; + name : dev_name_t; + out device : mach_port_send_t + ); + +routine device_close( + device : device_t + ); + +routine device_write( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_t; + out bytes_written : int + ); + +routine device_write_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in data : io_buf_ptr_inband_t; + out bytes_written : int + ); + +routine device_read( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_t + ); + +routine device_read_inband( + device : device_t; + sreplyport reply_port : reply_port_t; + in mode : dev_mode_t; + in recnum : recnum_t; + in bytes_wanted : int; + out data : io_buf_ptr_inband_t + ); + + +routine xxx_device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t, IsLong + ); + + +routine xxx_device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, IsLong + ); + + +routine xxx_device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t, IsLong + ); + +routine device_map( + device : device_t; + in prot : vm_prot_t; + in offset : vm_offset_t; + in size : vm_size_t; + out pager : memory_object_t; + in unmap : int + ); + +routine device_set_status( + device : device_t; + in flavor : dev_flavor_t; + in status : dev_status_t + ); + +routine device_get_status( + device : device_t; + in flavor : dev_flavor_t; + out status : dev_status_t, CountInOut + ); + +routine device_set_filter( + device : device_t; + in receive_port : mach_port_send_t; + in priority : int; + in filter : filter_array_t + ); +# 1 "device.defs" 2 -- cgit v1.2.3 From f21688932acd7d6caf669b52161b4c2af865d584 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 19 Feb 2012 05:16:04 +0000 Subject: cleanup --- boot-proxy-exc/bootstrap.defs | 1 - boot-proxy-exc/device.defs | 1 - boot-proxy-exc/device_reply.defs | 1 - boot-proxy-exc/exc.defs | 1 - boot-proxy-exc/notify.defs | 1 - boot-proxy-exc/ourdevice.defs | 383 - devnode/device.defs | 1 - devnode/notify.defs | 1 - devnode/ourdevice.defs | 383 - eth-filter.multi-thread/device.defs | 1 - eth-filter.multi-thread/device_reply.defs | 1 - eth-filter.multi-thread/notify.defs | 1 - eth-filter.multi-thread/ourdevice.defs | 383 - eth-filter/device.defs | 1 - eth-filter/notify.defs | 1 - eth-filter/ourdevice.defs | 383 - eth-multiplexer/device.defs | 1 - eth-multiplexer/notify.defs | 1 - eth-multiplexer/ourdevice.defs | 383 - libmachdev/device_reply.defs | 1 - libmachdev/notify.defs | 1 - netfs-sample/cscope.out | 33870 ------------------------ proc_proxy/ourdevice.defs | 383 - unionfs/cscope.out | 39484 ---------------------------- 24 files changed, 75668 deletions(-) delete mode 100644 boot-proxy-exc/bootstrap.defs delete mode 100644 boot-proxy-exc/device.defs delete mode 100644 boot-proxy-exc/device_reply.defs delete mode 100644 boot-proxy-exc/exc.defs delete mode 100644 boot-proxy-exc/notify.defs delete mode 100644 boot-proxy-exc/ourdevice.defs delete mode 100644 devnode/device.defs delete mode 100644 devnode/notify.defs delete mode 100644 devnode/ourdevice.defs delete mode 100644 eth-filter.multi-thread/device.defs delete mode 100644 eth-filter.multi-thread/device_reply.defs delete mode 100644 eth-filter.multi-thread/notify.defs delete mode 100644 eth-filter.multi-thread/ourdevice.defs delete mode 100644 eth-filter/device.defs delete mode 100644 eth-filter/notify.defs delete mode 100644 eth-filter/ourdevice.defs delete mode 100644 eth-multiplexer/device.defs delete mode 100644 eth-multiplexer/notify.defs delete mode 100644 eth-multiplexer/ourdevice.defs delete mode 100644 libmachdev/device_reply.defs delete mode 100644 libmachdev/notify.defs delete mode 100644 netfs-sample/cscope.out delete mode 100644 proc_proxy/ourdevice.defs delete mode 100644 unionfs/cscope.out (limited to 'devnode') diff --git a/boot-proxy-exc/bootstrap.defs b/boot-proxy-exc/bootstrap.defs deleted file mode 100644 index ad4bac91..00000000 --- a/boot-proxy-exc/bootstrap.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/boot-proxy-exc/device.defs b/boot-proxy-exc/device.defs deleted file mode 100644 index 70472689..00000000 --- a/boot-proxy-exc/device.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/boot-proxy-exc/device_reply.defs b/boot-proxy-exc/device_reply.defs deleted file mode 100644 index 69930311..00000000 --- a/boot-proxy-exc/device_reply.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/boot-proxy-exc/exc.defs b/boot-proxy-exc/exc.defs deleted file mode 100644 index ab864488..00000000 --- a/boot-proxy-exc/exc.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/boot-proxy-exc/notify.defs b/boot-proxy-exc/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/boot-proxy-exc/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/boot-proxy-exc/ourdevice.defs b/boot-proxy-exc/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/boot-proxy-exc/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/devnode/device.defs b/devnode/device.defs deleted file mode 100644 index 70472689..00000000 --- a/devnode/device.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/devnode/notify.defs b/devnode/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/devnode/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/devnode/ourdevice.defs b/devnode/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/devnode/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-filter.multi-thread/device.defs b/eth-filter.multi-thread/device.defs deleted file mode 100644 index 70472689..00000000 --- a/eth-filter.multi-thread/device.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-filter.multi-thread/device_reply.defs b/eth-filter.multi-thread/device_reply.defs deleted file mode 100644 index 69930311..00000000 --- a/eth-filter.multi-thread/device_reply.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-filter.multi-thread/notify.defs b/eth-filter.multi-thread/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/eth-filter.multi-thread/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-filter.multi-thread/ourdevice.defs b/eth-filter.multi-thread/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-filter.multi-thread/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-filter/device.defs b/eth-filter/device.defs deleted file mode 100644 index 70472689..00000000 --- a/eth-filter/device.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-filter/notify.defs b/eth-filter/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/eth-filter/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-filter/ourdevice.defs b/eth-filter/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-filter/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/eth-multiplexer/device.defs b/eth-multiplexer/device.defs deleted file mode 100644 index 70472689..00000000 --- a/eth-multiplexer/device.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-multiplexer/notify.defs b/eth-multiplexer/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/eth-multiplexer/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/eth-multiplexer/ourdevice.defs b/eth-multiplexer/ourdevice.defs deleted file mode 100644 index 1b8ac442..00000000 --- a/eth-multiplexer/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/local/include/device/device.defs" 1 3 -# 39 "/usr/local/include/device/device.defs" 3 -subsystem - - - - device 2800; - -# 1 "/usr/local/include/mach/std_types.defs" 1 3 -# 33 "/usr/local/include/mach/std_types.defs" 3 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/local/include/mach/machine/machine_types.defs" 1 3 -# 50 "/usr/local/include/mach/machine/machine_types.defs" 3 -type natural_t = unsigned32; -# 59 "/usr/local/include/mach/machine/machine_types.defs" 3 -type integer_t = int32; -# 45 "/usr/local/include/mach/std_types.defs" 2 3 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/mach/mach_types.defs" 1 3 -# 61 "/usr/local/include/mach/mach_types.defs" 3 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/local/include/mach/mach_types.defs" 3 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/local/include/mach/mach_types.defs" 3 -import ; -# 47 "/usr/local/include/device/device.defs" 2 3 -# 1 "/usr/local/include/device/device_types.defs" 1 3 -# 42 "/usr/local/include/device/device_types.defs" 3 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/local/include/device/device.defs" 2 3 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/libmachdev/device_reply.defs b/libmachdev/device_reply.defs deleted file mode 100644 index 69930311..00000000 --- a/libmachdev/device_reply.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/libmachdev/notify.defs b/libmachdev/notify.defs deleted file mode 100644 index 2014be5c..00000000 --- a/libmachdev/notify.defs +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/netfs-sample/cscope.out b/netfs-sample/cscope.out deleted file mode 100644 index 0dc6229b..00000000 --- a/netfs-sample/cscope.out +++ /dev/null @@ -1,33870 +0,0 @@ -cscope 15 $HOME/Desktop/netfs-sample 0000194972 - @debug.h - -26 #iâdeŕ -__DEBUG_H__ - - -27  - #__DEBUG_H__ - - - ) - -30  - ~<ˇdio.h -> - -36  - #DEBUG_OUTPUT - "/v¬/tmp/fž‹rfs.dbg" - - ) - -38 #ifdeŕ -DEBUG - - -40  - #INIT_LOG -(č -fž‹rfs_dbg - = - `fÝ’ -( -DEBUG_OUTPUT -, "wt") - - ) - -42  - #CLOSE_LOG -(č - `fţoŁ -( -fž‹rfs_dbg -) - - ) - -44  - #LOG_MSG -( -fmt -, -¬gs -...č{ - `ĺrštf -( -fž‹rfs_dbg -, fmt"\n", ##args);\ - -45 - `fćush -( -fž‹rfs_dbg -);} - - ) - -48  - #INIT_LOG -() - - ) - -49  - #CLOSE_LOG -() - - ) - -50  - #LOG_MSG -( -fmt -, -¬gs -...) - - ) - -57 -FILE - * -fž‹rfs_dbg -; - - @filterfs.c - -28  - #_GNU_SOURCE - 1 - - ) - -30  - ~"fž‹rfs.h -" - -32  - ~<”rÜ.h -> - -33  - ~<¬gp.h -> - -34  - ~<¬gz.h -> - -35  - ~ - -36  - ~ - -38  - ~"debug.h -" - -39  - ~"ÝtiÚs.h -" - -40  - ~"n˙che.h -" - -46  - #OPENONLY_STATE_MODES - ( -O_CREAT - | -O_EXCL - | -O_NOLINK - | -O_NOTRANS - \ - -47 | -O_NONBLOCK -) - - ) - -53 * - gĂtfs_Łrv”_Çme - = "filterfs"; - -56 * - gĂtfs_Łrv”_v”siÚ - = "0.0"; - -59  - gĂtfs_maxsymlšks - = 12; - -62 -mach_pÜt_t - - gund”lyšg_node -; - -65 -io_ˇ©buf_t - - gund”lyšg_node_ˇ© -; - -68 vŢ©ž -m­łd_time_v®ue - * - gm­time -; - -71 -pid_t - - gfsid -; - -74 -FILE - * - gfž‹rfs_dbg -; - -80 -”rÜ_t - - -81 - gĂtfs_©‹m±_ü—‹_fže - - -83  -iouŁr - * - guŁr -, - -84  -node - * - gdś -, - -85 * - gÇme -, - -86 -mode_t - - gmode -, - -87  -node - ** - gnode - - -90 -LOG_MSG -("netfs_attempt_create_file"); - -93 -mu‹x_uĆock -(& -dś --> -lock -); - -94  - gEOPNOTSUPP -; - -99 -”rÜ_t - - -100 - gĂtfs_check_Ý’_łrmissiÚs - - -102  -iouŁr - * - guŁr -, - -103  -node - * - gĹ -, - -104  - gćags -, - -105  - gĂwnode - - -108 -LOG_MSG -("Ătfs_check_Ý’_łrmissiÚs: '%s'", -Ĺ --> - --> -Ęode --> -Çme -); - -110 -”rÜ_t - - g”r - = 0; - -113 if( - gćags - & - gO_READ -) - -114 - g”r - = -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IREAD -, -uŁr -); - -115 if(! - g”r - && ( - gćags - & - gO_WRITE -)) - -116 - g”r - = -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IWRITE -, -uŁr -); - -117 if(! - g”r - && ( - gćags - & - gO_EXEC -)) - -118 - g”r - = -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IEXEC -, -uŁr -); - -121  - g”r -; - -125 -”rÜ_t - - -126 - gĂtfs_©‹m±_utimes - - -128  -iouŁr - * - güed -, - -129  -node - * - gnode -, - -130  -timeĄec - * - g©ime -, - -131  -timeĄec - * - gmtime - - -134 -LOG_MSG -("netfs_attempt_utimes"); - -136 -”rÜ_t - - g”r - = 0; - -139  - gćags - = -TOUCH_CTIME -; - -142 - g”r - = -fsh–p_isowĂr -(& -node --> -Â_ˇ© -, -üed -); - -145 if(! - g”r -) - -148 if( - g©ime -) - -150 - gnode --> - gÂ_ˇ© -. - gˇ_©im - = * -©ime -; - -153 - gćags - |đ -TOUCH_ATIME -; - -156 if( - gmtime -) - -158 - gnode --> - gÂ_ˇ© -. - gˇ_mtim - = * -mtime -; - -161 - gćags - |đ -TOUCH_MTIME -; - -164 -fsh–p_touch -(& -node --> -Â_ˇ© -, -ćags -, -m­time -); - -168  - g”r -; - -172 -”rÜ_t - - -173 - gĂtfs_»pÜt_acűss - - -175  -iouŁr - * - güed -, - -176  -node - * - gĹ -, - -177 * - gtyłs - - -180 -LOG_MSG -("netfs_report_access"); - -183 * - gtyłs - = 0; - -186 if( -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IREAD -, -üed -) == 0) - -187 * -tyłs - |đ -O_READ -; - -188 if( -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IWRITE -, -üed -) == 0) - -189 * -tyłs - |đ -O_WRITE -; - -190 if( -fsh–p_acűss -(& -Ĺ --> -Â_ˇ© -, -S_IEXEC -, -üed -) == 0) - -191 * -tyłs - |đ -O_EXEC -; - -198 -”rÜ_t - - -199 - gĂtfs_v®id©e_ˇ© - - -201  -node - * - gĹ -, - -202  -iouŁr - * - güed - - -205 -LOG_MSG -("Ătfs_v®id©e_ˇ©: '%s'", -Ĺ --> - --> -Ęode --> -Çme -); - -207 -”rÜ_t - - g”r - = 0; - -210 if( - gĹ - !đ -Ătfs_roŮ_node -) - -213 if(!( -Ĺ --> - --> -ćags - & -FLAG_NODE_ULFS_UPTODATE -)) - -216 -”r - = -node_upd©e -( -Ĺ -); - -220 if(! - g”r -) - -223 if( - gĹ --> - g --> - gpÜt - !đ -MACH_PORT_NULL -) - -229 -”r - = -io_ˇ© -( -Ĺ --> - --> -pÜt -, &Ĺ-> -Â_ˇ© -); - -232 if(! - g”r -) - -234 - gĹ --> - gÂ_ŚŞ¦©ed - = -Ĺ --> -Â_ˇ© -. -ˇ_mode -; - -243 -node_t - * - gdĹ -; - -246 - g”r - = -n˙che_node_lookup -( -Ĺ --> - --> -Ęode --> -dś -, & -dĹ -); - -249 -asŁą -(! -”r -); - -252 -mach_pÜt_t - - gp - = -fže_Çme_lookup_und” - - -253 ( -dĹ --> - --> -pÜt -, - gĹ --> - g --> - gĘode --> - gÇme -, 0, 0); - -256 -Ătfs_Ĺut -( -dĹ -); - -258 if(! - gp -) - -259  - gEBADF -; - -262 - g”r - = -io_ˇ© -( -p -, & -Ĺ --> -Â_ˇ© -); - -265 -PORT_DEALLOC -( -p -); - -272 -node_g‘_size -( -Ĺ -, ( -OFFSET_T - *)&Ĺ-> -Â_ˇ© -. -ˇ_size -); - -275  - g”r -; - -279 -”rÜ_t - - -280 - gĂtfs_©‹m±_sync - - -282  -iouŁr - * - güed -, - -283  -node - * - gnode -, - -284  - gwa™ - - -287 -LOG_MSG -("netfs_attempt_sync"); - -290  - gEOPNOTSUPP -; - -294 -”rÜ_t - - -295 - gĂtfs_g‘_dś’ts - - -297  -iouŁr - * - güed -, - -298  -node - * - gdś -, - -299  - gfśˇ_’Śy -, - -300  - gnum_’Ś›s -, - -301 ** - gd©a -, - -302 -mach_msg_tył_numb”_t - * - gd©a_Ën -, - -303 -vm_size_t - - gmax_d©a_Ën -, - -304 * - gd©a_’Ś›s - - -307 -LOG_MSG -("Ătfs_g‘_dś’ts: '%s'", -dś --> - --> -Ęode --> -Çme -); - -309 -”rÜ_t - - g”r -; - -312 -node_dś’t_t - * - gdś’t_ˇ¬t -, * - gdś’t_cuĽ’t -; - -315 -node_dś’t_t - * - gdś’t_liˇ - = -NULL -; - -318 -size_t - - gsize - = 0; - -321  - gcouÁ - = 0; - -324 * - gd©a_p -; - -328 - gbump_size - - -330 cÚˇ * - gÇme - - -334 if(( - gnum_’Ś›s - =đ-1č|| ( -couÁ - < -num_’Ś›s -)) - -337 -size_t - -Ăw_size - = -size - + -DIRENT_LEN -( -ˇľ’ -( -Çme -)); - -340 if(( - gmax_d©a_Ën - > 0č&& ( - gĂw_size - > max_data_len)) - -345 - gsize - = -Ăw_size -; - -348 ++ - gcouÁ -; - -362 - gadd_dś’t - - -364 cÚˇ * - gÇme -, - -365 -šo_t - - gšo -, - -366  - gtył - - -370 if(( - gnum_’Ś›s - =đ-1č|| ( -couÁ - < -num_’Ś›s -)) - -373  -dś’t - -hdr -; - -376 -size_t - - gÇme_Ën - = -ˇľ’ -( -Çme -); - -379 -size_t - - gsz - = -DIRENT_LEN -( -Çme_Ën -); - -382 if( - gsz - > - gsize -) - -387 - gsize - -đ -sz -; - -390 - ghdr -. - gd_šo - = -šo -; - -391 - ghdr -. - gd_»ţ’ - = -sz -; - -392 - ghdr -. - gd_tył - = -tył -; - -393 - ghdr -. - gd_ÇmËn - = -Çme_Ën -; - -400 -memýy -( -d©a_p -, & -hdr -, -DIRENT_NAME_OFFS -); - -403 -ˇrýy -( -d©a_p - + -DIRENT_NAME_OFFS -, -Çme -); - -408 - gd©a_p - +đ -sz -; - -411 ++ - gcouÁ -; - -422 - g”r - = -node_’Ś›s_g‘ -( -dś -, & -dś’t_liˇ -); - -425 if(! - g”r -) - -430 - gdś’t_ˇ¬t - = -dś’t_liˇ -, - gcouÁ - = 2; - -431 - gdś’t_ˇ¬t - && ( - gcouÁ - < - gfśˇ_’Śy -); - -432 - gdś’t_ˇ¬t - = -dś’t_ˇ¬t --> -Ăxt -, ++ - gcouÁ - - -436 - gcouÁ - = 0; - -439 if( - gfśˇ_’Śy - == 0) - -440 -bump_size -("."); - -441 if( - gfśˇ_’Śy - <= 1) - -442 -bump_size -(".."); - -447 - gdś’t_cuĽ’t - = -dś’t_ˇ¬t -; - -448 - gdś’t_cuĽ’t -; - -449 - gdś’t_cuĽ’t - = -dś’t_cuĽ’t --> -Ăxt - - -452 if( -bump_size -( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -) == 0) - -457 * - gd©a - = -mm­ -(0, -size -, -PROT_READ - | -PROT_WRITE -, -MAP_ANON -, 0, 0); - -460 - g”r - = ((*)* -d©a - =đ -MAP_FAILED -č? ( -”şo -) : (0); - -464 if(! - g”r -) - -467 - gd©a_p - = * -d©a -; - -470 * - gd©a_Ën - = -size -; - -471 * - gd©a_’Ś›s - = -couÁ -; - -474 - gcouÁ - = 0; - -477 if( - gfśˇ_’Śy - == 0) - -478 -add_dś’t -(".", 2, -DT_DIR -); - -479 if( - gfśˇ_’Śy - <= 1) - -480 -add_dś’t -("..", 2, -DT_DIR -); - -485 - gdś’t_cuĽ’t - = -dś’t_ˇ¬t -; dirent_current; - -486 - gdś’t_cuĽ’t - = -dś’t_cuĽ’t --> -Ăxt - - -491 -add_dś’t - - -492 ( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -, - gdś’t_cuĽ’t --> - gdś’t --> - gd_fž’o -, - -493 - gdś’t_cuĽ’t --> - gdś’t --> - gd_tył -) == 0 - -500 if( - gdś’t_liˇ -) - -501 -node_’Ś›s_ä“ -( -dś’t_liˇ -); - -504 -fsh–p_touch -(& -dś --> -Â_ˇ© -, -TOUCH_ATIME -, -m­time -); - -507  - g”r -; - -511 -”rÜ_t - - -512 - gĂtfs_©‹m±_lookup - - -514  -iouŁr - * - guŁr -, - -515  -node - * - gdś -, - -516 * - gÇme -, - -517  -node - ** - gnode - - -520 -LOG_MSG -("Ătfs_©‹m±_lookup: '%s'", -Çme -); - -522 -”rÜ_t - - g”r - = 0; - -525 if( -ˇrcmp -( -Çme -, ".") == 0) - -528 -Ătfs_Äef -( -dś -); - -529 * - gnode - = -dś -; - -535 if( -ˇrcmp -( -Çme -, "..") == 0) - -538 if( -dś --> - --> -Ęode -->dir) - -541 -asŁą -( -dś --> - --> -Ęode -->dś-> -node -); - -544 - g”r - = -n˙che_node_lookup -( -dś --> - --> -Ęode -->dś, -node -); - -550 - g”r - = -ENOENT -; - -551 * - gnode - = -NULL -; - -555 -mu‹x_uĆock -(& -dś --> -lock -); - -558  - g”r -; - -563 - gcheck_´Ý”ty - - -565 cÚˇ * - gÇme - - -569 if(! - g´Ý”ty -) - -574  - g·żm_’Ś›s_couÁ - = 0; - -577 * - goccuĽ’ű - = -ˇrˇr -( -´Ý”ty -, -PROPERTY_PARAM -); - -580 ; - goccuĽ’ű -; - -581 - goccuĽ’ű - = -ˇrˇr -( -occuĽ’ű - + 1, -PROPERTY_PARAM -), - -582 ++ - g·żm_’Ś›s_couÁ -); - -585 -size_t - - g´Ý”ty_·żm_Ën - = -ˇľ’ -( -PROPERTY_PARAM -); - -588 -size_t - - g´Ý”ty_Ën - = ( -´Ý”ty -č? ( -ˇľ’ -(property)) : (0); - -591 - g”r - = 0; - -594 -size_t - - gfuÎ_Çme_Ën - = -ˇľ’ -( -dś --> - --> -Ęode --> -·th -č+ 1 + sŚËn( -Çme -) + 1; - -597 * - gfuÎ_Çme - = -m®loc -( -fuÎ_Çme_Ën -); - -598 if(! - gfuÎ_Çme -) - -600 - g”r - = -ENOMEM -; - -605 - gfuÎ_Çme -[0] = 0; - -608 -ˇrýy -( -fuÎ_Çme -, -dś --> - --> -Ęode --> -·th -); - -609 -ˇr˙t -( -fuÎ_Çme -, "/"); - -610 -ˇr˙t -( -fuÎ_Çme -, -Çme -); - -612 -LOG_MSG -("Ătfs_©‹m±_lookup: Aµlyšg fž‹¸tŘ%s...", -fuÎ_Çme -); - -615 -size_t - - gsz - = -´Ý”ty_Ën - + ( -ˇľ’ -( -fuÎ_Çme -č- -´Ý”ty_·żm_Ën -) - -616 * -·żm_’Ś›s_couÁ -; - -619 * - gcmd - = -m®loc -( -sz -); - -620 if(! - gcmd -) - -622 -ä“ -( -fuÎ_Çme -); - -623 - g”r - = -ENOMEM -; - -628 - gcmd -[0] = 0; - -631 * - gp - = -ˇrˇr -( -´Ý”ty -, -PROPERTY_PARAM -); - -634 * - g´Ýp - = -´Ý”ty -; - -637 ; - gp -;… = -ˇrˇr -( -´Ýp -, -PROPERTY_PARAM -)) - -640 -ˇş˙t -( -cmd -, -´Ýp -, -p - -…ropp); - -643 -ˇr˙t -( -cmd -, -fuÎ_Çme -); - -648 - g´Ýp - = -p - + -´Ý”ty_·żm_Ën -; - -654 -ˇr˙t -( -cmd -, -´Ýp -); - -659  - gxcode - = -WEXITSTATUS -( -syˇem -( -cmd -)); - -662  - gxcode -; - -666 if( -check_´Ý”ty -( -Çme -) != 0) - -669 -mu‹x_uĆock -(& -dś --> -lock -); - -672  - gENOENT -; - -676 -mach_pÜt_t - - gp - = -fže_Çme_lookup_und” -( -dś --> - --> -pÜt -, -Çme -, 0, 0); - -679 if( - gp - =đ -MACH_PORT_NULL -) - -682 -mu‹x_uĆock -(& -dś --> -lock -); - -685  - gENOENT -; - -689 -io_ˇ©buf_t - - gˇ© -; - -690 - g”r - = -io_ˇ© -( -p -, & -ˇ© -); - -693 -PORT_DEALLOC -( -p -); - -696 if( - g”r - || ! -S_ISDIR -( -ˇ© -. -ˇ_mode -)) - -699 - gp - = -MACH_PORT_NULL -; - -704 - gp - = -fže_Çme_lookup_und” -( -dś --> - --> -pÜt -, -Çme -, -O_READ - | -O_DIRECTORY -, 0); - -705 if( - gp - =đ -MACH_PORT_NULL -) - -707  -EBADF -; - -712 -Ęode_t - * - gĘode -; - -716 -fš®ize -() - -719 if( - g”r -) - -722 * - gnode - = -NULL -; - -725 if( - gp - !đ -MACH_PORT_NULL -) - -726 -PORT_DEALLOC -( -p -); - -729 if(* - gnode -) - -732 -mu‹x_uĆock -(&(* -node -)-> -lock -); - -735 -n˙che_node_add -(* -node -); - -739 -mu‹x_uĆock -(& -dś --> - --> -Ęode --> -lock -); - -740 -mu‹x_uĆock -(& -dś --> -lock -); - -744 - g”r - = -Ęode_g‘ -( -dś --> - --> -Ęode -, -Çme -, &lnode); - -747 if( - g”r - =đ -ENOENT -) - -750 -”r - = -Ęode_ü—‹ -( -Çme -, & -Ęode -); - -751 if( - g”r -) - -753 -fš®ize -(); - -754  - g”r -; - -758 -Ęode_šˇ®l -( -dś --> - --> -Ęode -,†node); - -762 - g”r - = -n˙che_node_lookup -( -Ęode -, -node -); - -765 -Ęode_»f_»move -( -Ęode -); - -768 if( - g”r -) - -771 -fš®ize -(); - -772  - g”r -; - -776 (* - gnode -)-> - g --> - gpÜt - = -p -; - -779 - g”r - = -Ęode_·th_cÚˇruů -( -Ęode -, -NULL -); - -780 if( - g”r -) - -782 -fš®ize -(); - -783  - g”r -; - -787 (* - gnode -)-> - g --> - gćags - = -FLAG_NODE_ULFS_UPTODATE -; - -790 -fš®ize -(); - -791  - g”r -; - -795 -”rÜ_t - - -796 - gĂtfs_©‹m±_uĆšk - - -798  -iouŁr - * - guŁr -, - -799  -node - * - gdś -, - -800 * - gÇme - - -803 -LOG_MSG -("netfs_attempt_unlink"); - -809 -”rÜ_t - - -810 - gĂtfs_©‹m±_»Çme - - -812  -iouŁr - * - guŁr -, - -813  -node - * - gäomdś -, - -814 * - gäomÇme -, - -815  -node - * - gtodś -, - -816 * - gtÚame -, - -817  - gexţ - - -820 -LOG_MSG -("netfs_attempt_rename"); - -823  - gEOPNOTSUPP -; - -827 -”rÜ_t - - -828 - gĂtfs_©‹m±_mkdś - - -830  -iouŁr - * - guŁr -, - -831  -node - * - gdś -, - -832 * - gÇme -, - -833 -mode_t - - gmode - - -836 -LOG_MSG -("netfs_attempt_mkdir"); - -842 -”rÜ_t - - -843 - gĂtfs_©‹m±_rmdś - - -845  -iouŁr - * - guŁr -, - -846  -node - * - gdś -, - -847 * - gÇme - - -850 -LOG_MSG -("netfs_attempt_rmdir"); - -856 -”rÜ_t - - -857 - gĂtfs_©‹m±_chown - - -859  -iouŁr - * - güed -, - -860  -node - * - gnode -, - -861 -uid_t - - guid -, - -862 -uid_t - - ggid - - -865 -LOG_MSG -("netfs_attempt_chown"); - -868  - gEOPNOTSUPP -; - -872 -”rÜ_t - - -873 - gĂtfs_©‹m±_chauthÜ - - -875  -iouŁr - * - güed -, - -876  -node - * - gnode -, - -877 -uid_t - - gauthÜ - - -880 -LOG_MSG -("netfs_attempt_chauthor"); - -883  - gEOPNOTSUPP -; - -887 -”rÜ_t - - -888 - gĂtfs_©‹m±_chmod - - -890  -iouŁr - * - guŁr -, - -891  -node - * - gnode -, - -892 -mode_t - - gmode - - -895 -LOG_MSG -("netfs_attempt_chmod"); - -898  - gEOPNOTSUPP -; - -902 -”rÜ_t - - -903 - gĂtfs_©‹m±_mksymlšk - - -905  -iouŁr - * - güed -, - -906  -node - * - gnode -, - -907 * - gÇme - - -910 -LOG_MSG -("netfs_attempt_mksymlink"); - -913  - gEOPNOTSUPP -; - -917 -”rÜ_t - - -918 - gĂtfs_©‹m±_mkdev - - -920  -iouŁr - * - güed -, - -921  -node - * - gnode -, - -922 -mode_t - - gtył -, - -923 -dev_t - - gšdexes - - -926 -LOG_MSG -("netfs_attempt_mkdev"); - -929  - gEOPNOTSUPP -; - -933 -”rÜ_t - - -934 - gĂtfs_Łt_ŚŞ¦©Ü - - -936  -iouŁr - * - güed -, - -937  -node - * - gnode -, - -938 * - g¬gz -, - -939 -size_t - - g¬gËn - - -942 -LOG_MSG -("netfs_set_translator"); - -945  - gEOPNOTSUPP -; - -949 -”rÜ_t - - -950 - gĂtfs_©‹m±_chćags - - -952  -iouŁr - * - güed -, - -953  -node - * - gnode -, - -954  - gćags - - -957 -LOG_MSG -("netfs_attempt_chflags"); - -960  - gEOPNOTSUPP -; - -964 -”rÜ_t - - -965 - gĂtfs_©‹m±_Łt_size - - -967  -iouŁr - * - güed -, - -968  -node - * - gnode -, - -969 -loff_t - - gsize - - -972 -LOG_MSG -("netfs_attempt_set_size"); - -975  - gEOPNOTSUPP -; - -979 -”rÜ_t - - -980 - gĂtfs_©‹m±_ˇ©fs - - -982  -iouŁr - * - güed -, - -983  -node - * - gnode -, - -984 -fsys_ˇ©fsbuf_t - * - gˇ - - -987 -LOG_MSG -("netfs_attempt_statfs"); - -990  - gEOPNOTSUPP -; - -994 -”rÜ_t - - -995 - gĂtfs_©‹m±_syncfs - - -997  -iouŁr - * - güed -, - -998  - gwa™ - - -1001 -LOG_MSG -("netfs_attempt_syncfs"); - -1008 -”rÜ_t - - -1009 - gĂtfs_©‹m±_lšk - - -1011  -iouŁr - * - guŁr -, - -1012  -node - * - gdś -, - -1013  -node - * - gfže -, - -1014 * - gÇme -, - -1015  - gexţ - - -1018 -LOG_MSG -("netfs_attempt_link"); - -1021  - gEOPNOTSUPP -; - -1025 -”rÜ_t - - -1026 - gĂtfs_©‹m±_mkfže - - -1028  -iouŁr - * - guŁr -, - -1029  -node - * - gdś -, - -1030 -mode_t - - gmode -, - -1031  -node - ** - gnode - - -1034 -LOG_MSG -("netfs_attempt_mkfile"); - -1037 -mu‹x_uĆock -(& -dś --> -lock -); - -1040  - gEOPNOTSUPP -; - -1044 -”rÜ_t - - -1045 - gĂtfs_©‹m±_»adlšk - - -1047  -iouŁr - * - guŁr -, - -1048  -node - * - gnode -, - -1049 * - gbuf - - -1052 -LOG_MSG -("netfs_attempt_readlink"); - -1055  - gEOPNOTSUPP -; - -1059 -”rÜ_t - - -1060 - gĂtfs_©‹m±_»ad - - -1062  -iouŁr - * - güed -, - -1063  -node - * - gĹ -, - -1064 -loff_t - - goffŁt -, - -1065 -size_t - * - gËn -, - -1066 * - gd©a - - -1069 -LOG_MSG -("netfs_attempt_read"); - -1071 -”rÜ_t - - g”r - = 0; - -1074 if( - gĹ --> - g --> - gpÜt - =đ -MACH_PORT_NULL -) - -1077 -node_t - * -dĹ -; - -1080 - g”r - = -n˙che_node_lookup -( -Ĺ --> - --> -Ęode --> -dś -, & -dĹ -); - -1083 -asŁą -(! -”r -); - -1086 -mach_pÜt_t - - gp - = -fže_Çme_lookup_und” - - -1087 ( -dĹ --> - --> -pÜt -, - gĹ --> - g --> - gĘode --> - gÇme -, - gO_READ -, 0); - -1090 -Ătfs_Ĺut -( -dĹ -); - -1092 if(! - gp -) - -1093  - gEBADF -; - -1096 - gĹ --> - g --> - gpÜt - = -p -; - -1100 - g”r - = -io_»ad -( -Ĺ --> - --> -pÜt -, (**)& -d©a -, -Ën -, -offŁt -, *len); - -1103  - g”r -; - -1107 -”rÜ_t - - -1108 - gĂtfs_©‹m±_wr™e - - -1110  -iouŁr - * - güed -, - -1111  -node - * - gnode -, - -1112 -loff_t - - goffŁt -, - -1113 -size_t - * - gËn -, - -1114 * - gd©a - - -1117 -LOG_MSG -("netfs_attempt_write"); - -1124 - gĂtfs_node_nÜefs - - -1126  -node - * - gĹ - - -1130 -node_deˇroy -( -Ĺ -); - -1135 - gmaš - - -1137  - g¬gc -, - -1138 ** - g¬gv - - -1142 -INIT_LOG -(); - -1143 -LOG_MSG -(">> Starting initialization..."); - -1146 -mach_pÜt_t - - gbo١żp_pÜt -; - -1148 -”rÜ_t - - g”r - = 0; - -1151 -¬gp_·rŁ -(& -¬gp_ˇ¬tup -, -¬gc -, -¬gv -, -ARGP_IN_ORDER -, 0, 0); - -1152 -LOG_MSG -("Command†ine‡rguments…arsed."); - -1155 - g”r - = -node_ü—‹_roŮ -(& -Ătfs_roŮ_node -); - -1156 if( - g”r -) - -1157 -”rÜ -( -EXIT_FAILURE -, -”r -, "Failedo createhe„oot‚ode"); - -1158 -LOG_MSG -("Root‚ode created."); - -1161 -Źsk_g‘_bo١żp_pÜt -( -mach_Źsk_Łlf -(), & -bo١żp_pÜt -); - -1164 -Ătfs_š™ -(); - -1167 - gund”lyšg_node - = -Ătfs_ˇ¬tup -( -bo١żp_pÜt -, -O_READ -); - -1168 -LOG_MSG -("netfs initialization complete."); - -1171 - g”r - = -node_š™_roŮ -( -Ătfs_roŮ_node -); - -1172 if( - g”r -) - -1173 -”rÜ -( -EXIT_FAILURE -, -”r -, "Failedo initializehe„oot‚ode"); - -1174 -LOG_MSG -("Root‚ode initialized."); - -1175 -LOG_MSG -("\tRoŮ‚odadd»ss: 0x%lX", () -Ătfs_roŮ_node -); - -1178 - g”r - = -m­time_m­ -(0, 0, & -m­time -); - -1179 if( - g”r -) - -1180 -”rÜ -( -EXIT_FAILURE -, -”r -, "Failedo mapheime"); - -1181 -LOG_MSG -("Time mapped."); - -1184 -n˙che_š™ -( -n˙che_size -); - -1185 -LOG_MSG -("Cache initialized."); - -1188 - g”r - = -io_ˇ© -( -und”lyšg_node -, & -und”lyšg_node_ˇ© -); - -1189 if( - g”r -) - -1190 -”rÜ -( -EXIT_FAILURE -, -”r -, - -1192 -LOG_MSG -("Stat information for undelying‚ode obtained."); - -1195 - gfsid - = -g‘pid -(); - -1198 - gĂtfs_roŮ_node --> - gÂ_ˇ© - = -und”lyšg_node_ˇ© -; - -1200 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_šo - = -FILTERFS_ROOT_INODE -; - -1201 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_fsid - = -fsid -; - -1202 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_mode - = -S_IFDIR - | ( -und”lyšg_node_ˇ© -. -ˇ_mode - - -1203 & ~ -S_IFMT - & ~ -S_ITRANS -); - -1205 - gĂtfs_roŮ_node --> - gÂ_ŚŞ¦©ed - = -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_mode -; - -1209 if(! -S_ISDIR -( -und”lyšg_node_ˇ© -. -ˇ_mode -)) - -1212 if( - gund”lyšg_node_ˇ© -. - gˇ_mode - & - gS_IRUSR -) - -1214 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_mode - |đ -S_IXUSR -; - -1216 if( - gund”lyšg_node_ˇ© -. - gˇ_mode - & - gS_IRGRP -) - -1218 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_mode - |đ -S_IXGRP -; - -1220 if( - gund”lyšg_node_ˇ© -. - gˇ_mode - & - gS_IROTH -) - -1222 - gĂtfs_roŮ_node --> - gÂ_ˇ© -. - gˇ_mode - |đ -S_IXOTH -; - -1226 - gfsh–p_touch - - -1227 (& - gĂtfs_roŮ_node --> - gÂ_ˇ© -, - gTOUCH_ATIME - | - gTOUCH_MTIME - | - gTOUCH_CTIME -, - -1228 - gm­time -); - -1230 -LOG_MSG -(">> Initialization complete. Entering‚etfs server†oop..."); - -1234 -Ătfs_Łrv”_loÝ -(); - - @filterfs.h - -26 #iâdeŕ -__FILTERFS_H__ - - -27  - #__FILTERFS_H__ - - - ) - -29  - ~<ˇddef.h -> - -30  - ~<ˇdlib.h -> - -31  - ~<ůh»ads.h -> - -32  - ~ - -33  - ~ - -34  - ~ - -35  - ~ - -36  - ~ - -37  - ~ - -38  - ~ - -39  - ~ - -41  - ~"lib.h -" - -42  - ~"node.h -" - -48  - #FILTERFS_ROOT_INODE - 1 - - ) - -55 vŢ©ž -m­łd_time_v®ue - * -m­time -; - -58 -mach_pÜt_t - -und”lyšg_node -; - -61 -io_ˇ©buf_t - -und”lyšg_node_ˇ© -; - -67  - sfž‹rfs_dś_’Śy - - -69 * - mÇme -; - -70 -size_t - - mhv -; - -72  -node - * - mnode -; - -75  -ˇ© - - mˇ© -; - -77 * - msymlšk_Źrg‘ -; - -79 -time_t - - mˇ©_timeˇamp -; - -82  -fž‹rfs_dś - * - mdś -; - -88  -fž‹rfs_dś_’Śy - * - mĂxt -, ** - mŁlf_p -; - -92  -fž‹rfs_dś_’Śy - * - mÜd”ed_Ăxt -, ** - mÜd”ed_Łlf_p -; - -95 -time_t - - mÇme_timeˇamp -; - -98 -hurd_ihash_loý_t - - mšode_loý -; - -101  - mnŰÁ - : 1; - -104  - mv®id - : 1; - -108  - sfž‹rfs_dś - - -111 -size_t - - mnum_’Ś›s -; - -116 -size_t - - mnum_live_’Ś›s -; - -119  -fž‹rfs_dś_’Śy - ** - mhŹbË -; - -120 -size_t - - mhŹbË_Ën -; - -126  -fž‹rfs_dś_’Śy - * - mÜd”ed -; - -129  -node - * - mnode -; - -132  -fž‹rfs - * - mfs -; - -135 -time_t - - mÇme_timeˇamp -; - -138 -hurd_ihash_loý_t - - mšode_loý -; - -145 -time_t - - mbuld_ˇ©_baŁ_ˇamp -; - -149  - mbulk_ˇ©_couÁ_fśˇ_h®f -; - -154  - mbulk_ˇ©_couÁ_ŁcÚd_h®f -; - -158  - sfž‹rfs - - -161  -node - * - mroŮ -; - -165 -šo_t - - mĂxt_šode -; - -168  - mfsid -; - -171  -hurd_ihash - - mšode_m­pšgs -; - -174 -Ąš_lock_t - - mšode_m­pšgs_lock -; - -181 -”rÜ_t - - -182 - gĂtfs_©‹m±_ü—‹_fže - - -184  -iouŁr - * - guŁr -, - -185  -node - * - gdś -, - -186 * - gÇme -, - -187 -mode_t - - gmode -, - -188  -node - ** - gnode - - -193 -”rÜ_t - - -194 - gĂtfs_check_Ý’_łrmissiÚs - - -196  -iouŁr - * - guŁr -, - -197  -node - * - gĹ -, - -198  - gćags -, - -199  - gĂwnode - - -203 -”rÜ_t - - -204 - gĂtfs_©‹m±_utimes - - -206  -iouŁr - * - güed -, - -207  -node - * - gnode -, - -208  -timeĄec - * - g©ime -, - -209  -timeĄec - * - gmtime - - -213 -”rÜ_t - - -214 - gĂtfs_»pÜt_acűss - - -216  -iouŁr - * - güed -, - -217  -node - * - gĹ -, - -218 * - gtyłs - - -222 -”rÜ_t - - -223 - gĂtfs_v®id©e_ˇ© - - -225  -node - * - gĹ -, - -226  -iouŁr - * - güed - - -230 -”rÜ_t - - -231 - gĂtfs_©‹m±_sync - - -233  -iouŁr - * - güed -, - -234  -node - * - gnode -, - -235  - gwa™ - - -239 -”rÜ_t - - -240 - gĂtfs_g‘_dś’ts - - -242  -iouŁr - * - güed -, - -243  -node - * - gdś -, - -244  - gfśˇ_’Śy -, - -245  - gnum_’Ś›s -, - -246 ** - gd©a -, - -247 -mach_msg_tył_numb”_t - * - gd©a_Ën -, - -248 -vm_size_t - - gmax_d©a_Ën -, - -249 * - gd©a_’Ś›s - - -253 -”rÜ_t - - -254 - gĂtfs_©‹m±_lookup - - -256  -iouŁr - * - guŁr -, - -257  -node - * - gdś -, - -258 * - gÇme -, - -259  -node - ** - gnode - - -263 -”rÜ_t - - -264 - gĂtfs_©‹m±_uĆšk - - -266  -iouŁr - * - guŁr -, - -267  -node - * - gdś -, - -268 * - gÇme - - -272 -”rÜ_t - - -273 - gĂtfs_©‹m±_»Çme - - -275  -iouŁr - * - guŁr -, - -276  -node - * - gäomdś -, - -277 * - gäomÇme -, - -278  -node - * - gtodś -, - -279 * - gtÚame -, - -280  - gexţ - - -284 -”rÜ_t - - -285 - gĂtfs_©‹m±_mkdś - - -287  -iouŁr - * - guŁr -, - -288  -node - * - gdś -, - -289 * - gÇme -, - -290 -mode_t - - gmode - - -294 -”rÜ_t - - -295 - gĂtfs_©‹m±_rmdś - - -297  -iouŁr - * - guŁr -, - -298  -node - * - gdś -, - -299 * - gÇme - - -303 -”rÜ_t - - -304 - gĂtfs_©‹m±_chown - - -306  -iouŁr - * - güed -, - -307  -node - * - gnode -, - -308 -uid_t - - guid -, - -309 -uid_t - - ggid - - -313 -”rÜ_t - - -314 - gĂtfs_©‹m±_chauthÜ - - -316  -iouŁr - * - güed -, - -317  -node - * - gnode -, - -318 -uid_t - - gauthÜ - - -322 -”rÜ_t - - -323 - gĂtfs_©‹m±_chmod - - -325  -iouŁr - * - guŁr -, - -326  -node - * - gnode -, - -327 -mode_t - - gmode - - -331 -”rÜ_t - - -332 - gĂtfs_©‹m±_mksymlšk - - -334  -iouŁr - * - güed -, - -335  -node - * - gnode -, - -336 * - gÇme - - -340 -”rÜ_t - - -341 - gĂtfs_©‹m±_mkdev - - -343  -iouŁr - * - güed -, - -344  -node - * - gnode -, - -345 -mode_t - - gtył -, - -346 -dev_t - - gšdexes - - -350 -”rÜ_t - - -351 - gĂtfs_Łt_ŚŞ¦©Ü - - -353  -iouŁr - * - güed -, - -354  -node - * - gnode -, - -355 * - g¬gz -, - -356 -size_t - - g¬gËn - - -360 -”rÜ_t - - -361 - gĂtfs_©‹m±_chćags - - -363  -iouŁr - * - güed -, - -364  -node - * - gnode -, - -365  - gćags - - -369 -”rÜ_t - - -370 - gĂtfs_©‹m±_Łt_size - - -372  -iouŁr - * - güed -, - -373  -node - * - gnode -, - -374 -loff_t - - gsize - - -378 -”rÜ_t - - -379 - gĂtfs_©‹m±_ˇ©fs - - -381  -iouŁr - * - güed -, - -382  -node - * - gnode -, - -383 -fsys_ˇ©fsbuf_t - * - gˇ - - -387 -”rÜ_t - - -388 - gĂtfs_©‹m±_syncfs - - -390  -iouŁr - * - güed -, - -391  - gwa™ - - -395 -”rÜ_t - - -396 - gĂtfs_©‹m±_lšk - - -398  -iouŁr - * - guŁr -, - -399  -node - * - gdś -, - -400  -node - * - gfže -, - -401 * - gÇme -, - -402  - gexţ - - -406 -”rÜ_t - - -407 - gĂtfs_©‹m±_mkfže - - -409  -iouŁr - * - guŁr -, - -410  -node - * - gdś -, - -411 -mode_t - - gmode -, - -412  -node - ** - gnode - - -416 -”rÜ_t - - -417 - gĂtfs_©‹m±_»adlšk - - -419  -iouŁr - * - guŁr -, - -420  -node - * - gnode -, - -421 * - gbuf - - -425 -”rÜ_t - - -426 - gĂtfs_©‹m±_»ad - - -428  -iouŁr - * - güed -, - -429  -node - * - gĹ -, - -430 -loff_t - - goffŁt -, - -431 -size_t - * - gËn -, - -432 * - gd©a - - -436 -”rÜ_t - - -437 - gĂtfs_©‹m±_wr™e - - -439  -iouŁr - * - güed -, - -440  -node - * - gnode -, - -441 -loff_t - - goffŁt -, - -442 -size_t - * - gËn -, - -443 * - gd©a - - -448 - gĂtfs_node_nÜefs - - -450  -node - * - gĹ - - - @lib.c - -28  - #_GNU_SOURCE - 1 - - ) - -30  - ~ - -32  - ~"lib.h -" - -33  - ~"debug.h -" - -39 -”rÜ_t - - -40 - gdś_’Ś›s_g‘ - - -42 -fže_t - - gdś -, - -43 ** - gdś’t_d©a -, - -45 -size_t - * - gdś’t_d©a_size -, - -46  -dś’t - *** - gdś’t_liˇ - - -50 -”rÜ_t - - g”r - = 0; - -53 * - gd©a -; - -56 -size_t - - gd©a_size -; - -59  - g’Ś›s_num -; - -62 - g”r - = -dś_»addś -( -dś -, & -d©a -, & -d©a_size -, 0, -1, 0, & -’Ś›s_num -); - -63 if( - g”r -) - -64  - g”r -; - -67  -dś’t - ** - gliˇ -; - -71 - gliˇ - = -m®loc -(( -dś’t - *č* ( -’Ś›s_num - + 1)); - -74 if(! - gliˇ -) - -77 -munm­ -( -d©a -, -d©a_size -); - -80  - gENOMEM -; - -84  -dś’t - * - gdp -; - -86  - gi -; - -91 - gi - = 0, - gdp - = ( -dś’t - *) -d©a -; - -92 - gi - < - g’Ś›s_num -; - -93 ++ - gi -, - gdp - = ( -dś’t - *)((*) -dp - + dp-> -d_»ţ’ -)) - -95 *( -liˇ - + -i -čđ -dp -; - -98 *( - gliˇ - + - gi -čđ -NULL -; - -101 * - gdś’t_d©a - = -d©a -; - -102 * - gdś’t_d©a_size - = -d©a_size -; - -103 * - gdś’t_liˇ - = -liˇ -; - -106  - g”r -; - -110 -”rÜ_t - - -111 - gfže_lookup - - -113 -fže_t - - gdś -, - -114 * - gÇme -, - -115  - gćags0 -, - -116  - gćags1 -, - -117  - gmode -, - -118 -fže_t - * - gpÜt -, - -119 -io_ˇ©buf_t - * - gˇ© - - -122 -”rÜ_t - - g”r - = 0; - -125 -fže_t - - gp -; - -128 -io_ˇ©buf_t - - gs -; - -131 -fže_t - - -132 - gdo_fže_lookup - - -134 -fže_t - - gdś -, - -135 * - gÇme -, - -136  - gćags -, - -137  - gmode - - -141 -fže_t - - gp -; - -144 if( - gdś - !đ -MACH_PORT_NULL -) - -146 -p - = -fže_Çme_lookup_und” -( -dś -, -Çme -, -ćags -, -mode -); - -149 - gp - = -fže_Çme_lookup -( -Çme -, -ćags -, -mode -); - -152  - gp -; - -156 - gp - = -do_fže_lookup -( -dś -, -Çme -, -ćags0 -, -mode -); - -159 if( - gp - =đ -MACH_PORT_NULL -) - -161 -p - = -do_fže_lookup -( -dś -, -Çme -, -ćags1 -, -mode -); - -164 if( - gp - !đ -MACH_PORT_NULL -) - -167 if( -ˇ© -) - -170 -”r - = -io_ˇ© -( -p -, & -s -); - -171 if( - g”r -) - -172 -PORT_DEALLOC -( -p -); - -177 - g”r - = -”şo -; - -180 if(! - g”r -) - -183 * - gpÜt - = -p -; - -186 if( - gˇ© -) - -187 * - gˇ© - = -s -; - -191  - g”r -; - - @lib.h - -26 #iâdeŕ -__LIB_H__ - - -27  - #__LIB_H__ - - - ) - -30  - #__USE_FILE_OFFSET64 - - - ) - -32  - ~ - -33  - ~ - -34  - ~<ˇddef.h -> - -40  - #DIRENT_ALIGN - 4 - - ) - -43  - #DIRENT_NAME_OFFS - - `offŁtof -( -dś’t -, -d_Çme -) - - ) - -47  - #DIRENT_LEN -( -Çme_Ën -)\ - -48 (( -DIRENT_NAME_OFFS - + ( -Çme_Ën -č+ 1 + -DIRENT_ALIGN - - 1) &\ - -49 ~( -DIRENT_ALIGN - - 1)) - - ) - -52  - #PORT_DEALLOC -( -p -č( - `mach_pÜt_d—Îo˙‹ -( - `mach_Źsk_Łlf -(), (p))) - - ) - -58 -”rÜ_t - - -59 - gdś_’Ś›s_g‘ - - -61 -fže_t - - gdś -, - -62 ** - gdś’t_d©a -, - -64 -size_t - * - gdś’t_d©a_size -, - -65  -dś’t - *** - gdś’t_liˇ - - -70 -”rÜ_t - - -71 - gfže_lookup - - -73 -fže_t - - gdś -, - -74 * - gÇme -, - -75  - gćags0 -, - -76  - gćags1 -, - -77  - gmode -, - -78 -fže_t - * - gpÜt -, - -79 -io_ˇ©buf_t - * - gˇ© - - - @lnode.c - -28  - #_GNU_SOURCE - - - ) - -30  - ~"Ęode.h -" - -31  - ~"debug.h -" - -38 - gĘode_»f_add - - -40 -Ęode_t - * - gnode - - -44 ++ - gnode --> - g»ă»nűs -; - -50 - gĘode_»f_»move - - -52 -Ęode_t - * - gnode - - -56 -asŁą -( -node --> -»ă»nűs -); - -59 -- - gnode --> - g»ă»nűs -; - -62 if( - gnode --> - g»ă»nűs - == 0) - -65 -Ęode_unšˇ®l -( -node -); - -66 -Ęode_deˇroy -( -node -); - -70 -mu‹x_uĆock -(& -node --> -lock -); - -75 -”rÜ_t - - -76 - gĘode_ü—‹ - - -78 * - gÇme -, - -79 -Ęode_t - ** - gnode - - -83 -Ęode_t - * - gnode_Ăw - = -m®loc -((lnode_t)); - -86 if(! - gnode_Ăw -) - -89  - gENOMEM -; - -93 * - gÇme_ý - = -NULL -; - -96 if( - gÇme -) - -99 - gÇme_ý - = -ˇrdup -( -Çme -); - -102 if(! - gÇme_ý -) - -105 -ä“ -( -node_Ăw -); - -108  - gENOMEM -; - -113 -memŁt -( -node_Ăw -, 0, ( -Ęode_t -)); - -114 - gnode_Ăw --> - gÇme - = -Çme_ý -; - -115 - gnode_Ăw --> - gÇme_Ën - = ( -Çme_ý -č? ( -ˇľ’ -(name_cp)) : (0); - -118 - gnode_Ăw --> - g»ă»nűs - = 1; - -121 -mu‹x_š™ -(& -node_Ăw --> -lock -); - -122 -mu‹x_lock -(& -node_Ăw --> -lock -); - -125 * - gnode - = -node_Ăw -; - -133 - gĘode_deˇroy - - -135 -Ęode_t - * - gnode - - -139 -ä“ -( -node --> -Çme -); - -142 -ä“ -( -node -); - -147 -”rÜ_t - - -148 - gĘode_·th_cÚˇruů - - -150 -Ęode_t - * - gnode -, - -151 ** - g·th - - -154 -”rÜ_t - - g”r - = 0; - -157 * - gp -; - -160  - gp_Ën - = 0; - -163 -Ęode_t - * - gn -; - -166  - gn - = -node -;‚ &&‚-> - gdś -;‚ = -n --> -dś -) - -172 -p_Ën - +đ -n --> -Çme_Ën - + 1; - -176 - gp_Ën - +đ -ˇľ’ -( -n --> -·th -) + 1; - -179 - gp - = -m®loc -( -p_Ën - * ()); - -180 if(! - gp -) - -181 - g”r - = -ENOMEM -; - -186 - gp -[-- -p_Ën -] = 0; - -189  - gn - = -node -;‚ &&‚-> - gdś -;‚ = -n --> -dś -) - -192 -p_Ën - -đ -n --> -Çme_Ën -; - -195 -ˇşýy -( -p - + -p_Ën -, -n --> -Çme -,‚-> -Çme_Ën -); - -202 - gp -[-- -p_Ën -] = '/'; - -207 -ˇşýy -( -p -, -n --> -·th -, -ˇľ’ -(n->path)); - -210 if( - gnode --> - g·th -) - -211 -ä“ -( -node --> -·th -); - -214 - gnode --> - g·th - = -p -; - -217 if( - g·th -) - -218 * - g·th - = -p -; - -222  - g”r -; - -226 -”rÜ_t - - -227 - gĘode_g‘ - - -229 -Ęode_t - * - gdś -, - -230 * - gÇme -, - -231 -Ęode_t - ** - gnode - - -234 -”rÜ_t - - g”r - = 0; - -237 -Ęode_t - * - gn -; - -240  - gn - = -dś --> -’Ś›s -;‚ && ( -ˇrcmp -( -n --> -Çme -,‚ameč!đ0);‚ =‚-> -Ăxt -); - -243 if( - gn -) - -246 -mu‹x_lock -(& -n --> -lock -); - -249 -Ęode_»f_add -( -n -); - -252 * - gnode - = -n -; - -255 - g”r - = -ENOENT -; - -258  - g”r -; - -264 - gĘode_šˇ®l - - -266 -Ęode_t - * - gdś -, - -267 -Ęode_t - * - gnode - - -271 - gnode --> - gĂxt - = -dś --> -’Ś›s -; - -272 - gnode --> - g´evp - = & -dś --> -’Ś›s -; - -273 if( - gdś --> - g’Ś›s -) - -274 - gdś --> - g’Ś›s --> - g´evp - = & -node --> -Ăxt -; - -276 - gdś --> - g’Ś›s - = -node -; - -279 -Ęode_»f_add -( -dś -); - -282 - gnode --> - gdś - = -dś -; - -288 - gĘode_unšˇ®l - - -290 -Ęode_t - * - gnode - - -294 -Ęode_»f_»move -( -node --> -dś -); - -298 * - gnode --> - g´evp - = -node --> -Ăxt -; - -302 if( - gnode --> - gĂxt -) - -303 - gnode --> - gĂxt --> - g´evp - = & -node --> -Ăxt -; - - @lnode.h - -26 #iâdeŕ -__LNODE_H__ - - -27  - #__LNODE_H__ - - - ) - -30  - ~<”rÜ.h -> - -31  - ~ - -36  -node - - tnode_t -; - -39  - sĘode - - -42 * - mÇme -; - -46 -size_t - - mÇme_Ën -; - -49 * - m·th -; - -52  - mćags -; - -55  - m»ă»nűs -; - -58 -node_t - * - mnode -; - -61  -Ęode - * - mĂxt -, ** - m´evp -; - -64  -Ęode - * - mdś -; - -67  -Ęode - * - m’Ś›s -; - -70  -mu‹x - - mlock -; - -73  -Ęode - - tĘode_t -; - -80 - gĘode_»f_add - - -82 -Ęode_t - * - gnode - - -88 - gĘode_»f_»move - - -90 -Ęode_t - * - gnode - - -95 -”rÜ_t - - -96 - gĘode_ü—‹ - - -98 * - gÇme -, - -99 -Ęode_t - ** - gnode - - -104 - gĘode_deˇroy - - -106 -Ęode_t - * - gnode - - -111 -”rÜ_t - - -112 - gĘode_·th_cÚˇruů - - -114 -Ęode_t - * - gnode -, - -115 ** - g·th - - -119 -”rÜ_t - - -120 - gĘode_g‘ - - -122 -Ęode_t - * - gdś -, - -123 * - gÇme -, - -124 -Ęode_t - ** - gnode - - -130 - gĘode_šˇ®l - - -132 -Ęode_t - * - gdś -, - -133 -Ęode_t - * - gnode - - -138 - gĘode_unšˇ®l - - -140 -Ęode_t - * - gnode - - - @ncache.c - -28  - #_GNU_SOURCE - 1 - - ) - -30  - ~"n˙che.h -" - -36 -n˙che_t - - gn˙che -; - -39  - gn˙che_size - = -NCACHE_SIZE -; - -46 - gn˙che_š™ - - -48  - gsize_max - - -52 - gn˙che -. - gmru - = -n˙che -. -Ěu - = -NULL -; - -55 - gn˙che -. - gsize_max - = -size_max -; - -58 - gn˙che -. - gsize_cuĽ’t - = 0; - -61 -mu‹x_š™ -(& -n˙che -. -lock -); - -66 -”rÜ_t - - -67 - gn˙che_node_lookup - - -69 -Ęode_t - * - gĘode -, - -70 -node_t - ** - gnode - - -73 -”rÜ_t - - g”r - = 0; - -76 -node_t - * - gn - = -Ęode --> -node -; - -79 if( - gn - !đ -NULL -) - -82 -Ătfs_Äef -( -n -); - -87 - g”r - = -node_ü—‹ -( -Ęode -, & -n -); - -91 if(! - g”r -) - -94 -mu‹x_lock -(& -n --> -lock -); - -97 * - gnode - = -n -; - -101  - g”r -; - -107 - gn˙che_node_»move - - -109 -node_t - * - gnode - - -114  -ĂŠode - * - g - = -node --> - -; - -117 if( - g --> - gn˙che_Ăxt -) - -119 - g --> - gn˙che_Ăxt -->Â-> - gn˙che_´ev - = - --> -n˙che_´ev -; - -121 if( - g --> - gn˙che_´ev -) - -123 - g --> - gn˙che_´ev -->Â-> - gn˙che_Ăxt - = - --> -n˙che_Ăxt -; - -126 if( - gn˙che -. - gmru - =đ -node -) - -128 -n˙che -. -mru - = - --> -n˙che_Ăxt -; - -130 if( - gn˙che -. - gĚu - =đ -node -) - -132 -n˙che -. -Ěu - = - --> -n˙che_´ev -; - -135 - g --> - gn˙che_Ăxt - = - --> -n˙che_´ev - = -NULL -; - -138 -- - gn˙che -. - gsize_cuĽ’t -; - -143 - $n˙che_»Łt -() - -146 -node_t - * -node -; - -149 - `mu‹x_lock -(& -n˙che -. -lock -); - -152  -node - = -n˙che -. -mru -;‚od!đ -NULL -; - `n˙che_node_»move -(node),‚ode =‚cache.mru); - -155 - `mu‹x_uĆock -(& -n˙che -. -lock -); - -156 - } -} - -160 - gn˙che_node_add - - -162 -node_t - * - gnode - - -166 -mu‹x_lock -(& -n˙che -. -lock -); - -169 if(( - gn˙che -. - gsize_max - > 0č|| (n˙che. - gsize_cuĽ’t - > 0)) - -172 if( - gn˙che -. - gmru - !đ -node -) - -175 if(( -node --> - --> -n˙che_Ăxt - !đ -NULL -č&& (node->Â-> -n˙che_´ev - != NULL)) - -177 -n˙che_node_»move -( -node -); - -180 -Ătfs_Äef -( -node -); - -183 - gnode --> - g --> - gn˙che_Ăxt - = -n˙che -. -mru -; - -184 - gnode --> - g --> - gn˙che_´ev - = -NULL -; - -187 if( - gn˙che -. - gmru - !đ -NULL -) - -188 -n˙che -. -mru --> - --> -n˙che_´ev - = -node -; - -191 if( - gn˙che -. - gĚu - =đ -NULL -) - -192 -n˙che -. -Ěu - = -node -; - -195 - gn˙che -. - gmru - = -node -; - -198 ++ - gn˙che -. - gsize_cuĽ’t -; - -203 -node_t - * - gŢd_Ěu -; - -206 - gŢd_Ěu - = -n˙che -. -Ěu -; - -207 - gn˙che -. - gsize_cuĽ’t - >‚˙che. - gsize_max -; - -208 - gŢd_Ěu - = -n˙che -. -Ěu - - -212 -n˙che_node_»move -( -Ţd_Ěu -); - -215 -Ătfs_Ä–e -( -Ţd_Ěu -); - -219 -mu‹x_uĆock -(& -n˙che -. -lock -); - - @ncache.h - -26 #iâdeŕ -__NCACHE_H__ - - -27  - #__NCACHE_H__ - - - ) - -30  - ~<”rÜ.h -> - -31  - ~ - -33  - ~"node.h -" - -39  - #NCACHE_SIZE - 256 - - ) - -44  - sn˙che - - -47 -node_t - * - mmru -; - -50 -node_t - * - mĚu -; - -53  - msize_max -; - -56  - msize_cuĽ’t -; - -59  -mu‹x - - mlock -; - -62  -n˙che - - tn˙che_t -; - -68  -˙che_size -; - -75 - gn˙che_š™ - - -77  - gsize_max - - -82 -”rÜ_t - - -83 - gn˙che_node_lookup - - -85 -Ęode_t - * - gĘode -, - -86 -node_t - ** - gnode - - -91 -n˙che_»Łt -(); - -95 - gn˙che_node_add - - -97 -node_t - * - gnode - - - @node.c - -28  - #_GNU_SOURCE - 1 - - ) - -30  - ~<ˇdlib.h -> - -31  - ~ - -32  - ~ - -33  - ~ - -34  - ~<ˇdio.h -> - -36  - ~"debug.h -" - -37  - ~"node.h -" - -38  - ~"ÝtiÚs.h -" - -39  - ~"lib.h -" - -40  - ~"fž‹rfs.h -" - -46  -mu‹x - - gulfs_lock - = -MUTEX_INITIALIZER -; - -52 -”rÜ_t - - -53 - gnode_ü—‹ - - -55 -Ęode_t - * - gĘode -, - -56 -node_t - ** - gnode - - -59 -”rÜ_t - - g”r - = 0; - -62 -ĂŠode_t - * - gĂŠode_Ăw - = -m®loc -((netnode_t)); - -65 if( - gĂŠode_Ăw - =đ -NULL -) - -66 -”r - = -ENOMEM -; - -70 -node_t - * - gnode_Ăw - = -Ătfs_make_node -( -ĂŠode_Ăw -); - -73 if( - gnode_Ăw - =đ -NULL -) - -76 -”r - = -ENOMEM -; - -79 -ä“ -( -ĂŠode_Ăw -); - -82  - g”r -; - -86 - gĘode --> - gnode - = -node_Ăw -; - -87 -Ęode_»f_add -( -Ęode -); - -90 - gnode_Ăw --> - g --> - gĘode - = -Ęode -; - -91 - gnode_Ăw --> - g --> - gćags - = 0; - -92 - gnode_Ăw --> - g --> - gn˙che_Ăxt - = -node_Ăw --> - --> -n˙che_´ev - = -NULL -; - -95 * - gnode - = -node_Ăw -; - -99  - g”r -; - -105 - gnode_deˇroy - - -107 -node_t - * - gĹ - - -111 -asŁą -(! -Ĺ --> - --> -n˙che_Ăxt - || !Ĺ->Â-> -n˙che_´ev -); - -114 -PORT_DEALLOC -( -Ĺ --> - --> -pÜt -); - -117 -mu‹x_lock -(& -Ĺ --> - --> -Ęode --> -lock -); - -120 - gĹ --> - g --> - gĘode --> - gnode - = -NULL -; - -123 -Ęode_»f_»move -( -Ĺ --> - --> -Ęode -); - -126 -ä“ -( -Ĺ --> - -); - -127 -ä“ -( -Ĺ -); - -131 -”rÜ_t - - -132 - gnode_ü—‹_roŮ - - -134 -node_t - ** - groŮ_node - - -138 -Ęode_t - * - gĘode -; - -139 -”rÜ_t - - g”r - = -Ęode_ü—‹ -( -NULL -, & -Ęode -); - -142 if( - g”r -) - -143  - g”r -; - -146 -node_t - * - gnode -; - -147 - g”r - = -node_ü—‹ -( -Ęode -, & -node -); - -150 if( - g”r -) - -153 -Ęode_deˇroy -( -Ęode -); - -156  - g”r -; - -160 -mu‹x_uĆock -(& -Ęode --> -lock -); - -163 * - groŮ_node - = -node -; - -166  - g”r -; - -170 -”rÜ_t - - -171 - gnode_š™_roŮ - - -173 -node_t - * - gnode - - -176 -”rÜ_t - - g”r - = 0; - -179 -mu‹x_lock -(& -ulfs_lock -); - -182 - gnode --> - g --> - gpÜt - = -fže_Çme_lookup -( -dś -, -O_READ - | -O_DIRECTORY -, 0); - -185 if( - gnode --> - g --> - gpÜt - =đ -MACH_PORT_NULL -) - -188 -”r - = -”şo -; - -189 -LOG_MSG -("node_š™_roŮ: Could‚Ů ołŔthpÜfÜ %s.", -dś -); - -192 -mu‹x_uĆock -(& -ulfs_lock -); - -193  - g”r -; - -196 -LOG_MSG -("node_š™_roŮ: PÜfÜ % Ý’ed sucűssfuÎy.", -dś -); - -197 -LOG_MSG -("\tPÜt: 0x%lX", () -node --> - --> -pÜt -); - -200 - g”r - = -io_ˇ© -( -node --> - --> -pÜt -, &node-> -Â_ˇ© -); - -201 if( - g”r -) - -204 -PORT_DEALLOC -( -node --> - --> -pÜt -); - -206 -LOG_MSG -("node_init_root: Could‚ot stathe„oot‚ode."); - -209 -mu‹x_uĆock -(& -ulfs_lock -); - -210  - g”r -; - -214 - gnode --> - g --> - gĘode --> - g·th - = -ˇrdup -( -dś -); - -215 if(! - gnode --> - g --> - gĘode --> - g·th -) - -218 -PORT_DEALLOC -( -node --> - --> -pÜt -); - -221 -mu‹x_uĆock -(& -ulfs_lock -); - -223 -LOG_MSG -("node_init_root: Could‚ot strduphe directory."); - -224  - gENOMEM -; - -228 * - gp - = -dś - + -ˇľ’ -(dir); - -231 ; - gp - >đ -dś -; --p) - -234 if(* - gp - == '/') - -237 if( -p - > -dś -) - -240 if(*( -p - - 1) == '\\') - -245 ++ - gp -; - -252 -LOG_MSG -("node_š™_roŮ: ThÇmoŕroŮ‚odi %s.", -p -); - -255 - gnode --> - g --> - gĘode --> - gÇme - = -ˇrdup -( -p -); - -257 if(! - gnode --> - g --> - gĘode --> - gÇme -) - -260 -ä“ -( -node --> - --> -Ęode --> -·th -); - -261 -PORT_DEALLOC -( -node --> - --> -pÜt -); - -264 -mu‹x_uĆock -(& -ulfs_lock -); - -266 -LOG_MSG -("node_init_root: Could‚ot strduphe‚ame ofhe„oot‚ode."); - -267  - gENOMEM -; - -271 - gnode --> - g --> - gĘode --> - gÇme_Ën - = -ˇľ’ -( -p -); - -274 -mu‹x_uĆock -(& -ulfs_lock -); - -277  - g”r -; - -282 - gnode_’Ś›s_ä“ - - -284 -node_dś’t_t - * - gdś’ts - - -288 -node_dś’t_t - * - gdś’t -, * - gdś’t_Ăxt -; - -291  - gdś’t - = -dś’ts -; dś’t; dś’đ -dś’t_Ăxt -) - -294 -dś’t_Ăxt - = -dś’t --> -Ăxt -; - -297 -ä“ -( -dś’t -->dirent); - -300 -ä“ -( -dś’t -); - -305 -”rÜ_t - - -306 - gnode_’Ś›s_g‘ - - -308 -node_t - * - gnode -, - -309 -node_dś’t_t - ** - gdś’ts - - -312 -”rÜ_t - - g”r - = 0; - -315 * - g·th_to_node - = -node --> - --> -Ęode --> -·th -; - -318  - g·żm_’Ś›s_couÁ - = 0; - -321 -size_t - - g´Ý”ty_Ën - = ( -´Ý”ty -č? ( -ˇľ’ -(property)) : (0); - -324 -size_t - - g´Ý”ty_·żm_Ën - = -ˇľ’ -( -PROPERTY_PARAM -); - -327 * - gfuÎ_Çme - = -NULL -, * - gcmd - = NULL; - -330 -size_t - - gfuÎ_Çme_size - = 1, - gcmd_size - = 1; - -333 if( - g´Ý”ty_Ën - != 0) - -336 * -occuĽ’ű - = -ˇrˇr -( -´Ý”ty -, -PROPERTY_PARAM -); - -339 ; - goccuĽ’ű -; - -340 - goccuĽ’ű - = -ˇrˇr -( -occuĽ’ű - + 1, -PROPERTY_PARAM -), - -341 ++ - g·żm_’Ś›s_couÁ -); - -344 - gfuÎ_Çme - = -m®loc -( -fuÎ_Çme_size - * -STRING_CHUNK -); - -345 if(! - gfuÎ_Çme -) - -346  - gENOMEM -; - -348 - gcmd - = -m®loc -( -cmd_size - * -STRING_CHUNK -); - -349 if(! - gcmd -) - -351 -ä“ -( -fuÎ_Çme -); - -352  - gENOMEM -; - -357 -size_t - - g·thËn - = -ˇľ’ -( -·th_to_node -); - -362 - gcheck_´Ý”ty - - -364 cÚˇ * - gÇme - - -368 if(! - g´Ý”ty -) - -373 - g”r - = 0; - -376 -size_t - - gfuÎ_Çme_Ën - = -·thËn - + 1 + -ˇľ’ -( -Çme -) + 1; - -379  - gchunks - = -fuÎ_Çme_size -; - -380 ; - gfuÎ_Çme_Ën - > -chunks - * - gSTRING_CHUNK -; ++ - gchunks -); - -383 if( - gchunks - > - gfuÎ_Çme_size -) - -386 -ä“ -( -fuÎ_Çme -); - -389 - gfuÎ_Çme - = -m®loc -( -chunks - * -STRING_CHUNK -); - -390 if(! - gfuÎ_Çme -) - -392 - g”r - = -ENOMEM -; - -393 -ä“ -( -cmd -); - -398 - gfuÎ_Çme_size - = -chunks -; - -402 - gfuÎ_Çme -[0] = 0; - -405 -ˇrýy -( -fuÎ_Çme -, -·th_to_node -); - -406 -ˇr˙t -( -fuÎ_Çme -, "/"); - -407 -ˇr˙t -( -fuÎ_Çme -, -Çme -); - -412 -size_t - - gsz - = -´Ý”ty_Ën - + ( -ˇľ’ -( -fuÎ_Çme -č- -´Ý”ty_·żm_Ën -) - -413 * -·żm_’Ś›s_couÁ -; - -416  - gchunks - = -cmd_size -; - gsz - > -chunks - * - gSTRING_CHUNK -; ++chunks); - -419 if( - gchunks - > - gcmd_size -) - -422 -ä“ -( -cmd -); - -425 - gcmd - = -m®loc -( -chunks - * -STRING_CHUNK -); - -426 if(! - gcmd -) - -428 - g”r - = -ENOMEM -; - -429 -ä“ -( -fuÎ_Çme -); - -435 - gcmd_size - = -chunks -; - -439 - gcmd -[0] = 0; - -442 * - gp - = -ˇrˇr -( -´Ý”ty -, -PROPERTY_PARAM -); - -445 * - g´Ýp - = -´Ý”ty -; - -448 ; - gp -;… = -ˇrˇr -( -´Ýp -, -PROPERTY_PARAM -)) - -451 -ˇş˙t -( -cmd -, -´Ýp -, -p - -…ropp); - -454 -ˇr˙t -( -cmd -, -fuÎ_Çme -); - -459 - g´Ýp - = -p - + -´Ý”ty_·żm_Ën -; - -465 -ˇr˙t -( -cmd -, -´Ýp -); - -470  - gxcode - = -WEXITSTATUS -( -syˇem -( -cmd -)); - -473  - gxcode -; - -477  -dś’t - ** - gdś’t_liˇ -, ** - gdś’t -; - -480 -node_dś’t_t - * - gnode_dś’t_liˇ - = -NULL -; - -483 -size_t - - gdś’t_d©a_size -; - -486 * - gdś’t_d©a -; - -489 - g”r - = -dś_’Ś›s_g‘ - - -490 ( -node --> - --> -pÜt -, & - gdś’t_d©a -, & - gdś’t_d©a_size -, & - gdś’t_liˇ -); - -491 if( - g”r -) - -493  - g”r -; - -497 -node_dś’t_t - * - gnode_dś’t_Ăw -; - -500  -dś’t - * - gdś’t_Ăw -; - -505 * - gÇme -; - -508 -size_t - - gÇme_Ën -; - -511 -size_t - - gsize -; - -514  - ggood -; - -517  - gdś’t - = -dś’t_liˇ -; *dirent; ++dirent) - -520 - gÇme - = &((* -dś’t -)-> -d_Çme -[0]); - -523 if(( -ˇrcmp -( -Çme -, ".") == 0) || (strcmp(name, "..") == 0)) - -527 - ggood - = -check_´Ý”ty -( -Çme -); - -528 if( - g”r -) - -532 if( - ggood - != 0) - -536 - gÇme_Ën - = -ˇľ’ -( -Çme -); - -539 - gsize - = -DIRENT_LEN -( -Çme_Ën -); - -542 - gnode_dś’t_Ăw - = -m®loc -(( -node_dś’t_t -)); - -543 if(! - gnode_dś’t_Ăw -) - -545 - g”r - = -ENOMEM -; - -550 - gdś’t_Ăw - = -m®loc -( -size -); - -551 if(! - gdś’t_Ăw -) - -553 -ä“ -( -node_dś’t_Ăw -); - -554 - g”r - = -ENOMEM -; - -559 - gdś’t_Ăw --> - gd_šo - = (* -dś’t -)-> -d_šo -; - -560 - gdś’t_Ăw --> - gd_tył - = (* -dś’t -)-> -d_tył -; - -561 - gdś’t_Ăw --> - gd_»ţ’ - = -size -; - -562 -ˇrýy -((*) -dś’t_Ăw - + -DIRENT_NAME_OFFS -, -Çme -); - -565 - gnode_dś’t_Ăw --> - gdś’t - = -dś’t_Ăw -; - -566 - gnode_dś’t_Ăw --> - gĂxt - = -node_dś’t_liˇ -; - -567 - gnode_dś’t_liˇ - = -node_dś’t_Ăw -; - -571 if( - g”r -) - -573 -node_’Ś›s_ä“ -( -node_dś’t_liˇ -); - -576 * - gdś’ts - = -node_dś’t_liˇ -; - -579 -ä“ -( -dś’t_liˇ -); - -582 -munm­ -( -dś’t_d©a -, -dś’t_d©a_size -); - -585 if( - gfuÎ_Çme -) - -586 -ä“ -( -fuÎ_Çme -); - -587 if( - gcmd -) - -588 -ä“ -( -cmd -); - -591  - g”r -; - -596 -”rÜ_t - - -597 - gnode_upd©e - - -599 -node_t - * - gnode - - -602 -”rÜ_t - - g”r - = 0; - -605 * - g·th -; - -608 -io_ˇ©buf_t - - gˇ© -; - -611 -fže_t - - gpÜt -; - -614 if( -NODE_IS_ROOT -( -node -č|| ( - gnode --> - g --> - gćags - & - gFLAG_NODE_ULFS_FIXED -)) - -616  - g”r -; - -619 -mu‹x_lock -(& -Ătfs_roŮ_node --> -lock -); - -622 - g”r - = -Ęode_·th_cÚˇruů -( -node --> - --> -Ęode -, & -·th -); - -623 if( - g”r -) - -625 -mu‹x_uĆock -(& -Ătfs_roŮ_node --> -lock -); - -626  - g”r -; - -630 if( - gnode --> - g --> - gpÜt -) - -631 -PORT_DEALLOC -( -node --> - --> -pÜt -); - -634 - g”r - = -fže_lookup - - -636 -Ătfs_roŮ_node --> - --> -pÜt -, - g·th -, - gO_READ - | - gO_NOTRANS -, O_NOTRANS, - -637 0, & - gpÜt -, & - gˇ© - - -639 if( - g”r -) - -641 - gnode --> - g --> - gpÜt - = -MACH_PORT_NULL -; - -642 - g”r - = 0; - -643  - g”r -; - -649 ( - gˇ© -. - gˇ_šo - =đ -und”lyšg_node_ˇ© -. -ˇ_šo -) - -650 && ( -ˇ© -. -ˇ_fsid - =đ -und”lyšg_node_ˇ© -.st_fsid) - -653 -”r - = -ELOOP -; - -657 -PORT_DEALLOC -( -pÜt -); - -660 - g”r - = -fže_lookup - - -661 ( -Ătfs_roŮ_node --> - --> -pÜt -, - g·th -, - gO_READ -, 0, 0, & - gpÜt -, & - gˇ© -); - -665 if( - g”r -) - -667 - gpÜt - = -MACH_PORT_NULL -; - -670 - gnode --> - g --> - gpÜt - = -pÜt -; - -674 - gnode --> - g --> - gćags - &đ~ -FLAG_NODE_INVALIDATE -; - -675 - gnode --> - g --> - gćags - |đ -FLAG_NODE_ULFS_UPTODATE -; - -678 -mu‹x_uĆock -(& -Ătfs_roŮ_node --> -lock -); - -681  - g”r -; - -685 -”rÜ_t - - -686 - gnode_g‘_size - - -688 -node_t - * - gdś -, - -689 -OFFSET_T - * - goff - - -692 -”rÜ_t - - g”r - = 0; - -695 -size_t - - gsize - = 0; - -704 -node_dś’t_t - * - gdś’t_cuĽ’t - = -NULL -; - -707 -node_dś’t_t - * - gdś’t_liˇ - = -NULL -; - -714 - gbump_size - - -716 cÚˇ * - gÇme - - -720 - gsize - +đ -DIRENT_LEN -( -ˇľ’ -( -Çme -)); - -727 - g”r - = -node_’Ś›s_g‘ -( -dś -, & -dś’t_liˇ -); - -728 if( - g”r -) - -729  - g”r -; - -754 - gdś’t_cuĽ’t - = -dś’t_liˇ - ; dirent_current; - -755 - gdś’t_cuĽ’t - = -dś’t_cuĽ’t --> -Ăxt - - -757 -bump_size -( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -); - -760 -node_’Ś›s_ä“ -( -dś’t_liˇ -); - -763 * - goff - = -size -; - -768 -”rÜ_t - - -769 - gnode_uĆšk_fže - - -771 -node_t - * - gdś -, - -772 * - gÇme - - -775 -”rÜ_t - - g”r - = 0; - -778 -mach_pÜt_t - - gp -; - -781 -io_ˇ©buf_t - - gˇ© -; - -784 if( - gdś --> - g --> - gpÜt - =đ -MACH_PORT_NULL -) - -786  -ENOENT -; - -789 - g”r - = -fže_lookup -( -dś --> - --> -pÜt -, -Çme -, -O_NOTRANS -, O_NOTRANS, 0, & -p -, & -ˇ© -); - -790 if( - g”r -) - -791  - g”r -; - -794 -PORT_DEALLOC -( -p -); - -797 - g”r - = -dś_uĆšk -( -dś --> - --> -pÜt -, -Çme -); - -798 if( - g”r -) - -799  - g”r -; - -801  - g”r -; - - @node.h - -26 #iâdeŕ -__NODE_H__ - - -27  - #__NODE_H__ - - - ) - -30  - ~<”rÜ.h -> - -31  - ~ - -32  - ~ - -34  - ~"Ęode.h -" - -40  - #NODE_IS_ROOT -( -n -č((Ň)-> - --> -Ęode --> -dś -č? (0č: (1)) - - ) - -43  - #FLAG_NODE_ULFS_FIXED - 0x00000001 - - ) - -44  - #FLAG_NODE_INVALIDATE - 0x00000002 - - ) - -45  - #FLAG_NODE_ULFS_UPTODATE - 0x00000004 - - ) - -48 #ifdeŕ -__USE_FILE_OFFSET64 - - -49  - #OFFSET_T - -__off64_t - - - ) - -51  - #OFFSET_T - -__off_t - - - ) - -56  - #STRING_CHUNK - 256 - - ) - -61  - sĂŠode - - -64 -Ęode_t - * - mĘode -; - -67  - mćags -; - -70 -fže_t - - mpÜt -; - -73 -node_t - * - mn˙che_´ev -, * - mn˙che_Ăxt -; - -76  -ĂŠode - - tĂŠode_t -; - -79  - snode_dś’t - - -82  -dś’t - * - mdś’t -; - -85  -node_dś’t - * - mĂxt -; - -88  -node_dś’t - - tnode_dś’t_t -; - -94  -mu‹x - -ulfs_lock -; - -100 -”rÜ_t - - -101 - gnode_ü—‹ - - -103 -Ęode_t - * - gĘode -, - -104 -node_t - ** - gnode - - -110 - gnode_deˇroy - - -112 -node_t - * - gĹ - - -116 -”rÜ_t - - -117 - gnode_ü—‹_roŮ - - -119 -node_t - ** - groŮ_node - - -123 -”rÜ_t - - -124 - gnode_š™_roŮ - - -126 -node_t - * - gnode - - -131 - gnode_’Ś›s_ä“ - - -133 -node_dś’t_t - * - gdś’ts - - -137 -”rÜ_t - - -138 - gnode_’Ś›s_g‘ - - -140 -node_t - * - gnode -, - -141 -node_dś’t_t - ** - gdś’ts - - -146 -”rÜ_t - - -147 - gnode_upd©e - - -149 -node_t - * - gnode - - -153 -”rÜ_t - - -154 - gnode_g‘_size - - -156 -node_t - * - gdś -, - -157 -OFFSET_T - * - goff - - -161 -”rÜ_t - - -162 - gnode_uĆšk_fže - - -164 -node_t - * - gdś -, - -165 * - gÇme - - - @options.c - -28  - #_GNU_SOURCE - 1 - - ) - -30  - ~<¬gp.h -> - -31  - ~<”rÜ.h -> - -33  - ~"debug.h -" - -34  - ~"ÝtiÚs.h -" - -35  - ~"n˙che.h -" - -36  - ~"node.h -" - -42  - #ARGS_DOC - "DIR" - - ) - -43  - #DOC - "Show thcÚ‹Á oŕDIR fž‹»d‡ccÜdšgŘPROPERTY.\ - DIR i nŮ słcif›d, ~/ i assumed." - - ) - -51 -”rÜ_t - - -52 - g¬gp_·rŁ_commÚ_ÝtiÚs - - -54  - gkey -, - -55 * - g¬g -, - -56  -¬gp_ˇ©e - * - gˇ©e - - -61 -”rÜ_t - - -62 - g¬gp_·rŁ_ˇ¬tup_ÝtiÚs - - -64  - gkey -, - -65 * - g¬g -, - -66  -¬gp_ˇ©e - * - gˇ©e - - -77  - g·rsšg_ˇ¬tup_ÝtiÚs_fšished -; - -80 cÚˇ  -¬gp_ÝtiÚ - - g¬gp_commÚ_ÝtiÚs -[] = - -82 { -OPT_LONG_CACHE_SIZE -, -OPT_CACHE_SIZE -, "SIZE", 0, - -84 { -OPT_LONG_PROPERTY -, -OPT_PROPERTY -, "PROPERTY", 0, - -89 cÚˇ  -¬gp_ÝtiÚ - - g¬gp_ˇ¬tup_ÝtiÚs -[] = - -95 cÚˇ  -¬gp - - g¬gp_·rŁr_commÚ_ÝtiÚs - = - -96 { -¬gp_commÚ_ÝtiÚs -, -¬gp_·rŁ_commÚ_ÝtiÚs -, 0, 0, 0}; - -99 cÚˇ  -¬gp - - g¬gp_·rŁr_ˇ¬tup_ÝtiÚs - = - -100 { -¬gp_ˇ¬tup_ÝtiÚs -, -¬gp_·rŁ_ˇ¬tup_ÝtiÚs -, 0, 0, 0}; - -103 cÚˇ  -¬gp_chžd - - g¬gp_chžd»n_ruÁime -[] = - -105 {& -¬gp_·rŁr_commÚ_ÝtiÚs -}, - -106 {& -Ătfs_ˇd_ruÁime_¬gp -}, - -111 cÚˇ  -¬gp_chžd - - g¬gp_chžd»n_ˇ¬tup -[] = - -113 {& -¬gp_·rŁr_ˇ¬tup_ÝtiÚs -}, - -114 {& -¬gp_·rŁr_commÚ_ÝtiÚs -}, - -115 {& -Ătfs_ˇd_ˇ¬tup_¬gp -}, - -120 cÚˇ * - g¬gp_´ogżm_v”siÚ - = "0.0"; - -123  -¬gp - - g¬gp_ruÁime - = - -124 {0, 0, 0, 0, -¬gp_chžd»n_ruÁime -}; - -127  -¬gp - - g¬gp_ˇ¬tup - = - -128 {0, 0, -ARGS_DOC -, -DOC -, -¬gp_chžd»n_ˇ¬tup -}; - -131 * - g´Ý”ty - = -NULL -; - -134 * - gdś - = -NULL -; - -141 -”rÜ_t - - -142 - g¬gp_·rŁ_commÚ_ÝtiÚs - - -144  - gkey -, - -145 * - g¬g -, - -146  -¬gp_ˇ©e - * - gˇ©e - - -149 -”rÜ_t - - g”r - = 0; - -152  - gkey -) - -154  - gOPT_CACHE_SIZE -: - -157 -n˙che_size - = -ˇąŢ -( -¬g -, -NULL -, 10); - -161  - gOPT_PROPERTY -: - -164 -´Ý”ty - = -ˇrdup -( -¬g -); - -165 if(! - g´Ý”ty -) - -166 -”rÜ -( -EXIT_FAILURE -, -ENOMEM -, "Could‚ot strduphe…roperty"); - -170  - gARGP_KEY_ARG -: - -173 -dś - = -ˇrdup -( -¬g -); - -174 if(! - gdś -) - -175 -”rÜ -( -EXIT_FAILURE -, -ENOMEM -, "argp_parse_common_options: " - -179  - gi - = -ˇľ’ -( -dś -) - 1; - -184 if(( - gdś -[ -i -] == '/') && (i != 0)) - -186 -dś -[ -i -] = 0; - -188 -LOG_MSG -("¬gp_·rŁ_commÚ_ÝtiÚs: Fž‹ršghdśeůÜy %s.", -dś -); - -192  - gARGP_KEY_END -: - -195 if(! -·rsšg_ˇ¬tup_ÝtiÚs_fšished -) - -198 -n˙che_»Łt -(); - -201 if(! - gdś -) - -207 - gdś - = "/var/tmp"; - -211 - g·rsšg_ˇ¬tup_ÝtiÚs_fšished - = 1; - -222 -”r - = -ARGP_ERR_UNKNOWN -; - -227  - g”r -; - -232 -”rÜ_t - - -233 - g¬gp_·rŁ_ˇ¬tup_ÝtiÚs - - -235  - gkey -, - -236 * - g¬g -, - -237  -¬gp_ˇ©e - * - gˇ©e - - -241 -”rÜ_t - - g”r - = 0; - -243  - gkey -) - -247 -”r - = -ARGP_ERR_UNKNOWN -; - -253  - g”r -; - - @options.h - -26 #iâdeŕ -__OPTIONS_H__ - - -27  - #__OPTIONS_H__ - - - ) - -32  - #OPT_CACHE_SIZE - 'c' - - ) - -34  - #OPT_PROPERTY - 'p' - - ) - -37  - #OPT_LONG_CACHE_SIZE - "˙che-size" - - ) - -38  - #OPT_LONG_PROPERTY - "´Ý”ty" - - ) - -41  - #OPT_LONG -( -o -č"--" - ) -o - -44  - #PROPERTY_PARAM - "{}" - - ) - -50  -¬gp - -¬gp_ˇ¬tup -; - -53  -¬gp - -¬gp_ruÁime -; - -56  -n˙che_size -; - -59 * -´Ý”ty -; - -62 * -dś -; - - @/usr/include/dirent.h - -58 #iâdeŕ -_DIRENT_H_ - - -59  - #_DIRENT_H_ - - - ) - -65  - ~<_tyłs.h -> - -66  - ~ - -68  - g_‹Îdś -; - -72  - m__dd_fd -; - -73  - m__dd_loc -; - -74  - m__dd_size -; - -75 * - m__dd_buf -; - -76  - m__dd_Ën -; - -77  - m__dd_Łek -; - -78  - m__dd_»wšd -; - -79  - m__dd_ćags -; - -80 -__d¬wš_±h»ad_mu‹x_t - - m__dd_lock -; - -81  -_‹Îdś - * - m__dd_td -; - -82 } - tDIR -; - -84 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -86  - #DIRBLKSIZ - 1024 - - ) - -88  - #dśfd -( -dśp -č((dśp)-> -__dd_fd -) - - ) - -91  - #DTF_HIDEW - 0x0001 - - ) - -92  - #DTF_NODUP - 0x0002 - - ) - -93  - #DTF_REWIND - 0x0004 - - ) - -94  - #__DTF_READALL - 0x0008 - - ) - -98 #iâdeŕ -KERNEL - - -100  - ~ - -102 - g__BEGIN_DECLS - - -103 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -104  - $®phasÜt -(cÚˇ *, cÚˇ *č - `__DARWIN_INODE64 -( -®phasÜt -); - -106  - $ţoŁdś -( -DIR - *č - `__DARWIN_ALIAS -( -ţoŁdś -); - -107 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -108  - `g‘dś’Ś›s -(, *, , *); - -110 -DIR - * - $Ý’dś -(cÚˇ *č - `__DARWIN_ALIAS_I -( -Ý’dś -); - -111 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -112 -DIR - * - $__Ý’dś2 -(cÚˇ *, č - `__DARWIN_ALIAS_I -( -__Ý’dś2 -); - -114  -dś’t - * - $»addś -( -DIR - *č - `__DARWIN_INODE64 -( -»addś -); - -115  - $»addś_r -( -DIR - *,  -dś’t - *, dś’**č - `__DARWIN_INODE64 -( -»addś_r -); - -116  - $»wšddś -( -DIR - *č - `__DARWIN_ALIAS_I -( -»wšddś -); - -117 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -118  - `s˙ndś -(cÚˇ *,  -dś’t - ***, - -119 (*)( -dś’t - *), (*)(cÚˇ *, cÚˇ *)č - `__DARWIN_INODE64 -( -s˙ndś -); - -121  - $Łekdś -( -DIR - *, č - `__DARWIN_ALIAS_I -( -Łekdś -); - -122  - $‹Îdś -( -DIR - *č - `__DARWIN_ALIAS_I -( -‹Îdś -); - -123 -__END_DECLS - - - @/usr/include/fcntl.h - -23  - ~ - - @/usr/include/stddef.h - -61 #iŕ! -defšed -( -__STDDEF_H__ -) - -63 #iŕ! -defšed -( -__Ăed_wch¬_t -č&& !defšed( -__Ăed_size_t -) \ - -64 && ! -defšed -( -__Ăed_±rdiff_t -č&& !defšed( -__Ăed_NULL -) \ - -65 && ! - $defšed -( -__Ăed_wšt_t -) - -66  - #__STDDEF_H__ - - - ) - -69  - ~<_tyłs.h -> - -71 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_±rdiff_t -) - -72 #iâdeŕ -_PTRDIFF_T - - -73  - #_PTRDIFF_T - - - ) - -74  -__d¬wš_±rdiff_t - - t±rdiff_t -; - -78 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_size_t -) - -79 #iâdef -_SIZE_T - - -80  - #_SIZE_T - - - ) - -83  -__d¬wš_size_t - - tsize_t -; - -87 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_wch¬_t -) - -88 #iâdef -__ýluĄlus - - -89 #iâdef -_WCHAR_T - - -90  - #_WCHAR_T - - - ) - -91  -__d¬wš_wch¬_t - - twch¬_t -; - -96 #iŕ( - `defšed -( -__STDDEF_H__ -č&& !defšed( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -))) \ - -97 || - $defšed -( -__Ăed_wšt_t -) - -98 #iâdef -_WINT_T - - -99  - #_WINT_T - - - ) - -100  -__d¬wš_wšt_t - - twšt_t -; - -104 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_NULL -) - -105 #iâdeŕ -NULL - - -106  - #NULL - -__DARWIN_NULL - - - ) - -110 #ifdeŕ -__STDDEF_H__ - - -111 #iŕ - `defšed -( -__GNUC__ -č&& (__GNUC__ =đ3 && -__GNUC_MINOR__ - >= 5 || __GNUC__ > 3) - -112 #iâdeŕ -__offŁtof - - -113  - #__offŁtof -( -tył -, -f›ld -č - `__bužtš_offŁtof -Ńył, f›ld) - - ) - -115  - #offŁtof -( -tył -, -f›ld -č - `__bužtš_offŁtof -Ńył, f›ld) - - ) - -117 #iâdeŕ -__offŁtof - - -118  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - -120  - #offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - -126 #undeŕ -__Ăed_±rdiff_t - - -127 #undeŕ -__Ăed_size_t - - -128 #undeŕ -__Ăed_wch¬_t - - -129 #undeŕ -__Ăed_wšt_t - - -130 #undeŕ -__Ăed_NULL - - - @/usr/include/stdio.h - -61 #iâdef -_STDIO_H_ - - -62  - #_STDIO_H_ - - - ) - -64  - ~<_tyłs.h -> - -66 #iâdeŕ -_VA_LIST - - -67  - #_VA_LIST - - - ) - -70  -__d¬wš_va_liˇ - - tva_liˇ -; - -73 #iâdef -_OFF_T - - -74  - #_OFF_T - - - ) - -75  -__d¬wš_off_t - - toff_t -; - -78 #iâdef -_SIZE_T - - -79  - #_SIZE_T - - - ) - -80  -__d¬wš_size_t - - tsize_t -; - -83 #iâdeŕ -NULL - - -84  - #NULL - -__DARWIN_NULL - - - ) - -87  -__d¬wš_off_t - - tĺos_t -; - -89  - #_FSTDIO - - - ) - -98  - s__sbuf - { - -99 * - m_baŁ -; - -100  - m_size -; - -104  - g__sFILEX -; - -132  - s__sFILE - { - -133 * - m_p -; - -134  - m_r -; - -135  - m_w -; - -136  - m_ćags -; - -137  - m_fže -; - -138  -__sbuf - - m_bf -; - -139  - m_lbfsize -; - -142 * - m_cook› -; - -143 (* - m_ţoŁ -)(*); - -144 (* - m_»ad -) (*, *, ); - -145 -ĺos_t - (* -_Łek -č(*, - mĺos_t -, ); - -146 (* - m_wr™e -)(*, const *, ); - -149  -__sbuf - - m_ub -; - -150  -__sFILEX - * - m_exŚa -; - -151  - m_ur -; - -154  - m_ubuf -[3]; - -155  - m_nbuf -[1]; - -158  -__sbuf - - m_lb -; - -161  - m_blksize -; - -162 -ĺos_t - - m_offŁt -; - -163 } - tFILE -; - -165 - g__BEGIN_DECLS - - -166 #iŕ -__DARWIN_UNIX03 - - -167 -FILE - * -__ˇdšp -; - -168 -FILE - * -__ˇdouŤ -; - -169 -FILE - * -__ˇd”˝ -; - -171 -FILE - -__sF -[]; - -173 - g__END_DECLS - - -175  - #__SLBF - 0x0001 - - ) - -176  - #__SNBF - 0x0002 - - ) - -177  - #__SRD - 0x0004 - - ) - -178  - #__SWR - 0x0008 - - ) - -180  - #__SRW - 0x0010 - - ) - -181  - #__SEOF - 0x0020 - - ) - -182  - #__SERR - 0x0040 - - ) - -183  - #__SMBF - 0x0080 - - ) - -184  - #__SAPP - 0x0100 - - ) - -185  - #__SSTR - 0x0200 - - ) - -186  - #__SOPT - 0x0400 - - ) - -187  - #__SNPT - 0x0800 - - ) - -188  - #__SOFF - 0x1000 - - ) - -189  - #__SMOD - 0x2000 - - ) - -190  - #__SALC - 0x4000 - - ) - -191  - #__SIGN - 0x8000 - - ) - -202  - #_IOFBF - 0 - - ) - -203  - #_IOLBF - 1 - - ) - -204  - #_IONBF - 2 - - ) - -206  - #BUFSIZ - 1024 - - ) - -207  - #EOF - (-1) - - ) - -215  - #FOPEN_MAX - 20 - - ) - -216  - #FILENAME_MAX - 1024 - - ) - -219 #iâdeŕ -_ANSI_SOURCE - - -220  - #P_tmpdś - "/v¬/tmp/" - - ) - -222  - #L_tm˛am - 1024 - - ) - -223  - #TMP_MAX - 308915776 - - ) - -225 #iâdeŕ -SEEK_SET - - -226  - #SEEK_SET - 0 - - ) - -228 #iâdeŕ -SEEK_CUR - - -229  - #SEEK_CUR - 1 - - ) - -231 #iâdeŕ -SEEK_END - - -232  - #SEEK_END - 2 - - ) - -235 #iŕ -__DARWIN_UNIX03 - - -236  - #ˇdš - -__ˇdšp - - - ) - -237  - #ˇdout - -__ˇdouŤ - - - ) - -238  - #ˇd”r - -__ˇd”˝ - - - ) - -240  - #ˇdš - (& -__sF -[0]) - - ) - -241  - #ˇdout - (& -__sF -[1]) - - ) - -242  - #ˇd”r - (& -__sF -[2]) - - ) - -248 -__BEGIN_DECLS - - -249  -ţ—»Ľ -( -FILE - *); - -250  -fţoŁ -( -FILE - *); - -251  -ăof -( -FILE - *); - -252  -ăĽÜ -( -FILE - *); - -253  -fćush -( -FILE - *); - -254  -fg‘c -( -FILE - *); - -255  -fg‘pos -( -FILE - * -__»ˇriů -, -ĺos_t - *); - -256 * -fg‘s -(* -__»ˇriů -, , -FILE - *); - -257 -FILE - * -fÝ’ -(cÚˇ * -__»ˇriů -, const * __restrict); - -258  - $ĺrštf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -ĺrštf -); - -259  - `ĺutc -(, -FILE - *); - -260  - $ĺuts -(cÚˇ * -__»ˇriů -, -FILE - * __»ˇriůč - `__DARWIN_ALIAS -( -ĺuts -); - -261 -size_t - - `ä—d -(* -__»ˇriů -, size_t, size_t, -FILE - * __restrict); - -262 -FILE - * - $äeÝ’ -(cÚˇ * -__»ˇriů -, const * __restrict, - -263 -FILE - * -__»ˇriů -č - `__DARWIN_ALIAS -( -äeÝ’ -); - -264  - $fs˙nf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -fs˙nf -); - -265  - `fŁek -( -FILE - *, , ); - -266  - `fŁŤos -( -FILE - *, cÚˇ -ĺos_t - *); - -267  - `á–l -( -FILE - *); - -268 -size_t - - $fwr™e -(cÚˇ * -__»ˇriů -, -size_t -, size_t, -FILE - * __»ˇriůč - `__DARWIN_ALIAS -( -fwr™e -); - -269  - `g‘c -( -FILE - *); - -270  - `g‘ch¬ -(); - -271 * - `g‘s -(*); - -272 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -273 -__cÚˇ -  -sys_ĂĽ -; - -274 -__cÚˇ - *__cÚˇ -sys_”ľiˇ -[]; - -276  - `łĽÜ -(const *); - -277  - $´štf -(cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT -( -´štf -); - -278  - `putc -(, -FILE - *); - -279  - `putch¬ -(); - -280  - `puts -(const *); - -281  - `»move -(const *); - -282  - `»Çme - (const *, const *); - -283  - `»wšd -( -FILE - *); - -284  - $s˙nf -(cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT -( -s˙nf -); - -285  - `Łtbuf -( -FILE - * -__»ˇriů -, * __restrict); - -286  - `Łtvbuf -( -FILE - * -__»ˇriů -, * __»ˇriů, , -size_t -); - -287  - $Ąrštf -(* -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -Ąrštf -); - -288  - $ss˙nf -(cÚˇ * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -ss˙nf -); - -289 -FILE - * - `tmpfže -(); - -290 * - `tm˛am -(*); - -291  - `ung‘c -(, -FILE - *); - -292  - $vĺrštf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vĺrštf -); - -293  - $v´štf -(cÚˇ * -__»ˇriů -, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -v´štf -); - -294  - $vĄrštf -(* -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vĄrštf -); - -295 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -296  - $aĄrštf -(**, cÚˇ *, ...č - `__DARWIN_LDBL_COMPAT -( -aĄrštf -); - -297  - $vaĄrštf -(**, cÚˇ *, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vaĄrštf -); - -299 -__END_DECLS - - -304 #iâdeŕ -_ANSI_SOURCE - - -305  - #L_ů”mid - 1024 - - ) - -307 -__BEGIN_DECLS - - -308 * - `ů”mid -(*); - -309 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -310 * - `ů”mid_r -(*); - -312 -FILE - * - `fdÝ’ -(, const *); - -313 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -314 * - `fg‘Ę -( -FILE - *, -size_t - *); - -316  - `fž’o -( -FILE - *); - -317  - `ćockfže -( -FILE - *); - -318 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -319 -__cÚˇ -  - -320 * - `fmtcheck -(const *, const *); - -321  - `ĺurge -( -FILE - *); - -323  - `fŁeko -( -FILE - *, -off_t -, ); - -324 -off_t - - `á–lo -( -FILE - *); - -325  - `árylockfže -( -FILE - *); - -326  - `fuĆockfže -( -FILE - *); - -327  - `g‘c_uĆocked -( -FILE - *); - -328  - `g‘ch¬_uĆocked -(); - -329 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -330  - `g‘w -( -FILE - *); - -332  - `pţoŁ -( -FILE - *); - -333 -FILE - * - `pÝ’ -(const *, const *); - -334  - `putc_uĆocked -(, -FILE - *); - -335  - `putch¬_uĆocked -(); - -336 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -337  - `putw -(, -FILE - *); - -338  - `Łtbufăr -( -FILE - *, *, ); - -339  - `ŁŽšebuf -( -FILE - *); - -341  - $˘´štf -(* -__»ˇriů -, -size_t -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -˘´štf -); - -342 * - $‹m˛am -(cÚˇ *, cÚˇ *č - `__DARWIN_ALIAS -( -‹m˛am -); - -343  - $vfs˙nf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vfs˙nf -); - -344  - $vs˙nf -(cÚˇ * -__»ˇriů -, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vs˙nf -); - -345  - $v˘´štf -(* -__»ˇriů -, -size_t -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -v˘´štf -); - -346  - $vss˙nf -(cÚˇ * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vss˙nf -); - -347 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -348 -FILE - * - `zÝ’ -(const *, const *, ); - -350 -__END_DECLS - - -355 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -356 -__BEGIN_DECLS - - -357 -FILE - * - `funÝ’ -(const *, - -360 - $ĺos_t - (*)(*, -ĺos_t -, ), - -362 -__END_DECLS - - -363  - #äÝ’ -( -cook› -, -â -č - `funÝ’ -(cook›, fn, 0, 0, 0) - - ) - -364  - #fwÝ’ -( -cook› -, -â -č - `funÝ’ -(cook›, 0, fn, 0, 0) - - ) - -371 -__BEGIN_DECLS - - -372  - `__¤g‘ -( -FILE - *); - -373  - $__svfs˙nf -( -FILE - *, cÚˇ *, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -__svfs˙nf -); - -374  - `__swbuf -(, -FILE - *); - -375 -__END_DECLS - - -381  - #__sg‘c -( -p -č(--Ő)-> -_r - < 0 ? - `__¤g‘ -Őč: ()(*Ő)-> -_p -++)) - - ) - -382 #iŕ - `defšed -( -__GNUC__ -č&& defšed( -__STDC__ -) - -383  -__šlše -  - $__Ąutc -( -_c -, -FILE - * -_p -) { - -384 iŕ(-- -_p --> -_w - >đ0 || (_p->_w >đ_p-> -_lbfsize - && () -_c - != '\n')) - -385  (* -_p -->_p++ = -_c -); - -387  ( - `__swbuf -( -_c -, -_p -)); - -388 - } -} - -393  - #__Ąutc -( -c -, -p -) \ - -394 (--( -p -)-> -_w - < 0 ? \ - -395 ( -p -)-> -_w - >đŐ)-> -_lbfsize - ? \ - -396 (*( -p -)-> -_p - = ( -c -)), *(p)->_p != '\n' ? \ - -397 ()*( -p -)-> -_p -++ : \ - -398 - `__swbuf -('\n', -p -) : \ - -399 - `__swbuf -(()( -c -), -p -) : \ - -400 (*( -p -)-> -_p - = ( -c -), ()*Ő)->_p++)) - - ) - -403  - #__săof -( -p -č((Ő)-> -_ćags - & -__SEOF -č!đ0) - - ) - -404  - #__săĽÜ -( -p -č((Ő)-> -_ćags - & -__SERR -č!đ0) - - ) - -405  - #__sţ—»Ľ -( -p -č(()(Ő)-> -_ćags - &đ~( -__SERR -| -__SEOF -))) - - ) - -406  - #__sfž’o -( -p -č(Ő)-> -_fže -) - - ) - -408 #iâdeŕ -_ANSI_SOURCE - - -409 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -410  - #ăof_uĆocked -( -p -č - `__săof -Ő) - - ) - -411  - #ăĽÜ_uĆocked -( -p -č - `__săĽÜ -Ő) - - ) - -412  - #ţ—»Ľ_uĆocked -( -p -č - `__sţ—»Ľ -Ő) - - ) - -413  - #fž’o_uĆocked -( -p -č - `__sfž’o -Ő) - - ) - -416 #iâdeŕ -lšt - - -417  - #g‘c_uĆocked -( -ĺ -č - `__sg‘c -(ĺ) - - ) - -418  - #putc_uĆocked -( -x -, -ĺ -č - `__Ąutc -(x, fp) - - ) - -421  - #g‘ch¬_uĆocked -(č - `g‘c_uĆocked -( -ˇdš -) - - ) - -422  - #putch¬_uĆocked -( -x -č - `putc_uĆocked -(x, -ˇdout -) - - ) - -425 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -426  - ~ - -429 #iŕ -defšed - ( -__GNUC__ -č&& -_FORTIFY_SOURCE - > 0 && !defšed ( -__ýluĄlus -) - -431  - ~<Łcu»/_ˇdio.h -> - - @/usr/include/stdlib.h - -58 #iâdeŕ -_STDLIB_H_ - - -59  - #_STDLIB_H_ - - - ) - -61  - ~ - -63  - ~<_tyłs.h -> - -64 #iŕ! -defšed -( -_ANSI_SOURCE -) - -65  - ~ - -66 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -67  - ~<®lo˙.h -> - -71 #iâdef -_SIZE_T - - -72  - #_SIZE_T - - - ) - -75  -__d¬wš_size_t - - tsize_t -; - -78 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -79 #iâdeŕ -_CT_RUNE_T - - -80  - #_CT_RUNE_T - - - ) - -81  -__d¬wš_ů_ruĂ_t - - tů_ruĂ_t -; - -84 #iâdeŕ -_RUNE_T - - -85  - #_RUNE_T - - - ) - -86  -__d¬wš_ruĂ_t - - truĂ_t -; - -90 #iâdef -__ýluĄlus - - -91 #iâdef -_WCHAR_T - - -92  - #_WCHAR_T - - - ) - -93  -__d¬wš_wch¬_t - - twch¬_t -; - -98  - mquŮ -; - -99  - m»m -; - -100 } - tdiv_t -; - -103  - mquŮ -; - -104  - m»m -; - -105 } - tldiv_t -; - -107 #iŕ! -__DARWIN_NO_LONG_LONG - - -109  - mquŮ -; - -110  - m»m -; - -111 } - tÎdiv_t -; - -114 #iâdeŕ -NULL - - -115  - #NULL - -__DARWIN_NULL - - - ) - -118  - #EXIT_FAILURE - 1 - - ) - -119  - #EXIT_SUCCESS - 0 - - ) - -121  - #RAND_MAX - 0x7fffffff - - ) - -123 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -124  - ~<_xlo˙Ë.h -> - -127 #iâdeŕ -MB_CUR_MAX - - -128 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -129  - #MB_CUR_MAX - ( - `___mb_cur_max -()) - - ) - -130 #iâdeŕ -MB_CUR_MAX_L - - -131  - #MB_CUR_MAX_L -( -x -č( - `___mb_cur_max_l -(x)) - - ) - -134  -__mb_cur_max -; - -135  - #MB_CUR_MAX - -__mb_cur_max - - - ) - -139 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) \ - -140 && -defšed -( -_USE_EXTENDED_LOCALES_ -č&& ! - $defšed -( -MB_CUR_MAX_L -) - -141  - #MB_CUR_MAX_L -( -x -č( - `___mb_cur_max_l -(x)) - - ) - -144 -__BEGIN_DECLS - - -145  - $abÜt -(č -__d—d2 -; - -146  - $abs -(č -__pu»2 -; - -147  - `©ex™ -((*)()); - -148  - `©of -(const *); - -149  - `©oi -(const *); - -150  - `©Ţ -(const *); - -151 #iŕ! -__DARWIN_NO_LONG_LONG - - -153 - `©Ţl -(const *); - -155 * - `b٬ch -(cÚˇ *, cÚˇ *, -size_t -, - -156 -size_t -, (*)(const *, const *)); - -157 * - `˙Îoc -( -size_t -, size_t); - -158 -div_t - - $div -(, č -__pu»2 -; - -159  - $ex™ -(č -__d—d2 -; - -160  - `ä“ -(*); - -161 * - `g‘’v -(const *); - -162  - $Ďbs -(č -__pu»2 -; - -163 -ldiv_t - - $ldiv -(, č -__pu»2 -; - -164 #iŕ! -__DARWIN_NO_LONG_LONG - - -166 - `Îabs -(); - -167 -Îdiv_t - - `Îdiv -(, ); - -169 * - `m®loc -( -size_t -); - -170  - `mbËn -(cÚˇ *, -size_t -); - -171 -size_t - - `mbˇowcs -( -wch¬_t - * -__»ˇriů - , const * __restrict, size_t); - -172  - `mbtowc -( -wch¬_t - * -__»ˇriů -, cÚˇ * __»ˇriů, -size_t -); - -173  - `qsÜt -(*, -size_t -, size_t, - -175  - `żnd -(); - -176 * - `»®loc -(*, -size_t -); - -177  - `¤Şd -(); - -178  - $ˇąod -(cÚˇ *, **č - `__DARWIN_ALIAS -( -ˇąod -); - -179  - $ˇąof -(cÚˇ *, **č - `__DARWIN_ALIAS -( -ˇąof -); - -180  - `ˇąŢ -(const *, **, ); - -182 - $ˇąŢd -(cÚˇ *, **č - `__DARWIN_LDBL_COMPAT -( -ˇąŢd -); - -183 #iŕ! -__DARWIN_NO_LONG_LONG - - -185 - `ˇąŢl -(const *, **, ); - -188 - `ˇąoul -(const *, **, ); - -189 #iŕ! -__DARWIN_NO_LONG_LONG - - -191 - `ˇąouÎ -(const *, **, ); - -193  - $syˇem -(cÚˇ *č - `__DARWIN_ALIAS_C -( -syˇem -); - -194 -size_t - - `wcˇombs -(* -__»ˇriů -, cÚˇ -wch¬_t - * __restrict, size_t); - -195  - `wůomb -(*, -wch¬_t -); - -197 #iâdeŕ -_ANSI_SOURCE - - -198  - $_Ex™ -(č -__d—d2 -; - -199  - `a64l -(const *); - -200  - `dżnd48 -(); - -201 * - `ecvt -(, , * -__»ˇriů -, *__restrict); - -202  - `”Şd48 -([3]); - -203 * - `fcvt -(, , * -__»ˇriů -, *__restrict); - -204 * - `gcvt -(, , *); - -205  - `g‘subÝt -(**, * const *, **); - -206  - `gżÁ± -(); - -207 #iŕ -__DARWIN_UNIX03 - - -208 * - `𙎩e -(, *, -size_t -); - -210 * - `𙎩e -(, *, ); - -212  - `jżnd48 -([3]); - -213 * - `l64a -(); - -214  - `lcÚg48 -([7]); - -215  - `ĚŞd48 -(); - -216 * - `mk‹mp -(*); - -217  - `mkˇemp -(*); - -218  - `mżnd48 -(); - -219  - `ÄŞd48 -([3]); - -220  - `posix_Ý’± -(); - -221 * - `±˘ame -(); - -222  - $pu‹nv -(*č - `__DARWIN_ALIAS -( -pu‹nv -); - -223  - `żndom -(); - -224  - `żnd_r -(*); - -225 #iŕ( -__DARWIN_UNIX03 - && ! - `defšed -( -_POSIX_C_SOURCE -)č|| defšed( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_BETTER_REALPATH -) - -226 * - $»®·th -(cÚˇ * -__»ˇriů -, * __»ˇriůč - `__DARWIN_EXTSN -( -»®·th -); - -228 * - $»®·th -(cÚˇ * -__»ˇriů -, * __»ˇriůč - `__DARWIN_ALIAS -( -»®·th -); - -231 * - `Łed48 -([3]); - -232  - $Ł‹nv -(cÚˇ *, cÚˇ *, č - `__DARWIN_ALIAS -( -Ł‹nv -); - -233 #iŕ -__DARWIN_UNIX03 - - -234  - $Łtkey -(cÚˇ *č - `__DARWIN_ALIAS -( -Łtkey -); - -236  - `Łtkey -(const *); - -238 * - `Łtˇ©e -(const *); - -239  - `¤Şd48 -(); - -240 #iŕ -__DARWIN_UNIX03 - - -241  - `¤Şdom -(); - -243  - `¤Şdom -(); - -245  - `uĆock± -(); - -246 #iŕ -__DARWIN_UNIX03 - - -247  - $unŁ‹nv -(cÚˇ *č - `__DARWIN_ALIAS -( -unŁ‹nv -); - -249  - `unŁ‹nv -(const *); - -253 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -254  - ~ - -256 #iâdeŕ -_DEV_T - - -257  -__d¬wš_dev_t - - tdev_t -; - -258  - #_DEV_T - - - ) - -261 #iâdef -_MODE_T - - -262  -__d¬wš_mode_t - - tmode_t -; - -263  - #_MODE_T - - - ) - -266 -u_št32_t - - -267 - `¬c4żndom -(); - -268  - `¬c4żndom_addżndom -(* -d© -,  -d©Ën -); - -269  - `¬c4żndom_ˇś -(); - -272 * - `cg‘˙p -(*, const *, ); - -273  - `cg‘ţoŁ -(); - -274  - `cg‘’t -(**, **, const *); - -275  - `cg‘fśˇ -(**, **); - -276  - `cg‘m©ch -(const *, const *); - -277  - `cg‘Ăxt -(**, **); - -278  - `cg‘num -(*, const *, *); - -279  - `cg‘Łt -(const *); - -280  - `cg‘ˇr -(*, const *, **); - -281  - `cg‘uˇr -(*, const *, **); - -283  - $d«mÚ -(, č - $__DARWIN_1050 -( -d«mÚ -č -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 -; - -284 * - `devÇme -( -dev_t -, -mode_t -); - -285 * - `devÇme_r -( -dev_t -, -mode_t -, * -buf -,  -Ën -); - -286 * - `g‘bsize -(*, *); - -287  - `g‘lßdavg -([], ); - -289 * - `g‘´ogÇme -(); - -291  - `h—psÜt -(*, -size_t -, size_t, - -293  - `m”gesÜt -(*, -size_t -, size_t, - -295  - `qsÜt_r -(*, -size_t -, size_t, *, - -297  - `żdixsÜt -(const **, , const *, - -299  - `ŁŤrogÇme -(const *); - -300  - `¤adixsÜt -(const **, , const *, - -302  - `¤Şddev -(); - -303  - `¤Şdomdev -(); - -304 * - `»®locf -(*, -size_t -); - -305 #iŕ! -__DARWIN_NO_LONG_LONG - - -307 - `ˇąoq -(const *, **, ); - -309 - `ˇąouq -(const *, **, ); - -311 * -subÝŹrg -; - -312 * - `v®loc -( -size_t -); - -316 #iŕ! - `defšed -( -__ýluĄlus -č&& defšed( -__WCHAR_MAX__ -) && __WCHAR_MAX__ <= 0xffffU - -317 #´agm¨ -GCC - -poisÚ - -mbˇowcs - -mbtowc - -wcˇombs - -wůomb - - -319 -__END_DECLS - - -321 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -322  - ~ - - @/usr/include/sys/mman.h - -76 #iâdef -_SYS_MMAN_H_ - - -77  - #_SYS_MMAN_H_ - - - ) - -79  - ~ - -80  - ~ - -82  - ~ - -88 #iâdef -_MODE_T - - -89  -__d¬wš_mode_t - - tmode_t -; - -90  - #_MODE_T - - - ) - -93 #iâdeŕ -_OFF_T - - -94  -__d¬wš_off_t - - toff_t -; - -95  - #_OFF_T - - - ) - -98 #iâdeŕ -_SIZE_T - - -99  - #_SIZE_T - - - ) - -100  -__d¬wš_size_t - - tsize_t -; - -107  - #PROT_NONE - 0x00 - - ) - -108  - #PROT_READ - 0x01 - - ) - -109  - #PROT_WRITE - 0x02 - - ) - -110  - #PROT_EXEC - 0x04 - - ) - -116  - #MAP_SHARED - 0x0001 - - ) - -117  - #MAP_PRIVATE - 0x0002 - - ) - -118 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -119  - #MAP_COPY - -MAP_PRIVATE - - - ) - -125  - #MAP_FIXED - 0x0010 - - ) - -126 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -127  - #MAP_RENAME - 0x0020 - - ) - -128  - #MAP_NORESERVE - 0x0040 - - ) - -129  - #MAP_RESERVED0080 - 0x0080 - - ) - -130  - #MAP_NOEXTEND - 0x0100 - - ) - -131  - #MAP_HASSEMAPHORE - 0x0200 - - ) - -132  - #MAP_NOCACHE - 0x0400 - - ) - -138  - #MCL_CURRENT - 0x0001 - - ) - -139  - #MCL_FUTURE - 0x0002 - - ) - -144  - #MAP_FAILED - ((*)-1č - - ) - -149  - #MS_ASYNC - 0x0001 - - ) - -150  - #MS_INVALIDATE - 0x0002 - - ) - -151  - #MS_SYNC - 0x0010 - - ) - -153 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -154  - #MS_KILLPAGES - 0x0004 - - ) - -155  - #MS_DEACTIVATE - 0x0008 - - ) - -160  - #MAP_FILE - 0x0000 - - ) - -161  - #MAP_ANON - 0x1000 - - ) - -168  - #POSIX_MADV_NORMAL - 0 - - ) - -169  - #POSIX_MADV_RANDOM - 1 - - ) - -170  - #POSIX_MADV_SEQUENTIAL - 2 - - ) - -171  - #POSIX_MADV_WILLNEED - 3 - - ) - -172  - #POSIX_MADV_DONTNEED - 4 - - ) - -174 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -175  - #MADV_NORMAL - -POSIX_MADV_NORMAL - - - ) - -176  - #MADV_RANDOM - -POSIX_MADV_RANDOM - - - ) - -177  - #MADV_SEQUENTIAL - -POSIX_MADV_SEQUENTIAL - - - ) - -178  - #MADV_WILLNEED - -POSIX_MADV_WILLNEED - - - ) - -179  - #MADV_DONTNEED - -POSIX_MADV_DONTNEED - - - ) - -180  - #MADV_FREE - 5 - - ) - -185  - #MINCORE_INCORE - 0x1 - - ) - -186  - #MINCORE_REFERENCED - 0x2 - - ) - -187  - #MINCORE_MODIFIED - 0x4 - - ) - -188  - #MINCORE_REFERENCED_OTHER - 0x8 - - ) - -189  - #MINCORE_MODIFIED_OTHER - 0x10 - - ) - -194 -__BEGIN_DECLS - - -196  -mlock®l -(); - -197  -muĆock®l -(); - -199  -mlock -(cÚˇ *, -size_t -); - -200 #iâdeŕ -_MMAP - - -201  - #_MMAP - - - ) - -203 * - $mm­ -(*, -size_t -, , , , -off_t -č - `__DARWIN_ALIAS -( -mm­ -); - -206  - $m´Ůeů -(*, -size_t -, č - `__DARWIN_ALIAS -( -m´Ůeů -); - -208  - $msync -(*, -size_t -, č - `__DARWIN_ALIAS_C -( -msync -); - -210  - `muĆock -(cÚˇ *, -size_t -); - -212  - $munm­ -(*, -size_t -č - `__DARWIN_ALIAS -( -munm­ -); - -214  - `shm_Ý’ -(const *, , ...); - -215  - `shm_uĆšk -(const *); - -217  - `posix_madviŁ -(*, -size_t -, ); - -219 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -220  - `madviŁ -(*, -size_t -, ); - -221  - `mšcÜe -(cÚˇ *, -size_t -, *); - -222  - `mšh”™ -(*, -size_t -, ); - -224 -__END_DECLS - - - @/usr/include/sys/stat.h - -70 #iâdeŕ -_SYS_STAT_H_ - - -71  - #_SYS_STAT_H_ - - - ) - -73  - ~ - -74  - ~ - -77  - #__Ăed_ˇruů_timeĄec - - - ) - -78  - ~ - -85 #iâdeŕ -_BLKCNT_T - - -86  -__d¬wš_blkút_t - - tblkút_t -; - -87  - #_BLKCNT_T - - - ) - -90 #iâdeŕ -_BLKSIZE_T - - -91  -__d¬wš_blksize_t - - tblksize_t -; - -92  - #_BLKSIZE_T - - - ) - -95 #iâdeŕ -_DEV_T - - -96  -__d¬wš_dev_t - - tdev_t -; - -97  - #_DEV_T - - - ) - -100 #iâdef -_INO_T - - -101  -__d¬wš_šo_t - - tšo_t -; - -102  - #_INO_T - - - ) - -105 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -106 #iâdef -_INO64_T - - -107  -__d¬wš_šo64_t - - tšo64_t -; - -108  - #_INO64_T - - - ) - -112 #iâdef -_MODE_T - - -113  -__d¬wš_mode_t - - tmode_t -; - -114  - #_MODE_T - - - ) - -117 #iâdeŕ -_NLINK_T - - -118  -__ušt16_t - - tĆšk_t -; - -119  - #_NLINK_T - - - ) - -122 #iâdeŕ -_UID_T - - -123  -__d¬wš_uid_t - - tuid_t -; - -124  - #_UID_T - - - ) - -127 #iâdeŕ -_GID_T - - -128  -__d¬wš_gid_t - - tgid_t -; - -129  - #_GID_T - - - ) - -132 #iâdeŕ -_OFF_T - - -133  -__d¬wš_off_t - - toff_t -; - -134  - #_OFF_T - - - ) - -137 #iâdef -_TIME_T - - -138  - #_TIME_T - - - ) - -139  -__d¬wš_time_t - - ttime_t -; - -143 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -152  - soˇ© - { - -153 -__ušt16_t - - mˇ_dev -; - -154 -šo_t - - mˇ_šo -; - -155 -mode_t - - mˇ_mode -; - -156 -Ćšk_t - - mˇ_Ćšk -; - -157 -__ušt16_t - - mˇ_uid -; - -158 -__ušt16_t - - mˇ_gid -; - -159 -__ušt16_t - - mˇ_rdev -; - -160 -__št32_t - - mˇ_size -; - -161  -timeĄec - - mˇ_©imeĄec -; - -162  -timeĄec - - mˇ_mtimeĄec -; - -163  -timeĄec - - mˇ_ůimeĄec -; - -164 -__št32_t - - mˇ_blksize -; - -165 -__št32_t - - mˇ_blocks -; - -166 -__ušt32_t - - mˇ_ćags -; - -167 -__ušt32_t - - mˇ_g’ -; - -170  - #__DARWIN_STRUCT_STAT64_TIMES - \ - -171  -timeĄec - -ˇ_©imeĄec -; \ - -172  -timeĄec - -ˇ_mtimeĄec -; \ - -173  -timeĄec - -ˇ_ůimeĄec -; \ - -174  -timeĄec - -ˇ_bśthtimeĄec -; - - ) - -178  - #__DARWIN_STRUCT_STAT64_TIMES - \ - -179 -time_t - -ˇ_©ime -; \ - -180  -ˇ_©im’Łc -; \ - -181 -time_t - -ˇ_mtime -; \ - -182  -ˇ_mtim’Łc -; \ - -183 -time_t - -ˇ_ůime -; \ - -184  -ˇ_ůim’Łc -; \ - -185 -time_t - -ˇ_bśthtime -; \ - -186  -ˇ_bśthtim’Łc -; - - ) - -200  - #__DARWIN_STRUCT_STAT64 - { \ - -201 -dev_t - -ˇ_dev -; \ - -202 -mode_t - -ˇ_mode -; \ - -203 -Ćšk_t - -ˇ_Ćšk -; \ - -204 -__d¬wš_šo64_t - -ˇ_šo -; \ - -205 -uid_t - -ˇ_uid -; \ - -206 -gid_t - -ˇ_gid -; \ - -207 -dev_t - -ˇ_rdev -; \ - -208 -__DARWIN_STRUCT_STAT64_TIMES - \ - -209 -off_t - -ˇ_size -; \ - -210 -blkút_t - -ˇ_blocks -; \ - -211 -blksize_t - -ˇ_blksize -; \ - -212 -__ušt32_t - -ˇ_ćags -; \ - -213 -__ušt32_t - -ˇ_g’ -; \ - -214 -__št32_t - -ˇ_lĄ¬e -; \ - -215 -__št64_t - -ˇ_qĄ¬e -[2]; \ - -216 } - - ) - -222 #iŕ -__DARWIN_64_BIT_INO_T - - -224  -ˇ© - - g__DARWIN_STRUCT_STAT64 -; - -228  - sˇ© - { - -229 -dev_t - - mˇ_dev -; - -230 -šo_t - - mˇ_šo -; - -231 -mode_t - - mˇ_mode -; - -232 -Ćšk_t - - mˇ_Ćšk -; - -233 -uid_t - - mˇ_uid -; - -234 -gid_t - - mˇ_gid -; - -235 -dev_t - - mˇ_rdev -; - -236 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -237  -timeĄec - - mˇ_©imeĄec -; - -238  -timeĄec - - mˇ_mtimeĄec -; - -239  -timeĄec - - mˇ_ůimeĄec -; - -241 -time_t - - mˇ_©ime -; - -242  - mˇ_©im’Łc -; - -243 -time_t - - mˇ_mtime -; - -244  - mˇ_mtim’Łc -; - -245 -time_t - - mˇ_ůime -; - -246  - mˇ_ůim’Łc -; - -248 -off_t - - mˇ_size -; - -249 -blkút_t - - mˇ_blocks -; - -250 -blksize_t - - mˇ_blksize -; - -251 -__ušt32_t - - mˇ_ćags -; - -252 -__ušt32_t - - mˇ_g’ -; - -253 -__št32_t - - mˇ_lĄ¬e -; - -254 -__št64_t - - mˇ_qĄ¬e -[2]; - -259 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -261  -ˇ©64 - - g__DARWIN_STRUCT_STAT64 -; - -268 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -269  - #ˇ_©ime - -ˇ_©imeĄec -. -tv_Łc - - - ) - -270  - #ˇ_mtime - -ˇ_mtimeĄec -. -tv_Łc - - - ) - -271  - #ˇ_ůime - -ˇ_ůimeĄec -. -tv_Łc - - - ) - -272  - #ˇ_bśthtime - -ˇ_bśthtimeĄec -. -tv_Łc - - - ) - -279 #iâdeŕ -S_IFMT - - -281  - #S_IFMT - 0170000 - - ) - -282  - #S_IFIFO - 0010000 - - ) - -283  - #S_IFCHR - 0020000 - - ) - -284  - #S_IFDIR - 0040000 - - ) - -285  - #S_IFBLK - 0060000 - - ) - -286  - #S_IFREG - 0100000 - - ) - -287  - #S_IFLNK - 0120000 - - ) - -288  - #S_IFSOCK - 0140000 - - ) - -289 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -290  - #S_IFWHT - 0160000 - - ) - -291  - #S_IFXATTR - 0200000 - - ) - -296  - #S_IRWXU - 0000700 - - ) - -297  - #S_IRUSR - 0000400 - - ) - -298  - #S_IWUSR - 0000200 - - ) - -299  - #S_IXUSR - 0000100 - - ) - -301  - #S_IRWXG - 0000070 - - ) - -302  - #S_IRGRP - 0000040 - - ) - -303  - #S_IWGRP - 0000020 - - ) - -304  - #S_IXGRP - 0000010 - - ) - -306  - #S_IRWXO - 0000007 - - ) - -307  - #S_IROTH - 0000004 - - ) - -308  - #S_IWOTH - 0000002 - - ) - -309  - #S_IXOTH - 0000001 - - ) - -311  - #S_ISUID - 0004000 - - ) - -312  - #S_ISGID - 0002000 - - ) - -313  - #S_ISVTX - 0001000 - - ) - -315 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -316  - #S_ISTXT - -S_ISVTX - - - ) - -317  - #S_IREAD - -S_IRUSR - - - ) - -318  - #S_IWRITE - -S_IWUSR - - - ) - -319  - #S_IEXEC - -S_IXUSR - - - ) - -329  - #S_ISBLK -( -m -č(((mč& 0170000č=đ0060000č - - ) - -330  - #S_ISCHR -( -m -č(((mč& 0170000č=đ0020000č - - ) - -331  - #S_ISDIR -( -m -č(((mč& 0170000č=đ0040000č - - ) - -332  - #S_ISFIFO -( -m -č(((mč& 0170000č=đ0010000č - - ) - -333  - #S_ISREG -( -m -č(((mč& 0170000č=đ0100000č - - ) - -334  - #S_ISLNK -( -m -č(((mč& 0170000č=đ0120000č - - ) - -335  - #S_ISSOCK -( -m -č(((mč& 0170000č=đ0140000č - - ) - -336 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -337  - #S_ISWHT -( -m -č(((mč& 0170000č=đ0160000č - - ) - -338  - #S_ISXATTR -( -m -č(((mč& 0200000č=đ0200000č - - ) - -356  - #S_TYPEISMQ -( -buf -č(0č - - ) - -357  - #S_TYPEISSEM -( -buf -č(0č - - ) - -358  - #S_TYPEISSHM -( -buf -č(0č - - ) - -374  - #S_TYPEISTMO -( -buf -č(0č - - ) - -377 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -378  - #ACCESSPERMS - ( -S_IRWXU -| -S_IRWXG -| -S_IRWXO -č - - ) - -380  - #ALLPERMS - ( -S_ISUID -| -S_ISGID -| -S_ISTXT -| -S_IRWXU -| -S_IRWXG -| -S_IRWXO -) - - ) - -382  - #DEFFILEMODE - ( -S_IRUSR -| -S_IWUSR -| -S_IRGRP -| -S_IWGRP -| -S_IROTH -| -S_IWOTH -) - - ) - -384  - #S_BLKSIZE - 512 - - ) - -391  - #UF_SETTABLE - 0x0000fffŕ - - ) - -392  - #UF_NODUMP - 0x00000001 - - ) - -393  - #UF_IMMUTABLE - 0x00000002 - - ) - -394  - #UF_APPEND - 0x00000004 - - ) - -395  - #UF_OPAQUE - 0x00000008 - - ) - -402  - #UF_HIDDEN - 0x00008000 - - ) - -407  - #SF_SETTABLE - 0xffff0000 - - ) - -408  - #SF_ARCHIVED - 0x00010000 - - ) - -409  - #SF_IMMUTABLE - 0x00020000 - - ) - -410  - #SF_APPEND - 0x00040000 - - ) - -422 -__BEGIN_DECLS - - -424  - $chmod -(cÚˇ *, -mode_t -č - `__DARWIN_ALIAS -( -chmod -); - -425  - $fchmod -(, -mode_t -č - `__DARWIN_ALIAS -( -fchmod -); - -426  - $fˇ© -(,  -ˇ© - *č - `__DARWIN_INODE64 -( -fˇ© -); - -427  - $lˇ© -(cÚˇ *,  -ˇ© - *č - `__DARWIN_INODE64 -( -lˇ© -); - -428  - `mkdś -(cÚˇ *, -mode_t -); - -429  - `mkfifo -(cÚˇ *, -mode_t -); - -430  - $ˇ© -(cÚˇ *,  -ˇ© - *č - `__DARWIN_INODE64 -(stat); - -431  - `mknod -(cÚˇ *, -mode_t -, -dev_t -); - -432 -mode_t - - `umask -(mode_t); - -434 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -435 #iâdeŕ -_FILESEC_T - - -436  -_fžeŁc -; - -437  -_fžeŁc - * - tfžeŁc_t -; - -438  - #_FILESEC_T - - - ) - -440  - `chćags -(cÚˇ *, -__ušt32_t -); - -441  - `chmodx_Ĺ -(cÚˇ *, -fžeŁc_t -); - -442  - `fchćags -(, -__ušt32_t -); - -443  - `fchmodx_Ĺ -(, -fžeŁc_t -); - -444  - $fˇ©x_Ĺ -(,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -fˇ©x_Ĺ -); - -445  - `lchćags -(cÚˇ *, -__ušt32_t -); - -446  - `lchmod -(cÚˇ *, -mode_t -); - -447  - $lˇ©x_Ĺ -(cÚˇ *,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -lˇ©x_Ĺ -); - -448  - `mkdśx_Ĺ -(cÚˇ *, -fžeŁc_t -); - -449  - `mkfifox_Ĺ -(cÚˇ *, -fžeŁc_t -); - -450  - $ˇ©x_Ĺ -(cÚˇ *,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -ˇ©x_Ĺ -); - -451  - `umaskx_Ĺ -( -fžeŁc_t -); - -453  - `fˇ©x64_Ĺ -(,  -ˇ©64 - *, -fžeŁc_t -); - -454  - `lˇ©x64_Ĺ -(cÚˇ *,  -ˇ©64 - *, -fžeŁc_t -); - -455  - `ˇ©x64_Ĺ -(cÚˇ *,  -ˇ©64 - *, -fžeŁc_t -); - -456  - `fˇ©64 -(,  -ˇ©64 - *); - -457  - `lˇ©64 -(cÚˇ *,  -ˇ©64 - *); - -458  - `ˇ©64 -(cÚˇ *,  -ˇ©64 - *); - -461 -__END_DECLS - - - @/usr/include/sys/time.h - -64 #iâdeŕ -_SYS_TIME_H_ - - -65  - #_SYS_TIME_H_ - - - ) - -67  - ~ - -68  - ~ - -74  - #__Ăed_fd_Łt - - - ) - -75  - #__Ăed_ˇruů_timeĄec - - - ) - -76  - #__Ăed_ˇruů_timev® - - - ) - -77  - ~ - -79 #iâdef -_TIME_T - - -80  - #_TIME_T - - - ) - -81  -__d¬wš_time_t - - ttime_t -; - -84 #iâdeŕ -_SUSECONDS_T - - -85  - #_SUSECONDS_T - - - ) - -86  -__d¬wš_suŁcÚds_t - - tsuŁcÚds_t -; - -93  - s™im”v® - { - -94  -timev® - - m™_š‹rv® -; - -95  -timev® - - m™_v®ue -; - -102  - #ITIMER_REAL - 0 - - ) - -103  - #ITIMER_VIRTUAL - 1 - - ) - -104  - #ITIMER_PROF - 2 - - ) - -112 #iâdef -FD_SETSIZE - - -113  - #FD_SETSIZE - -__DARWIN_FD_SETSIZE - - - ) - -115 #iâdeŕ -FD_SET - - -116  - #FD_SET -( -n -, -p -č - `__DARWIN_FD_SET -Ň,…) - - ) - -118 #iâdef -FD_CLR - - -119  - #FD_CLR -( -n -, -p -č - `__DARWIN_FD_CLR -Ň,…) - - ) - -121 #iâdeŕ -FD_ISSET - - -122  - #FD_ISSET -( -n -, -p -č - `__DARWIN_FD_ISSET -Ň,…) - - ) - -124 #iâdeŕ -FD_ZERO - - -125  - #FD_ZERO -( -p -č - `__DARWIN_FD_ZERO -Ő) - - ) - -128 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -130 #iâdeŕ -FD_COPY - - -131  - #FD_COPY -( -f -, -t -č - `__DARWIN_FD_COPY -(f,) - - ) - -135  - #TIMEVAL_TO_TIMESPEC -( -tv -, -ts -) { \ - -136 ( -ts -)-> -tv_Łc - = ( -tv -)->tv_sec; \ - -137 ( -ts -)-> -tv_nŁc - = ( -tv -)-> -tv_uŁc - * 1000; \ - -138 } - - ) - -139  - #TIMESPEC_TO_TIMEVAL -( -tv -, -ts -) { \ - -140 ( -tv -)-> -tv_Łc - = ( -ts -)->tv_sec; \ - -141 ( -tv -)-> -tv_uŁc - = ( -ts -)-> -tv_nŁc - / 1000; \ - -142 } - - ) - -144  - stimezÚe - { - -145  - mtz_mšu‹sweˇ -; - -146  - mtz_dˇtime -; - -148  - #DST_NONE - 0 - - ) - -149  - #DST_USA - 1 - - ) - -150  - #DST_AUST - 2 - - ) - -151  - #DST_WET - 3 - - ) - -152  - #DST_MET - 4 - - ) - -153  - #DST_EET - 5 - - ) - -154  - #DST_CAN - 6 - - ) - -157  - #tim”ţ—r -( -tvp -čŃvp)-> -tv_Łc - = (tvp)-> -tv_uŁc - = 0 - - ) - -158  - #tim”isŁt -( -tvp -č(Ńvp)-> -tv_Łc - || (tvp)-> -tv_uŁc -) - - ) - -159  - #tim”cmp -( -tvp -, -uvp -, -cmp -) \ - -160 ((( -tvp -)-> -tv_Łc - =đ( -uvp -)->tv_sec) ? \ - -161 (( -tvp -)-> -tv_uŁc - - `cmp - ( -uvp -)->tv_usec) : \ - -162 (( -tvp -)-> -tv_Łc - - `cmp - ( -uvp -)->tv_Łc)) - - ) - -163  - #tim”add -( -tvp -, -uvp -, -vvp -) \ - -165 ( -vvp -)-> -tv_Łc - = ( -tvp -)->tv_Łř+ ( -uvp -)->tv_sec; \ - -166 ( -vvp -)-> -tv_uŁc - = ( -tvp -)->tv_uŁř+ ( -uvp -)->tv_usec; \ - -167 iŕ(( -vvp -)-> -tv_uŁc - >= 1000000) { \ - -168 ( -vvp -)-> -tv_Łc -++; \ - -169 ( -vvp -)-> -tv_uŁc - -= 1000000; \ - -171 } 0) - - ) - -172  - #tim”sub -( -tvp -, -uvp -, -vvp -) \ - -174 ( -vvp -)-> -tv_Łc - = ( -tvp -)->tv_Łř- ( -uvp -)->tv_sec; \ - -175 ( -vvp -)-> -tv_uŁc - = ( -tvp -)->tv_uŁř- ( -uvp -)->tv_usec; \ - -176 iŕ(( -vvp -)-> -tv_uŁc - < 0) { \ - -177 ( -vvp -)-> -tv_Łc ---; \ - -178 ( -vvp -)-> -tv_uŁc - += 1000000; \ - -180 } 0) - - ) - -182  - #timev®cmp -( -l -, -r -, -cmp -č - `tim”cmp -Ö,„, cmpč - - ) - -187  - sţockšfo - { - -188  - mhz -; - -189  - mtick -; - -190  - mtickadj -; - -191  - mˇ©hz -; - -192  - m´ofhz -; - -197 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -198  - ~ - -201 - g__BEGIN_DECLS - - -203 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -204  -adjtime -(cÚˇ  -timev® - *, timeval *); - -205  -futimes -(, cÚˇ  -timev® - *); - -206  -lutimes -(cÚˇ *, cÚˇ  -timev® - *); - -207  -ىimeofday -(cÚˇ  -timev® - *, cÚˇ  -timezÚe - *); - -210  -g‘™im” -(,  -™im”v® - *); - -211  -g‘timeofday -( -timev® - * -__»ˇriů -, * __restrict); - -213  - ~ - -215  -Łt™im” -(, cÚˇ  -™im”v® - * -__»ˇriů -, - -216  -™im”v® - * -__»ˇriů -); - -217  -utimes -(cÚˇ *, cÚˇ  -timev® - *); - -219 - g__END_DECLS - - - @/usr/include/sys/types.h - -69 #iâdeŕ -_SYS_TYPES_H_ - - -70  - #_SYS_TYPES_H_ - - - ) - -72  - ~ - -74 #iâdeŕ -__ASSEMBLER__ - - -75  - ~ - -78  - ~ - -79  - ~ - -81  - ~ - -83 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -84  - tu_ch¬ -; - -85  - tu_shÜt -; - -86  - tu_št -; - -87 #iâdeŕ -_U_LONG - - -88  - tu_lÚg -; - -89  - #_U_LONG - - - ) - -91  - tushÜt -; - -92  - tušt -; - -95  -u_št64_t - - tu_quad_t -; - -96  -št64_t - - tquad_t -; - -97  -quad_t - * - tqaddr_t -; - -99 * - t˙ddr_t -; - -100  -št32_t - - tdaddr_t -; - -102 #iâdeŕ -_DEV_T - - -103  -__d¬wš_dev_t - - tdev_t -; - -104  - #_DEV_T - - - ) - -107  -u_št32_t - - tfix±_t -; - -109 #iâdeŕ -_BLKCNT_T - - -110  -__d¬wš_blkút_t - - tblkút_t -; - -111  - #_BLKCNT_T - - - ) - -114 #iâdeŕ -_BLKSIZE_T - - -115  -__d¬wš_blksize_t - - tblksize_t -; - -116  - #_BLKSIZE_T - - - ) - -119 #iâdeŕ -_GID_T - - -120  -__d¬wš_gid_t - - tgid_t -; - -121  - #_GID_T - - - ) - -124 #iâdeŕ -_IN_ADDR_T - - -125  - #_IN_ADDR_T - - - ) - -126  -__ušt32_t - - tš_addr_t -; - -129 #iâdeŕ -_IN_PORT_T - - -130  - #_IN_PORT_T - - - ) - -131  -__ušt16_t - - tš_pÜt_t -; - -134 #iâdef -_INO_T - - -135  -__d¬wš_šo_t - - tšo_t -; - -136  - #_INO_T - - - ) - -139 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -140 #iâdef -_INO64_T - - -141  -__d¬wš_šo64_t - - tšo64_t -; - -142  - #_INO64_T - - - ) - -146 #iâdeŕ -_KEY_T - - -147  - #_KEY_T - - - ) - -148  -__št32_t - - tkey_t -; - -151 #iâdef -_MODE_T - - -152  -__d¬wš_mode_t - - tmode_t -; - -153  - #_MODE_T - - - ) - -156 #iâdeŕ -_NLINK_T - - -157  -__ušt16_t - - tĆšk_t -; - -158  - #_NLINK_T - - - ) - -161 #iâdeŕ -_ID_T - - -162  - #_ID_T - - - ) - -163  -__d¬wš_id_t - - tid_t -; - -166 #iâdeŕ -_PID_T - - -167  -__d¬wš_pid_t - - tpid_t -; - -168  - #_PID_T - - - ) - -171 #iâdeŕ -_OFF_T - - -172  -__d¬wš_off_t - - toff_t -; - -173  - #_OFF_T - - - ) - -176  -št32_t - - tŁgsz_t -; - -177  -št32_t - - tswblk_t -; - -179 #iâdeŕ -_UID_T - - -180  -__d¬wš_uid_t - - tuid_t -; - -181  - #_UID_T - - - ) - -184 #iâdeŕ -_ID_T - - -185  -__d¬wš_id_t - - tid_t -; - -186  - #_ID_T - - - ) - -189 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -191 #iŕ -defšed -( -__ýluĄlus -) - -197  -šlše - -__št32_t - - $majÜ -( -__ušt32_t - -_x -) - -199  ( -__št32_t -)((( -__ušt32_t -) -_x - >> 24) & 0xff); - -200 - } -} - -202  -šlše - -__št32_t - - $mšÜ -( -__ušt32_t - -_x -) - -204  ( -__št32_t -)(( -_x -) & 0xffffff); - -205 - } -} - -207  -šlše - -dev_t - - $makedev -( -__ušt32_t - -_majÜ -, __ušt32_ -_mšÜ -) - -209  ( -dev_t -)((( -_majÜ -č<< 24č| ( -_mšÜ -)); - -210 - } -} - -214  - #majÜ -( -x -č(( -št32_t -)((( -u_št32_t -)(xč>> 24č& 0xff)) - - ) - -215  - #mšÜ -( -x -č(( -št32_t -)((xč& 0xffffff)) - - ) - -216  - #makedev -( -x -, -y -č(( -dev_t -)(((xč<< 24č| (y))) - - ) - -221 #iâdef -_CLOCK_T - - -222  - #_CLOCK_T - - - ) - -223  -__d¬wš_ţock_t - - tţock_t -; - -226 #iâdeŕ -_SIZE_T - - -227  - #_SIZE_T - - - ) - -230  -__d¬wš_size_t - - tsize_t -; - -233 #iâdef -_SSIZE_T - - -234  - #_SSIZE_T - - - ) - -235  -__d¬wš_ssize_t - - tssize_t -; - -238 #iâdef -_TIME_T - - -239  - #_TIME_T - - - ) - -240  -__d¬wš_time_t - - ttime_t -; - -243 #iâdeŕ -_USECONDS_T - - -244  - #_USECONDS_T - - - ) - -245  -__d¬wš_uŁcÚds_t - - tuŁcÚds_t -; - -248 #iâdeŕ -_SUSECONDS_T - - -249  - #_SUSECONDS_T - - - ) - -250  -__d¬wš_suŁcÚds_t - - tsuŁcÚds_t -; - -253 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -259  - #__Ăed_fd_Łt - - - ) - -260  - ~ - -262  - #NBBY - -__DARWIN_NBBY - - - ) - -263  - #NFDBITS - -__DARWIN_NFDBITS - - - ) - -264  - #howmŞy -( -x -, -y -č - `__DARWIN_howmŞy -(x, yč - - ) - -265  -__št32_t - - tfd_mask -; - -273 #iâdef -FD_SETSIZE - - -274  - #FD_SETSIZE - -__DARWIN_FD_SETSIZE - - - ) - -276 #iâdeŕ -FD_SET - - -277  - #FD_SET -( -n -, -p -č - `__DARWIN_FD_SET -Ň,…) - - ) - -279 #iâdeŕ -FD_CLR - - -280  - #FD_CLR -( -n -, -p -č - `__DARWIN_FD_CLR -Ň,…) - - ) - -282 #iâdeŕ -FD_ISSET - - -283  - #FD_ISSET -( -n -, -p -č - `__DARWIN_FD_ISSET -Ň,…) - - ) - -285 #iâdeŕ -FD_ZERO - - -286  - #FD_ZERO -( -p -č - `__DARWIN_FD_ZERO -Ő) - - ) - -288 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -289 #iâdeŕ -FD_COPY - - -290  - #FD_COPY -( -f -, -t -č - `__DARWIN_FD_COPY -(f,) - - ) - -295 #iŕ -defšed -( -__STDC__ -č&& defšed( -KERNEL -) - -301  - g´oc -; - -302  - gpg˝ -; - -303  - guüed -; - -304  - gru§ge -; - -305  - gfže -; - -306  - gbuf -; - -307  - g‰y -; - -308  - guio -; - -314 #iâdeŕ -__POSIX_LIB__ - - -316 #iâdeŕ -_PTHREAD_ATTR_T - - -317  - #_PTHREAD_ATTR_T - - - ) - -318  -__d¬wš_±h»ad_©Ś_t - - t±h»ad_©Ś_t -; - -320 #iâdeŕ -_PTHREAD_COND_T - - -321  - #_PTHREAD_COND_T - - - ) - -322  -__d¬wš_±h»ad_cÚd_t - - t±h»ad_cÚd_t -; - -324 #iâdeŕ -_PTHREAD_CONDATTR_T - - -325  - #_PTHREAD_CONDATTR_T - - - ) - -326  -__d¬wš_±h»ad_cÚd©Ś_t - - t±h»ad_cÚd©Ś_t -; - -328 #iâdeŕ -_PTHREAD_MUTEX_T - - -329  - #_PTHREAD_MUTEX_T - - - ) - -330  -__d¬wš_±h»ad_mu‹x_t - - t±h»ad_mu‹x_t -; - -332 #iâdeŕ -_PTHREAD_MUTEXATTR_T - - -333  - #_PTHREAD_MUTEXATTR_T - - - ) - -334  -__d¬wš_±h»ad_mu‹x©Ś_t - - t±h»ad_mu‹x©Ś_t -; - -336 #iâdeŕ -_PTHREAD_ONCE_T - - -337  - #_PTHREAD_ONCE_T - - - ) - -338  -__d¬wš_±h»ad_Úű_t - - t±h»ad_Úű_t -; - -340 #iâdeŕ -_PTHREAD_RWLOCK_T - - -341  - #_PTHREAD_RWLOCK_T - - - ) - -342  -__d¬wš_±h»ad_rwlock_t - - t±h»ad_rwlock_t -; - -344 #iâdeŕ -_PTHREAD_RWLOCKATTR_T - - -345  - #_PTHREAD_RWLOCKATTR_T - - - ) - -346  -__d¬wš_±h»ad_rwlock©Ś_t - - t±h»ad_rwlock©Ś_t -; - -348 #iâdeŕ -_PTHREAD_T - - -349  - #_PTHREAD_T - - - ) - -350  -__d¬wš_±h»ad_t - - t±h»ad_t -; - -355 #iâdeŕ -_PTHREAD_KEY_T - - -356  - #_PTHREAD_KEY_T - - - ) - -357  -__d¬wš_±h»ad_key_t - - t±h»ad_key_t -; - -361 #iâdeŕ -_FSBLKCNT_T - - -362  - #_FSBLKCNT_T - - - ) - -363  -__d¬wš_fsblkút_t - - tfsblkút_t -; - -366 #iâdeŕ -_FSFILCNT_T - - -367  - #_FSFILCNT_T - - - ) - -368  -__d¬wš_fsfžút_t - - tfsfžút_t -; - - @/usr/include/unistd.h - -68 #iâdeŕ -_UNISTD_H_ - - -69  - #_UNISTD_H_ - - - ) - -71  - ~<_tyłs.h -> - -72  - ~ - -74 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -75 #iâdeŕ -_DEV_T - - -76  - #_DEV_T - - - ) - -77  -__d¬wš_dev_t - - tdev_t -; - -81 #iâdeŕ -_GID_T - - -82  - #_GID_T - - - ) - -83  -__d¬wš_gid_t - - tgid_t -; - -86 #iâdeŕ -_INTPTR_T - - -87  - #_INTPTR_T - - - ) - -88  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -91 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -92 #iâdeŕ -_MODE_T - - -93  - #_MODE_T - - - ) - -94  -__d¬wš_mode_t - - tmode_t -; - -98 #iâdeŕ -_OFF_T - - -99  - #_OFF_T - - - ) - -100  -__d¬wš_off_t - - toff_t -; - -103 #iâdeŕ -_PID_T - - -104  - #_PID_T - - - ) - -105  -__d¬wš_pid_t - - tpid_t -; - -108 #iâdeŕ -_SIZE_T - - -109  - #_SIZE_T - - - ) - -112  -__d¬wš_size_t - - tsize_t -; - -115 #iâdef -_SSIZE_T - - -116  - #_SSIZE_T - - - ) - -117  -__d¬wš_ssize_t - - tssize_t -; - -120 #iâdeŕ -_UID_T - - -121  - #_UID_T - - - ) - -122  -__d¬wš_uid_t - - tuid_t -; - -125 #iâdeŕ -_USECONDS_T - - -126  - #_USECONDS_T - - - ) - -127  -__d¬wš_uŁcÚds_t - - tuŁcÚds_t -; - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -131 #iâdeŕ -_UUID_T - - -132  - #_UUID_T - - - ) - -133  -__d¬wš_uuid_t - - tuuid_t -; - -137  - #STDIN_FILENO - 0 - - ) - -138  - #STDOUT_FILENO - 1 - - ) - -139  - #STDERR_FILENO - 2 - - ) - -141 #iâdeŕ -NULL - - -142  - #NULL - -__DARWIN_NULL - - - ) - -147  - #_XOPEN_VERSION - 600 - - ) - -148  - #_XOPEN_XCU_VERSION - 4 - - ) - -152  - #_POSIX_ADVISORY_INFO - (-1č - - ) - -153  - #_POSIX_ASYNCHRONOUS_IO - (-1č - - ) - -154  - #_POSIX_BARRIERS - (-1č - - ) - -155  - #_POSIX_CHOWN_RESTRICTED - 200112L - - ) - -156  - #_POSIX_CLOCK_SELECTION - (-1č - - ) - -157  - #_POSIX_CPUTIME - (-1č - - ) - -158  - #_POSIX_FSYNC - 200112L - - ) - -159  - #_POSIX_IPV6 - 200112L - - ) - -160  - #_POSIX_JOB_CONTROL - 200112L - - ) - -161  - #_POSIX_MAPPED_FILES - 200112L - - ) - -162  - #_POSIX_MEMLOCK - (-1č - - ) - -163  - #_POSIX_MEMLOCK_RANGE - (-1č - - ) - -164  - #_POSIX_MEMORY_PROTECTION - 200112L - - ) - -165  - #_POSIX_MESSAGE_PASSING - (-1č - - ) - -166  - #_POSIX_MONOTONIC_CLOCK - (-1č - - ) - -167  - #_POSIX_NO_TRUNC - 200112L - - ) - -168  - #_POSIX_PRIORITIZED_IO - (-1č - - ) - -169  - #_POSIX_PRIORITY_SCHEDULING - (-1č - - ) - -170  - #_POSIX_RAW_SOCKETS - (-1č - - ) - -171  - #_POSIX_READER_WRITER_LOCKS - 200112L - - ) - -172  - #_POSIX_REALTIME_SIGNALS - (-1č - - ) - -173  - #_POSIX_REGEXP - 200112L - - ) - -174  - #_POSIX_SAVED_IDS - 200112L - - ) - -175  - #_POSIX_SEMAPHORES - (-1č - - ) - -176  - #_POSIX_SHARED_MEMORY_OBJECTS - (-1č - - ) - -177  - #_POSIX_SHELL - 200112L - - ) - -178  - #_POSIX_SPAWN - (-1č - - ) - -179  - #_POSIX_SPIN_LOCKS - (-1č - - ) - -180  - #_POSIX_SPORADIC_SERVER - (-1č - - ) - -181  - #_POSIX_SYNCHRONIZED_IO - (-1č - - ) - -182  - #_POSIX_THREAD_ATTR_STACKADDR - 200112L - - ) - -183  - #_POSIX_THREAD_ATTR_STACKSIZE - 200112L - - ) - -184  - #_POSIX_THREAD_CPUTIME - (-1č - - ) - -185  - #_POSIX_THREAD_PRIO_INHERIT - (-1č - - ) - -186  - #_POSIX_THREAD_PRIO_PROTECT - (-1č - - ) - -187  - #_POSIX_THREAD_PRIORITY_SCHEDULING - (-1č - - ) - -188  - #_POSIX_THREAD_PROCESS_SHARED - 200112L - - ) - -189  - #_POSIX_THREAD_SAFE_FUNCTIONS - 200112L - - ) - -190  - #_POSIX_THREAD_SPORADIC_SERVER - (-1č - - ) - -191  - #_POSIX_THREADS - 200112L - - ) - -192  - #_POSIX_TIMEOUTS - (-1č - - ) - -193  - #_POSIX_TIMERS - (-1č - - ) - -194  - #_POSIX_TRACE - (-1č - - ) - -195  - #_POSIX_TRACE_EVENT_FILTER - (-1č - - ) - -196  - #_POSIX_TRACE_INHERIT - (-1č - - ) - -197  - #_POSIX_TRACE_LOG - (-1č - - ) - -198  - #_POSIX_TYPED_MEMORY_OBJECTS - (-1č - - ) - -199 #iâdeŕ -_POSIX_VDISABLE - - -200  - #_POSIX_VDISABLE - 0xfŕ - - ) - -203  - #_POSIX2_C_BIND - 200112L - - ) - -204  - #_POSIX2_C_DEV - 200112L - - ) - -205  - #_POSIX2_CHAR_TERM - 200112L - - ) - -206  - #_POSIX2_FORT_DEV - (-1č - - ) - -207  - #_POSIX2_FORT_RUN - 200112L - - ) - -208  - #_POSIX2_LOCALEDEF - 200112L - - ) - -209  - #_POSIX2_PBS - (-1) - - ) - -210  - #_POSIX2_PBS_ACCOUNTING - (-1) - - ) - -211  - #_POSIX2_PBS_CHECKPOINT - (-1) - - ) - -212  - #_POSIX2_PBS_LOCATE - (-1) - - ) - -213  - #_POSIX2_PBS_MESSAGE - (-1) - - ) - -214  - #_POSIX2_PBS_TRACK - (-1) - - ) - -215  - #_POSIX2_SW_DEV - 200112L - - ) - -216  - #_POSIX2_UPE - 200112L - - ) - -218  - #_V6_ILP32_OFF32 - (-1) - - ) - -219  - #_V6_ILP32_OFFBIG - (1) - - ) - -220  - #_V6_LP64_OFF64 - (-1) - - ) - -221  - #_V6_LPBIG_OFFBIG - (-1) - - ) - -223  - #_XBS5_ILP32_OFF32 - -_V6_ILP32_OFF32 - - - ) - -224  - #_XBS5_ILP32_OFFBIG - -_V6_ILP32_OFFBIG - - - ) - -225  - #_XBS5_LP64_OFF64 - -_V6_LP64_OFF64 - - - ) - -226  - #_XBS5_LPBIG_OFFBIG - -_V6_LPBIG_OFFBIG - - - ) - -228  - #_XOPEN_CRYPT - (1) - - ) - -229  - #_XOPEN_ENH_I18N - (1č - - ) - -230  - #_XOPEN_LEGACY - (-1č - - ) - -231  - #_XOPEN_REALTIME - (-1č - - ) - -232  - #_XOPEN_REALTIME_THREADS - (-1č - - ) - -233  - #_XOPEN_SHM - (1) - - ) - -234  - #_XOPEN_STREAMS - (-1) - - ) - -235  - #_XOPEN_UNIX - (1) - - ) - -238  - #F_ULOCK - 0 - - ) - -239  - #F_LOCK - 1 - - ) - -240  - #F_TLOCK - 2 - - ) - -241  - #F_TEST - 3 - - ) - -244  - #_SC_ARG_MAX - 1 - - ) - -245  - #_SC_CHILD_MAX - 2 - - ) - -246  - #_SC_CLK_TCK - 3 - - ) - -247  - #_SC_NGROUPS_MAX - 4 - - ) - -248  - #_SC_OPEN_MAX - 5 - - ) - -249  - #_SC_JOB_CONTROL - 6 - - ) - -250  - #_SC_SAVED_IDS - 7 - - ) - -251  - #_SC_VERSION - 8 - - ) - -252  - #_SC_BC_BASE_MAX - 9 - - ) - -253  - #_SC_BC_DIM_MAX - 10 - - ) - -254  - #_SC_BC_SCALE_MAX - 11 - - ) - -255  - #_SC_BC_STRING_MAX - 12 - - ) - -256  - #_SC_COLL_WEIGHTS_MAX - 13 - - ) - -257  - #_SC_EXPR_NEST_MAX - 14 - - ) - -258  - #_SC_LINE_MAX - 15 - - ) - -259  - #_SC_RE_DUP_MAX - 16 - - ) - -260  - #_SC_2_VERSION - 17 - - ) - -261  - #_SC_2_C_BIND - 18 - - ) - -262  - #_SC_2_C_DEV - 19 - - ) - -263  - #_SC_2_CHAR_TERM - 20 - - ) - -264  - #_SC_2_FORT_DEV - 21 - - ) - -265  - #_SC_2_FORT_RUN - 22 - - ) - -266  - #_SC_2_LOCALEDEF - 23 - - ) - -267  - #_SC_2_SW_DEV - 24 - - ) - -268  - #_SC_2_UPE - 25 - - ) - -269  - #_SC_STREAM_MAX - 26 - - ) - -270  - #_SC_TZNAME_MAX - 27 - - ) - -271  - #_SC_ASYNCHRONOUS_IO - 28 - - ) - -272  - #_SC_PAGESIZE - 29 - - ) - -273  - #_SC_MEMLOCK - 30 - - ) - -274  - #_SC_MEMLOCK_RANGE - 31 - - ) - -275  - #_SC_MEMORY_PROTECTION - 32 - - ) - -276  - #_SC_MESSAGE_PASSING - 33 - - ) - -277  - #_SC_PRIORITIZED_IO - 34 - - ) - -278  - #_SC_PRIORITY_SCHEDULING - 35 - - ) - -279  - #_SC_REALTIME_SIGNALS - 36 - - ) - -280  - #_SC_SEMAPHORES - 37 - - ) - -281  - #_SC_FSYNC - 38 - - ) - -282  - #_SC_SHARED_MEMORY_OBJECTS - 39 - - ) - -283  - #_SC_SYNCHRONIZED_IO - 40 - - ) - -284  - #_SC_TIMERS - 41 - - ) - -285  - #_SC_AIO_LISTIO_MAX - 42 - - ) - -286  - #_SC_AIO_MAX - 43 - - ) - -287  - #_SC_AIO_PRIO_DELTA_MAX - 44 - - ) - -288  - #_SC_DELAYTIMER_MAX - 45 - - ) - -289  - #_SC_MQ_OPEN_MAX - 46 - - ) - -290  - #_SC_MAPPED_FILES - 47 - - ) - -291  - #_SC_RTSIG_MAX - 48 - - ) - -292  - #_SC_SEM_NSEMS_MAX - 49 - - ) - -293  - #_SC_SEM_VALUE_MAX - 50 - - ) - -294  - #_SC_SIGQUEUE_MAX - 51 - - ) - -295  - #_SC_TIMER_MAX - 52 - - ) - -296 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -297  - #_SC_NPROCESSORS_CONF - 57 - - ) - -298  - #_SC_NPROCESSORS_ONLN - 58 - - ) - -300  - #_SC_2_PBS - 59 - - ) - -301  - #_SC_2_PBS_ACCOUNTING - 60 - - ) - -302  - #_SC_2_PBS_CHECKPOINT - 61 - - ) - -303  - #_SC_2_PBS_LOCATE - 62 - - ) - -304  - #_SC_2_PBS_MESSAGE - 63 - - ) - -305  - #_SC_2_PBS_TRACK - 64 - - ) - -306  - #_SC_ADVISORY_INFO - 65 - - ) - -307  - #_SC_BARRIERS - 66 - - ) - -308  - #_SC_CLOCK_SELECTION - 67 - - ) - -309  - #_SC_CPUTIME - 68 - - ) - -310  - #_SC_FILE_LOCKING - 69 - - ) - -311  - #_SC_GETGR_R_SIZE_MAX - 70 - - ) - -312  - #_SC_GETPW_R_SIZE_MAX - 71 - - ) - -313  - #_SC_HOST_NAME_MAX - 72 - - ) - -314  - #_SC_LOGIN_NAME_MAX - 73 - - ) - -315  - #_SC_MONOTONIC_CLOCK - 74 - - ) - -316  - #_SC_MQ_PRIO_MAX - 75 - - ) - -317  - #_SC_READER_WRITER_LOCKS - 76 - - ) - -318  - #_SC_REGEXP - 77 - - ) - -319  - #_SC_SHELL - 78 - - ) - -320  - #_SC_SPAWN - 79 - - ) - -321  - #_SC_SPIN_LOCKS - 80 - - ) - -322  - #_SC_SPORADIC_SERVER - 81 - - ) - -323  - #_SC_THREAD_ATTR_STACKADDR - 82 - - ) - -324  - #_SC_THREAD_ATTR_STACKSIZE - 83 - - ) - -325  - #_SC_THREAD_CPUTIME - 84 - - ) - -326  - #_SC_THREAD_DESTRUCTOR_ITERATIONS - 85 - - ) - -327  - #_SC_THREAD_KEYS_MAX - 86 - - ) - -328  - #_SC_THREAD_PRIO_INHERIT - 87 - - ) - -329  - #_SC_THREAD_PRIO_PROTECT - 88 - - ) - -330  - #_SC_THREAD_PRIORITY_SCHEDULING - 89 - - ) - -331  - #_SC_THREAD_PROCESS_SHARED - 90 - - ) - -332  - #_SC_THREAD_SAFE_FUNCTIONS - 91 - - ) - -333  - #_SC_THREAD_SPORADIC_SERVER - 92 - - ) - -334  - #_SC_THREAD_STACK_MIN - 93 - - ) - -335  - #_SC_THREAD_THREADS_MAX - 94 - - ) - -336  - #_SC_TIMEOUTS - 95 - - ) - -337  - #_SC_THREADS - 96 - - ) - -338  - #_SC_TRACE - 97 - - ) - -339  - #_SC_TRACE_EVENT_FILTER - 98 - - ) - -340  - #_SC_TRACE_INHERIT - 99 - - ) - -341  - #_SC_TRACE_LOG - 100 - - ) - -342  - #_SC_TTY_NAME_MAX - 101 - - ) - -343  - #_SC_TYPED_MEMORY_OBJECTS - 102 - - ) - -344  - #_SC_V6_ILP32_OFF32 - 103 - - ) - -345  - #_SC_V6_ILP32_OFFBIG - 104 - - ) - -346  - #_SC_V6_LP64_OFF64 - 105 - - ) - -347  - #_SC_V6_LPBIG_OFFBIG - 106 - - ) - -348  - #_SC_IPV6 - 118 - - ) - -349  - #_SC_RAW_SOCKETS - 119 - - ) - -350  - #_SC_SYMLOOP_MAX - 120 - - ) - -351  - #_SC_ATEXIT_MAX - 107 - - ) - -352  - #_SC_IOV_MAX - 56 - - ) - -353  - #_SC_PAGE_SIZE - -_SC_PAGESIZE - - - ) - -354  - #_SC_XOPEN_CRYPT - 108 - - ) - -355  - #_SC_XOPEN_ENH_I18N - 109 - - ) - -356  - #_SC_XOPEN_LEGACY - 110 - - ) - -357  - #_SC_XOPEN_REALTIME - 111 - - ) - -358  - #_SC_XOPEN_REALTIME_THREADS - 112 - - ) - -359  - #_SC_XOPEN_SHM - 113 - - ) - -360  - #_SC_XOPEN_STREAMS - 114 - - ) - -361  - #_SC_XOPEN_UNIX - 115 - - ) - -362  - #_SC_XOPEN_VERSION - 116 - - ) - -363  - #_SC_XOPEN_XCU_VERSION - 121 - - ) - -364  - #_SC_XBS5_ILP32_OFF32 - 122 - - ) - -365  - #_SC_XBS5_ILP32_OFFBIG - 123 - - ) - -366  - #_SC_XBS5_LP64_OFF64 - 124 - - ) - -367  - #_SC_XBS5_LPBIG_OFFBIG - 125 - - ) - -368  - #_SC_SS_REPL_MAX - 126 - - ) - -369  - #_SC_TRACE_EVENT_NAME_MAX - 127 - - ) - -370  - #_SC_TRACE_NAME_MAX - 128 - - ) - -371  - #_SC_TRACE_SYS_MAX - 129 - - ) - -372  - #_SC_TRACE_USER_EVENT_MAX - 130 - - ) - -373  - #_SC_PASS_MAX - 131 - - ) - -375 #iâdeŕ -_CS_PATH - - -376  - #_CS_PATH - 1 - - ) - -378  - #_CS_POSIX_V6_ILP32_OFF32_CFLAGS - 2 - - ) - -379  - #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS - 3 - - ) - -380  - #_CS_POSIX_V6_ILP32_OFF32_LIBS - 4 - - ) - -381  - #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS - 5 - - ) - -382  - #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS - 6 - - ) - -383  - #_CS_POSIX_V6_ILP32_OFFBIG_LIBS - 7 - - ) - -384  - #_CS_POSIX_V6_LP64_OFF64_CFLAGS - 8 - - ) - -385  - #_CS_POSIX_V6_LP64_OFF64_LDFLAGS - 9 - - ) - -386  - #_CS_POSIX_V6_LP64_OFF64_LIBS - 10 - - ) - -387  - #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS - 11 - - ) - -388  - #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS - 12 - - ) - -389  - #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS - 13 - - ) - -390  - #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS - 14 - - ) - -393  - #_CS_XBS5_ILP32_OFF32_CFLAGS - 20 - - ) - -394  - #_CS_XBS5_ILP32_OFF32_LDFLAGS - 21 - - ) - -395  - #_CS_XBS5_ILP32_OFF32_LIBS - 22 - - ) - -396  - #_CS_XBS5_ILP32_OFF32_LINTFLAGS - 23 - - ) - -397  - #_CS_XBS5_ILP32_OFFBIG_CFLAGS - 24 - - ) - -398  - #_CS_XBS5_ILP32_OFFBIG_LDFLAGS - 25 - - ) - -399  - #_CS_XBS5_ILP32_OFFBIG_LIBS - 26 - - ) - -400  - #_CS_XBS5_ILP32_OFFBIG_LINTFLAGS - 27 - - ) - -401  - #_CS_XBS5_LP64_OFF64_CFLAGS - 28 - - ) - -402  - #_CS_XBS5_LP64_OFF64_LDFLAGS - 29 - - ) - -403  - #_CS_XBS5_LP64_OFF64_LIBS - 30 - - ) - -404  - #_CS_XBS5_LP64_OFF64_LINTFLAGS - 31 - - ) - -405  - #_CS_XBS5_LPBIG_OFFBIG_CFLAGS - 32 - - ) - -406  - #_CS_XBS5_LPBIG_OFFBIG_LDFLAGS - 33 - - ) - -407  - #_CS_XBS5_LPBIG_OFFBIG_LIBS - 34 - - ) - -408  - #_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS - 35 - - ) - -410  - #_CS_DARWIN_USER_DIR - 65536 - - ) - -411  - #_CS_DARWIN_USER_TEMP_DIR - 65537 - - ) - -412  - #_CS_DARWIN_USER_CACHE_DIR - 65538 - - ) - -414 -__BEGIN_DECLS - - -416  - $_ex™ -(č -__d—d2 -; - -417  - `acűss -(const *, ); - -419 - `®¬m -(); - -420  - `chdś -(const *); - -421  - `chown -(cÚˇ *, -uid_t -, -gid_t -); - -422  - $ţoŁ -(č - `__DARWIN_ALIAS_C -( -ţoŁ -); - -423 -size_t - - $cÚfˇr -(, *, -size_t -č - `__DARWIN_ALIAS -( -cÚfˇr -); - -424 * - `üy± -(const *, const *); - -425 * - `ů”mid -(*); - -426  - `dup -(); - -427  - `dup2 -(, ); - -428 #iŕ -__DARWIN_UNIX03 - - -429  - $’üy± -(*, č - `__DARWIN_ALIAS -( -’üy± -); - -431  - `’üy± -(*, ); - -433  - `exeţ -(const *, const *, ...); - -434  - `exeţe -(const *, const *, ...); - -435  - `exeţp -(const *, const *, ...); - -436  - `execv -(const *, * const *); - -437  - `execve -(const *, * const *, * const *); - -438  - `execvp -(const *, * const *); - -439  - `fchown -(, -uid_t -, -gid_t -); - -440  - `fchdś -(); - -441 -pid_t - - `fÜk -(); - -442  - `ĺ©hcÚf -(, ); - -443  - $fsync -(č - `__DARWIN_ALIAS_C -( -fsync -); - -444  - `árun˙‹ -(, -off_t -); - -445 * - `g‘cwd -(*, -size_t -); - -446 -gid_t - - `g‘egid -(); - -447 -uid_t - - `g‘euid -(); - -448 -gid_t - - `g‘gid -(); - -449  - `g‘groups -(, -gid_t - []); - -450  - `g‘hoˇid -(); - -451  - `g‘hoˇÇme -(*, -size_t -); - -452 * - `g‘logš -(); - -453  - `g‘logš_r -(*, -size_t -); - -454  - $g‘Ýt -(, * cÚˇ [], cÚˇ *č - `__DARWIN_ALIAS -( -g‘Ýt -); - -455 -pid_t - - `g‘pgid -(pid_t); - -456 -pid_t - - `g‘pg˝ -(); - -457 -pid_t - - `g‘pid -(); - -458 -pid_t - - `g‘µid -(); - -459 -pid_t - - `g‘sid -(pid_t); - -460 -uid_t - - `g‘uid -(); - -461 * - `g‘wd -(*); - -462  - `i§‰y -(); - -463  - $lchown -(cÚˇ *, -uid_t -, -gid_t -č - `__DARWIN_ALIAS -( -lchown -); - -464  - `lšk -(const *, const *); - -465  - $lockf -(, , -off_t -č - `__DARWIN_ALIAS_C -( -lockf -); - -466 -off_t - - `lŁek -(, off_t, ); - -467  - $niű -(č - `__DARWIN_ALIAS -( -niű -); - -468  - `·thcÚf -(const *, ); - -469  - $·uŁ -(č - `__DARWIN_ALIAS_C -( -·uŁ -); - -470  - `pťe -([2]); - -471 -ssize_t - - $´—d -(, *, -size_t -, -off_t -č - `__DARWIN_ALIAS_C -( -´—d -); - -472 -ssize_t - - $pwr™e -(, cÚˇ *, -size_t -, -off_t -č - `__DARWIN_ALIAS_C -( -pwr™e -); - -473 -ssize_t - - $»ad -(, *, -size_t -č - `__DARWIN_ALIAS_C -( -»ad -); - -474 -ssize_t - - `»adlšk -(cÚˇ * -__»ˇriů -, * __»ˇriů, -size_t -); - -475  - `rmdś -(const *); - -476  - `Ł‹gid -( -gid_t -); - -477  - `Ł‹uid -( -uid_t -); - -478  - `Łtgid -( -gid_t -); - -479  - `ŁŤgid -( -pid_t -,…id_t); - -480 #iŕ -__DARWIN_UNIX03 - - -481 -pid_t - - $ŁŤg˝ -(č - `__DARWIN_ALIAS -( -ŁŤg˝ -); - -483  - `ŁŤg˝ -( -pid_t - -pid -,…id_ -pg˝ -); - -485  - $ŁŚegid -( -gid_t -, gid_tč - `__DARWIN_ALIAS -( -ŁŚegid -); - -486  - $ŁŚeuid -( -uid_t -, uid_tč - `__DARWIN_ALIAS -( -ŁŚeuid -); - -487 -pid_t - - `Łtsid -(); - -488  - `Łtuid -( -uid_t -); - -490 - $¦“p -(č - `__DARWIN_ALIAS_C -( -¦“p -); - -491  - `swab -(cÚˇ * -__»ˇriů -, * __»ˇriů, -ssize_t -); - -492  - `symlšk -(const *, const *); - -493  - `sync -(); - -494  - `syscÚf -(); - -495 -pid_t - - `tcg‘pg˝ -(); - -496  - `tcŁŤg˝ -(, -pid_t -); - -497  - `Śun˙‹ -(cÚˇ *, -off_t -); - -498 * - `‰yÇme -(); - -499 #iŕ -__DARWIN_UNIX03 - - -500  - $‰yÇme_r -(, *, -size_t -č - `__DARWIN_ALIAS -( -‰yÇme_r -); - -502 * - `‰yÇme_r -(, *, -size_t -); - -504 -uŁcÚds_t - - -505 - `u®¬m -( -uŁcÚds_t -, useconds_t); - -506  - `uĆšk -(const *); - -507  - $u¦“p -( -uŁcÚds_t -č - `__DARWIN_ALIAS_C -( -u¦“p -); - -508 -pid_t - - `vfÜk -(); - -509 -ssize_t - - $wr™e -(, cÚˇ *, -size_t -č - `__DARWIN_ALIAS_C -( -wr™e -); - -511 * -ÝŹrg -; - -512  -Ýtšd -, -Ý‹Ľ -, -ÝtÝt -; - -514 #if ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -515  - ~ - -517  - $_Ex™ -(č -__d—d2 -; - -518  - `acűssx_Ĺ -(cÚˇ  -acűssx_desüťtÜ - *, -size_t -, *, -uid_t -); - -519  - `aců -(const *); - -520  - `add_´ofž -(*, -size_t -, , ); - -521 * - `brk -(const *); - -522  - `chroŮ -(const *); - -523  - `’duŁrsh–l -(); - -524  - `execvP -(const *, const *, * const *); - -525 * - `fćagˇoˇr -(); - -526  - `g‘dŹbËsize -(); - -527  - `g‘domašÇme -(*, ); - -528  - `g‘grou¶iˇ -(const *, , *, *); - -529 -mode_t - - `g‘mode -(const *, mode_t); - -530  - $g‘·gesize -(č -__pu»2 -; - -531 * - `g‘·ss -(const *); - -532  - `g‘ł”eid -(, -uid_t - *, -gid_t - *); - -533  - `g‘pgid -( -pid_t - -_pid -); - -534  - `g‘sgroups_Ĺ -(*, -uuid_t -); - -535  - `g‘sid -( -pid_t - -_pid -); - -536 * - `g‘uŁrsh–l -(); - -537  - `g‘wgroups_Ĺ -(*, -uuid_t -); - -538  - `š™groups -(const *, ); - -539  - `śuŁrok -(, , const *, const *); - -540  - `śuŁrok_§ -(const *, , , const *, const *); - -541  - `isŁtugid -(); - -542 * - `mkd‹mp -(*); - -543  - `mknod -(cÚˇ *, -mode_t -, -dev_t -); - -544  - `mkˇemp -(*); - -545  - `mkˇemps -(*, ); - -546 * - `mk‹mp -(*); - -547  - `nfssvc -(, *); - -548  - `´ofž -(*, -size_t -, , ); - -549  - `±h»ad_Łtugid_Ĺ -( -uid_t -, -gid_t -); - -550  - `±h»ad_g‘ugid_Ĺ -Đ -uid_t - *, -gid_t - *); - -551  - `rcmd -(**, , const *, const *, const *, *); - -552  - `rcmd_af -(**, , const *, const *, const *, *, - -554  - `»boŮ -(); - -555  - `»voke -(const *); - -556  - `ĽesvpÜt -(*); - -557  - `ĽesvpÜt_af -(*, ); - -558  - `ruŁrok -(const *, , const *, const *); - -559 * - `sbrk -(); - -560  - `ŁtdomašÇme -(const *, ); - -561  - `Łtgroups -(, cÚˇ -gid_t - *); - -562  - `Łthoˇid -(); - -563  - `ŁthoˇÇme -(const *, ); - -564 #iŕ -__DARWIN_UNIX03 - - -565  - $Łtkey -(cÚˇ *č - `__DARWIN_ALIAS -( -Łtkey -); - -567  - `Łtkey -(const *); - -569  - `ŁŽogš -(const *); - -570 * - `Łtmode -(const *); - -571  - `ŁŚgid -( -gid_t -); - -572  - `ŁŚuid -( -uid_t -); - -573  - `Łtsgroups_Ĺ -(, cÚˇ -uuid_t -); - -574  - `ŁtuŁrsh–l -(); - -575  - `Łtwgroups_Ĺ -(, cÚˇ -uuid_t -); - -576  - `ˇąofćags -(**, *, *); - -577  - `sw­Ú -(const *); - -578  - `sys˙Î -(, ...); - -579  - `‰y¦Ů -(); - -580  - `und–‘e -(const *); - -581  - `unwh™eout -(const *); - -582 * - `v®loc -( -size_t -); - -584 * -subÝŹrg -; - -585  - `g‘subÝt -(**, * const *, **); - -588 #ifdeŕ -__LP64__ - - -589  - $g‘©Śliˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -g‘©Śliˇ -); - -590  - $ŁŹ‰ľiˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -ŁŹ‰ľiˇ -); - -591  - `exchŞged©a -(const *,const *,); - -592  - `g‘dś’Ś›§‰r -(,*,*, -size_t -,*,*,*,); - -593  - `٬chfs -(const *,*,*,,,*); - -595  - `fsůl -(const *,,*,); - -597  - $g‘©Śliˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -g‘©Śliˇ -); - -598  - $ŁŹ‰ľiˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -ŁŹ‰ľiˇ -); - -599  - `exchŞged©a -(const *,const *,); - -600  - `g‘dś’Ś›§‰r -(,*,*, -size_t -,*,*,*,); - -601  - `٬chfs -(const *,*,*,,,*); - -603  - `fsůl -(const *,,*,); - -606  -ÝŚeŁt -; - -609 -__END_DECLS - - - @/usr/include/_types.h - -24 #iâdeŕ -__TYPES_H_ - - -25  - #__TYPES_H_ - - - ) - -27  - ~ - -29  - t__d¬wš_Ć_™em -; - -30  - t__d¬wš_wůżns_t -; - -31 #ifdeŕ -__LP64__ - - -32  -__ušt32_t - - t__d¬wš_wůył_t -; - -34  - t__d¬wš_wůył_t -; - -37 #ifdeŕ -__WCHAR_MAX__ - - -38  - #__DARWIN_WCHAR_MAX - -__WCHAR_MAX__ - - - ) - -40  - #__DARWIN_WCHAR_MAX - 0x7fffffff - - ) - -43 #iŕ -__DARWIN_WCHAR_MAX - > 0xffffU - -44  - #__DARWIN_WCHAR_MIN - (-0x7ffffffŕ- 1) - - ) - -46  - #__DARWIN_WCHAR_MIN - 0 - - ) - -48  - #__DARWIN_WEOF - (( -__d¬wš_wšt_t -)-1) - - ) - - @/usr/include/_xlocale.h - -24 #iâdeŕ -__XLOCALE_H_ - - -25  - #__XLOCALE_H_ - - - ) - -27  - ~ - -29 -__BEGIN_DECLS - - -30  -___mb_cur_max -(); - -31  -___mb_cur_max_l -( -lo˙Ë_t -); - -32 - g__END_DECLS - - - @/usr/include/alloca.h - -24 #iâdeŕ -_ALLOCA_H_ - - -25  - #_ALLOCA_H_ - - - ) - -27  - ~ - -28  - ~<_tyłs.h -> - -30 #iâdef -_SIZE_T - - -31  - #_SIZE_T - - - ) - -32  -__d¬wš_size_t - - tsize_t -; - -35 -__BEGIN_DECLS - - -36 * -®lo˙ -( -size_t -); - -37 - g__END_DECLS - - -39 #iŕ -defšed -( -__GNUC__ -) && __GNUC__ >= 3 - -41 #undeŕ -®lo˙ - - -42 #undeŕ -__®lo˙ - - -43  - #®lo˙ -( -size -č - `__®lo˙ -(size) - - ) - -44  - #__®lo˙ -( -size -č - `__bužtš_®lo˙ -(size) - - ) - - @/usr/include/available.h - -65 #iâdeŕ -_AVAILABLE_H_ - - -66  - #_AVAILABLE_H_ - - - ) - -72  - #__MAC_OS_X_VERSION_10_0 - 1000 - - ) - -73  - #__MAC_OS_X_VERSION_10_1 - 1010 - - ) - -74  - #__MAC_OS_X_VERSION_10_2 - 1020 - - ) - -75  - #__MAC_OS_X_VERSION_10_3 - 1030 - - ) - -76  - #__MAC_OS_X_VERSION_10_4 - 1040 - - ) - -77  - #__MAC_OS_X_VERSION_10_5 - 1050 - - ) - -84 #iâdeŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - - -85 #ifdeŕ -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - - -86  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - - - ) - -88 #iŕ -__µc64__ - || -__i386__ - || -__x86_64__ - - -89  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__MAC_OS_X_VERSION_10_4 - - - ) - -91  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__MAC_OS_X_VERSION_10_1 - - - ) - -99 #iâdeŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - - -100 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - > -__MAC_OS_X_VERSION_10_5 - - -101  - #__MAC_OS_X_VERSION_MAX_ALLOWED - -__MAC_OS_X_VERSION_MIN_REQUIRED - - - ) - -103  - #__MAC_OS_X_VERSION_MAX_ALLOWED - -__MAC_OS_X_VERSION_10_5 - - - ) - -110 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_MIN_REQUIRED - - -111 #”rÜ -__MAC_OS_X_VERSION_MAX_ALLOWED - -muˇ - -be - >đ -__MAC_OS_X_VERSION_MIN_REQUIRED - - -113 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_0 - - -114 #”rÜ -__MAC_OS_X_VERSION_MIN_REQUIRED - -muˇ - -be - >đ -__MAC_OS_X_VERSION_10_0 - - -120 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >đ1))č&& ( -__MAC_OS_X_VERSION_MIN_REQUIRED - >= 1020) - -121  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - `__©Śibu‹__ -(( -w—k_impÜt -)) - - ) - -122 #–iŕ -defšed -( -__MWERKS__ -č&& (__MWERKS__ >đ0x3205č&& ( -__MAC_OS_X_VERSION_MIN_REQUIRED - >= 1020) - -123  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - `__©Śibu‹__ -(( -w—k_impÜt -)) - - ) - -125  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -131 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >= 1))) - -132  - #__DARWIN_DEPRECATED_ATTRIBUTE - - `__©Śibu‹__ -(( -d•»˙‹d -)) - - ) - -134  - #__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -140 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >= 1))) - -141  - #__DARWIN_UNAVAILABLE_ATTRIBUTE - - `__©Śibu‹__ -(( -uÇvažabË -)) - - ) - -143  - #__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -153  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -161  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -168  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -180 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_1 - - -181  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -182 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_1 - - -183  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -185  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -194 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -195  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -197  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -206 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -207  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -209  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -217 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -218  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -220  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -234 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_2 - - -235  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -236 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_2 - - -237  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -239  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -248 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -249  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -251  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -260 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -261  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -263  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -272 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -273  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -275  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -283 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -284  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -286  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -298 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_3 - - -299  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -300 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_3 - - -301  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -303  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -312 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -313  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -315  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -324 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -325  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -327  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -336 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -337  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -339  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -348 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -349  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -351  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -359 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -360  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -362  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -375 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_4 - - -376  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -377 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_4 - - -378  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -380  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -389 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -390  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -392  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -401 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -402  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -404  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -413 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -414  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -416  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -425 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -426  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -428  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -437 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -438  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -440  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -448 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -449  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -451  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -463 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_5 - - -464  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -465 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_5 - - -466  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -468  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - -477 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -478  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -480  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - -489 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -490  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -492  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -501 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -502  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -504  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -513 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -514  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -516  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -525 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -526  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -528  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -537 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -538  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -540  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -548 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -549  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -551  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - - @/usr/include/machine/endian.h - -31 #iâdeŕ -_BSD_MACHINE_ENDIAN_H_ - - -32  - #_BSD_MACHINE_ENDIAN_H_ - - - ) - -34 #iŕ -defšed - ( -__µc__ -č|| defšed( -__µc64__ -) - -35  - ~"µc/’dźn.h -" - -36 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -37  - ~"i386/’dźn.h -" - -38 #–iŕ -defšed - ( -__¬m__ -) - -39  - ~"¬m/’dźn.h -" - -41 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/machine/types.h - -31 #iâdeŕ -_BSD_MACHINE_TYPES_H_ - - -32  - #_BSD_MACHINE_TYPES_H_ - - - ) - -34 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -35  - ~"µc/tyłs.h -" - -36 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -37  - ~"i386/tyłs.h -" - -38 #–iŕ -defšed - ( -__¬m__ -) - -39  - ~"¬m/tyłs.h -" - -41 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/secure/_stdio.h - -24 #iâdeŕ -_STDIO_H_ - - -25 #”rÜ -”rÜ - "Never use directly; include instead." - -28 #iâdeŕ -_SECURE__STDIO_H_ - - -29  - #_SECURE__STDIO_H_ - - - ) - -31  - ~<Łcu»/_commÚ.h -> - -33 #iŕ -_USE_FORTIFY_LEVEL - > 0 - -35 #undeŕ -Ąrštf - - -36 #undeŕ -vĄrštf - - -37 #undeŕ -˘´štf - - -38 #undeŕ -v˘´štf - - -42  - $__Ąrštf_chk - (* -__»ˇriů -, , -size_t -, - -43 cÚˇ * -__»ˇriů -, ...) - -44 - `__DARWIN_LDBL_COMPAT - ( -__Ąrštf_chk -); - -46  - #Ąrštf -( -ˇr -, ...) \ - -47 - `__bužtš___Ąrštf_chk - ( -ˇr -, 0, - `__d¬wš_obsz -(ˇr), -__VA_ARGS__ -) - - ) - -49  - $__˘´štf_chk - (* -__»ˇriů -, -size_t -, , size_t, - -50 cÚˇ * -__»ˇriů -, ...) - -51 - `__DARWIN_LDBL_COMPAT - ( -__˘´štf_chk -); - -53  - #˘´štf -( -ˇr -, -Ën -, ...) \ - -54 - `__bužtš___˘´štf_chk - ( -ˇr -, -Ën -, 0, - `__d¬wš_obsz -(ˇr), -__VA_ARGS__ -) - - ) - -56  - $__vĄrštf_chk - (* -__»ˇriů -, , -size_t -, - -57 cÚˇ * -__»ˇriů -, -va_liˇ - -¬g -) - -58 - `__DARWIN_LDBL_COMPAT - ( -__vĄrštf_chk -); - -60  - #vĄrštf -( -ˇr -, -fÜm© -, -­ -) \ - -61 - `__bužtš___vĄrštf_chk - ( -ˇr -, 0, - `__d¬wš_obsz -(ˇr), -fÜm© -, -­ -) - - ) - -63  - $__v˘´štf_chk - (* -__»ˇriů -, -size_t -, , size_t, - -64 cÚˇ * -__»ˇriů -, -va_liˇ - -¬g -) - -65 - `__DARWIN_LDBL_COMPAT - ( -__v˘´štf_chk -); - -67  - #v˘´štf -( -ˇr -, -Ën -, -fÜm© -, -­ -) \ - -68 - `__bužtš___v˘´štf_chk - ( -ˇr -, -Ën -, 0, - `__d¬wš_obsz -(ˇr), -fÜm© -, -­ -) - - ) - - @/usr/include/sys/_select.h - -36 #iâdeŕ -_SYS__SELECT_H_ - - -37  - #_SYS__SELECT_H_ - - - ) - -39  - $ŁËů -(, -fd_Łt - * -__»ˇriů -, fd_set * __restrict, - -40 -fd_Łt - * -__»ˇriů -,  -timev® - * __restrict) - -41 #iŕ - `defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_UNLIMITED_SELECT -) - -42 - $__DARWIN_EXTSN_C -( -ŁËů -) - -44 #iŕ - `defšed -( -__LP64__ -č&& ! -__DARWIN_NON_CANCELABLE - - -45 - $__DARWIN_1050 -( -ŁËů -) - -47 - $__DARWIN_ALIAS_C -( -ŁËů -) - - @/usr/include/sys/_structs.h - -29  - ~ - -30  - ~ - -32 #ifdeŕ -__Ăed_ucÚ‹xt_t - - -33 #iâdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -34  - #__Ăed_ˇruů_ucÚ‹xt - - - ) - -38 #ifdeŕ -__Ăed_ucÚ‹xt64_t - - -39 #iâdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -40  - #__Ăed_ˇruů_ucÚ‹xt64 - - - ) - -44 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -45 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -46  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -50 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -51 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -52  - #__Ăed_ˇruů_mcÚ‹xt64 - - - ) - -56 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -č|| defšed( -__Ăed_ˇruů_mcÚ‹xt64 -) - -57  - ~ - -60 #iŕ -defšed -( -__Ăed_ˇack_t -č|| defšed( -__Ăed_ˇruů_ucÚ‹xt -č|| defšed( -__Ăed_ˇruů_ucÚ‹xt64 -) - -61 #iâdeŕ -__Ăed_ˇruů_sig®tˇack - - -62  - #__Ăed_ˇruů_sig®tˇack - - - ) - -66 #ifdeŕ -__Ăed_ˇruů_sig®tˇack - - -67 #undeŕ -__Ăed_ˇruů_sig®tˇack - - -69 #iâdeŕ -_STRUCT_SIGALTSTACK - - -70 #iŕ -__DARWIN_UNIX03 - - -71  - #_STRUCT_SIGALTSTACK -  -__d¬wš_sig®tˇack - - - ) - -73  - #_STRUCT_SIGALTSTACK -  -sig®tˇack - - - ) - -75 - g_STRUCT_SIGALTSTACK - - -77 * - gss_Ą -; - -78 -__d¬wš_size_t - - gss_size -; - -79  - gss_ćags -; - -84 #ifdeŕ -__Ăed_ˇruů_timeĄec - - -85 #undeŕ -__Ăed_ˇruů_timeĄec - - -86 #iâdeŕ -_STRUCT_TIMESPEC - - -87  - #_STRUCT_TIMESPEC -  -timeĄec - - - ) - -88 - g_STRUCT_TIMESPEC - - -90 -__d¬wš_time_t - - gtv_Łc -; - -91  - gtv_nŁc -; - -96 #ifdeŕ -__Ăed_ˇruů_timev® - - -97 #undeŕ -__Ăed_ˇruů_timev® - - -98 #iâdeŕ -_STRUCT_TIMEVAL - - -99  - #_STRUCT_TIMEVAL -  -timev® - - - ) - -100 - g_STRUCT_TIMEVAL - - -102 -__d¬wš_time_t - - gtv_Łc -; - -103 -__d¬wš_suŁcÚds_t - - gtv_uŁc -; - -108 #ifdeŕ -__Ăed_ˇruů_timev®32 - - -109 #undeŕ -__Ăed_ˇruů_timev®32 - - -110 #iâdeŕ -_STRUCT_TIMEVAL32 - - -111  - #_STRUCT_TIMEVAL32 -  -timev®32 - - - ) - -112 - g_STRUCT_TIMEVAL32 - - -114 -__št32_t - - gtv_Łc -; - -115 -__št32_t - - gtv_uŁc -; - -120 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -121 #undeŕ -__Ăed_ˇruů_ucÚ‹xt - - -122 #iâdeŕ -_STRUCT_UCONTEXT - - -123 #iŕ -__DARWIN_UNIX03 - - -124  - #_STRUCT_UCONTEXT -  -__d¬wš_ucÚ‹xt - - - ) - -126  - #_STRUCT_UCONTEXT -  -ucÚ‹xt - - - ) - -128 - g_STRUCT_UCONTEXT - - -130  - guc_Úˇack -; - -131 -__d¬wš_sigŁt_t - - guc_sigmask -; - -132 -_STRUCT_SIGALTSTACK - - guc_ˇack -; - -133 -_STRUCT_UCONTEXT - * - guc_lšk -; - -134 -__d¬wš_size_t - - guc_mcsize -; - -135 -_STRUCT_MCONTEXT - * - guc_mcÚ‹xt -; - -136 #ifdeŕ -_XOPEN_SOURCE - - -137 -_STRUCT_MCONTEXT - - g__mcÚ‹xt_d©a -; - -143 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -144 #undeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -145 #iâdeŕ -_STRUCT_UCONTEXT64 - - -146 #iŕ -__DARWIN_UNIX03 - - -147  - #_STRUCT_UCONTEXT64 -  -__d¬wš_ucÚ‹xt64 - - - ) - -149  - #_STRUCT_UCONTEXT64 -  -ucÚ‹xt64 - - - ) - -151 - g_STRUCT_UCONTEXT64 - - -153  - guc_Úˇack -; - -154 -__d¬wš_sigŁt_t - - guc_sigmask -; - -155 -_STRUCT_SIGALTSTACK - - guc_ˇack -; - -156 -_STRUCT_UCONTEXT64 - * - guc_lšk -; - -157 -__d¬wš_size_t - - guc_mcsize -; - -158 -_STRUCT_MCONTEXT64 - * - guc_mcÚ‹xt64 -; - -164 #ifdeŕ -__Ăed_fd_Łt - - -165 #undeŕ -__Ăed_fd_Łt - - -166 #iâdeŕ -_FD_SET - - -167  - #_FD_SET - - - ) - -174 #ifdeŕ -FD_SETSIZE - - -175  - #__DARWIN_FD_SETSIZE - -FD_SETSIZE - - - ) - -177  - #__DARWIN_FD_SETSIZE - 1024 - - ) - -179  - #__DARWIN_NBBY - 8 - - ) - -180  - #__DARWIN_NFDBITS - (( -__št32_t -č* -__DARWIN_NBBY -č - - ) - -181  - #__DARWIN_howmŞy -( -x -, -y -č(((xč+ ((yč- 1)č/ (y)č - - ) - -183 -__BEGIN_DECLS - - -184  - sfd_Łt - { - -185 -__št32_t - - mfds_b™s -[ -__DARWIN_howmŞy -( -__DARWIN_FD_SETSIZE -, -__DARWIN_NFDBITS -)]; - -186 } - tfd_Łt -; - -187 -__END_DECLS - - -190  -__šlše -  - -191 - $__d¬wš_fd_isŁt -( -_n -,  -fd_Łt - * -_p -) - -193  ( -_p --> -fds_b™s -[ -_n -/ -__DARWIN_NFDBITS -] & (1<<(_n % __DARWIN_NFDBITS))); - -194 - } -} - -196  - #__DARWIN_FD_SET -( -n -, -p -čdŘ{  -__fd - = (n); (Ő)-> -fds_b™s -[__fd/ -__DARWIN_NFDBITS -] |đ(1<<(__fd % __DARWIN_NFDBITS))); } 0) - - ) - -197  - #__DARWIN_FD_CLR -( -n -, -p -čdŘ{  -__fd - = (n); (Ő)-> -fds_b™s -[__fd/ -__DARWIN_NFDBITS -] &đ~(1<<(__fd % __DARWIN_NFDBITS))); } 0) - - ) - -198  - #__DARWIN_FD_ISSET -( -n -, -p -č - `__d¬wš_fd_isŁt -(Ň), (p)) - - ) - -200 #iŕ -__GNUC__ - > 3 || __GNUC__ =đ3 && -__GNUC_MINOR__ - >= 3 - -205  - #__DARWIN_FD_ZERO -( -p -č - `__bužtš_bz”o -Ő, (*Ő))) - - ) - -207  - #__DARWIN_FD_ZERO -( -p -č - `bz”o -Ő, (*Ő))) - - ) - -210  - #__DARWIN_FD_COPY -( -f -, -t -č - `bcÝy -(f,, (*(f))) - - ) - -214 #ifdeŕ -__Ăed_ˇack_t - - -215 #undeŕ -__Ăed_ˇack_t - - -216 #iâdeŕ -_STACK_T - - -217  - #_STACK_T - - - ) - -218  -_STRUCT_SIGALTSTACK - - tˇack_t -; - -222 #ifdeŕ -__Ăed_ucÚ‹xt_t - - -223 #undeŕ -__Ăed_ucÚ‹xt_t - - -225 #iâdeŕ -_UCONTEXT_T - - -226  - #_UCONTEXT_T - - - ) - -227  -_STRUCT_UCONTEXT - - tucÚ‹xt_t -; - -231 #ifdeŕ -__Ăed_ucÚ‹xt64_t - - -232 #undeŕ -__Ăed_ucÚ‹xt64_t - - -233 #iâdeŕ -_UCONTEXT64_T - - -234  - #_UCONTEXT64_T - - - ) - -235  -_STRUCT_UCONTEXT64 - - tucÚ‹xt64_t -; - - @/usr/include/sys/_types.h - -29 #iâdeŕ -_SYS__TYPES_H_ - - -30  - #_SYS__TYPES_H_ - - - ) - -32  - ~ - -33  - ~ - -36 #iŕ -defšed -( -__LP64__ -) - -37  - #__PTHREAD_SIZE__ - 1168 - - ) - -38  - #__PTHREAD_ATTR_SIZE__ - 56 - - ) - -39  - #__PTHREAD_MUTEXATTR_SIZE__ - 8 - - ) - -40  - #__PTHREAD_MUTEX_SIZE__ - 56 - - ) - -41  - #__PTHREAD_CONDATTR_SIZE__ - 8 - - ) - -42  - #__PTHREAD_COND_SIZE__ - 40 - - ) - -43  - #__PTHREAD_ONCE_SIZE__ - 8 - - ) - -44  - #__PTHREAD_RWLOCK_SIZE__ - 192 - - ) - -45  - #__PTHREAD_RWLOCKATTR_SIZE__ - 16 - - ) - -47  - #__PTHREAD_SIZE__ - 596 - - ) - -48  - #__PTHREAD_ATTR_SIZE__ - 36 - - ) - -49  - #__PTHREAD_MUTEXATTR_SIZE__ - 8 - - ) - -50  - #__PTHREAD_MUTEX_SIZE__ - 40 - - ) - -51  - #__PTHREAD_CONDATTR_SIZE__ - 4 - - ) - -52  - #__PTHREAD_COND_SIZE__ - 24 - - ) - -53  - #__PTHREAD_ONCE_SIZE__ - 4 - - ) - -54  - #__PTHREAD_RWLOCK_SIZE__ - 124 - - ) - -55  - #__PTHREAD_RWLOCKATTR_SIZE__ - 12 - - ) - -58  - s__d¬wš_±h»ad_hŞdËr_»c - - -60 (* - m__routše -)(*); - -61 * - m__¬g -; - -62  -__d¬wš_±h»ad_hŞdËr_»c - * - m__Ăxt -; - -64  - s_Ýaque_±h»ad_©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_ATTR_SIZE__ -]; }; - -65  - s_Ýaque_±h»ad_cÚd_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_COND_SIZE__ -]; }; - -66  - s_Ýaque_±h»ad_cÚd©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_CONDATTR_SIZE__ -]; }; - -67  - s_Ýaque_±h»ad_mu‹x_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_MUTEX_SIZE__ -]; }; - -68  - s_Ýaque_±h»ad_mu‹x©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_MUTEXATTR_SIZE__ -]; }; - -69  - s_Ýaque_±h»ad_Úű_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_ONCE_SIZE__ -]; }; - -70  - s_Ýaque_±h»ad_rwlock_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_RWLOCK_SIZE__ -]; }; - -71  - s_Ýaque_±h»ad_rwlock©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_RWLOCKATTR_SIZE__ -]; }; - -72  - s_Ýaque_±h»ad_t - {  - m__sig -;  -__d¬wš_±h»ad_hŞdËr_»c - * - m__ţ—nup_ˇack -;  - m__Ýaque -[ -__PTHREAD_SIZE__ -]; }; - -80 #ifdeŕ -__ýluĄlus - - -81 #ifdeŕ -__GNUG__ - - -82  - #__DARWIN_NULL - -__nuÎ - - - ) - -84 #ifdeŕ -__LP64__ - - -85  - #__DARWIN_NULL - (0L) - - ) - -87  - #__DARWIN_NULL - 0 - - ) - -91  - #__DARWIN_NULL - ((*)0) - - ) - -94  -__št64_t - - t__d¬wš_blkút_t -; - -95  -__št32_t - - t__d¬wš_blksize_t -; - -96  -__št32_t - - t__d¬wš_dev_t -; - -97  - t__d¬wš_fsblkút_t -; - -98  - t__d¬wš_fsfžút_t -; - -99  -__ušt32_t - - t__d¬wš_gid_t -; - -100  -__ušt32_t - - t__d¬wš_id_t -; - -101  -__ušt64_t - - t__d¬wš_šo64_t -; - -102 #iŕ -__DARWIN_64_BIT_INO_T - - -103  -__d¬wš_šo64_t - - t__d¬wš_šo_t -; - -105  -__ušt32_t - - t__d¬wš_šo_t -; - -107  -__d¬wš_Çtużl_t - - t__d¬wš_mach_pÜt_Çme_t -; - -108  -__d¬wš_mach_pÜt_Çme_t - - t__d¬wš_mach_pÜt_t -; - -109  -__ušt16_t - - t__d¬wš_mode_t -; - -110  -__št64_t - - t__d¬wš_off_t -; - -111  -__št32_t - - t__d¬wš_pid_t -; - -112  -_Ýaque_±h»ad_©Ś_t - - -113 - t__d¬wš_±h»ad_©Ś_t -; - -114  -_Ýaque_±h»ad_cÚd_t - - -115 - t__d¬wš_±h»ad_cÚd_t -; - -116  -_Ýaque_±h»ad_cÚd©Ś_t - - -117 - t__d¬wš_±h»ad_cÚd©Ś_t -; - -118  - t__d¬wš_±h»ad_key_t -; - -119  -_Ýaque_±h»ad_mu‹x_t - - -120 - t__d¬wš_±h»ad_mu‹x_t -; - -121  -_Ýaque_±h»ad_mu‹x©Ś_t - - -122 - t__d¬wš_±h»ad_mu‹x©Ś_t -; - -123  -_Ýaque_±h»ad_Úű_t - - -124 - t__d¬wš_±h»ad_Úű_t -; - -125  -_Ýaque_±h»ad_rwlock_t - - -126 - t__d¬wš_±h»ad_rwlock_t -; - -127  -_Ýaque_±h»ad_rwlock©Ś_t - - -128 - t__d¬wš_±h»ad_rwlock©Ś_t -; - -129  -_Ýaque_±h»ad_t - - -130 * - t__d¬wš_±h»ad_t -; - -131  -__ušt32_t - - t__d¬wš_sigŁt_t -; - -132  -__št32_t - - t__d¬wš_suŁcÚds_t -; - -133  -__ušt32_t - - t__d¬wš_uid_t -; - -134  -__ušt32_t - - t__d¬wš_uŁcÚds_t -; - -135  - t__d¬wš_uuid_t -[16]; - - @/usr/include/sys/appleapiopts.h - -29 #iâdeŕ -__SYS_APPLEAPIOPTS_H__ - - -30  - #__SYS_APPLEAPIOPTS_H__ - - - ) - -33 #iâdeŕ -__APPLE_API_STANDARD - - -34  - #__APPLE_API_STANDARD - - - ) - -37 #iâdeŕ -__APPLE_API_STABLE - - -38  - #__APPLE_API_STABLE - - - ) - -41 #iâdeŕ -__APPLE_API_STRICT_CONFORMANCE - - -43 #iâdeŕ -__APPLE_API_EVOLVING - - -44  - #__APPLE_API_EVOLVING - - - ) - -47 #iâdeŕ -__APPLE_API_UNSTABLE - - -48  - #__APPLE_API_UNSTABLE - - - ) - -51 #iâdeŕ -__APPLE_API_PRIVATE - - -52  - #__APPLE_API_PRIVATE - - - ) - -55 #iâdeŕ -__APPLE_API_OBSOLETE - - -56  - #__APPLE_API_OBSOLETE - - - ) - - @/usr/include/sys/cdefs.h - -67 #iâdef -_CDEFS_H_ - - -68  - #_CDEFS_H_ - - - ) - -70 #iŕ -defšed -( -__ýluĄlus -) - -71  - #__BEGIN_DECLS - "C" { - - ) - -72  - #__END_DECLS - } - - ) - -74  - #__BEGIN_DECLS - - - ) - -75  - #__END_DECLS - - - ) - -85 #iŕ -defšed -( -__STDC__ -č|| defšed( -__ýluĄlus -) - -86  - #__P -( -´Ůos -č´Ůo  - - ) - -87  - #__CONCAT -( -x -, -y -čx ## - ) -y - -88  - #__STRING -( -x -č#x - - ) - -90  - #__cÚˇ - cÚˇ - - ) - -91  - #__sigĂd - sigĂd - - ) - -92  - #__vŢ©že - vŢ©že - - ) - -93 #iŕ -defšed -( -__ýluĄlus -) - -94  - #__šlše - -šlše - - - ) - -96 #iâdeŕ -__GNUC__ - - -97  - #__šlše - - - ) - -102  - #__P -( -´Ůos -č(č - - ) - -103  - #__CONCAT -( -x -, -y -čx - ) -y - -104  - #__STRING -( -x -č"x" - - ) - -106 #iâdeŕ -__GNUC__ - - -107  - #__cÚˇ - - - ) - -108  - #__šlše - - - ) - -109  - #__sigĂd - - - ) - -110  - #__vŢ©že - - - ) - -121 #iâdef -NO_ANSI_KEYWORDS - - -122 cÚˇ -__cÚˇ - - - ) - -123  - #šlše - -__šlše - - - ) - -124 sigĂd -__sigĂd - - - ) - -125 vŢ©ž -__vŢ©že - - - ) - -137 #iŕ -defšed -( -__MWERKS__ -) && (__MWERKS__ > 0x2400) - -139 #–iŕ -__GNUC__ - > 2 || __GNUC__ =đ2 && -__GNUC_MINOR__ - >= 5 - -140  - #__d—d2 - - `__©Śibu‹__ -(( -__nÜ‘uş__ -)) - - ) - -141  - #__pu»2 - - `__©Śibu‹__ -(( -__cÚˇ__ -)) - - ) - -142 #iŕ -__GNUC__ - =đ2 && -__GNUC_MINOR__ - >= 5 && __GNUC_MINOR__ < 7 - -143  - #__unuŁd - - - ) - -145  - #__unuŁd - - `__©Śibu‹__ -(( -__unuŁd__ -)) - - ) - -148  - #__©Śibu‹__ -( -x -č - - ) - -149 #iŕ -defšed -( -__GNUC__ -č&& !defšed( -__STRICT_ANSI__ -) - -151  - #__d—d - -__vŢ©že - - - ) - -152  - #__pu» - -__cÚˇ - - - ) - -157 #iâdeŕ -__d—d - - -158  - #__d—d - - - ) - -159  - #__pu» - - - ) - -161 #iâdeŕ -__d—d2 - - -162  - #__d—d2 - - - ) - -163  - #__pu»2 - - - ) - -164  - #__unuŁd - - - ) - -173 #iŕ!( -__GNUC__ - =đ2 && -__GNUC_MINOR__ - == 95) - -174 #iŕ -__STDC_VERSION__ - < 199901 - -175  - #__»ˇriů - - - ) - -177  - #__»ˇriů - -»ˇriů - - - ) - -189 #iŕ -__GNUC__ - > 2 || __GNUC__ =đ2 && -__GNUC_MINOR__ - >= 7 - -190  - #__´štćike -( -fmŹrg -, -fśˇv¬¬g -) \ - -191 - `__©Śibu‹__ -(( - `__fÜm©__ - ( -__´štf__ -, -fmŹrg -, -fśˇv¬¬g -))) - - ) - -192  - #__s˙nćike -( -fmŹrg -, -fśˇv¬¬g -) \ - -193 - `__©Śibu‹__ -(( - `__fÜm©__ - ( -__s˙nf__ -, -fmŹrg -, -fśˇv¬¬g -))) - - ) - -195  - #__´štćike -( -fmŹrg -, -fśˇv¬¬g -) - - ) - -196  - #__s˙nćike -( -fmŹrg -, -fśˇv¬¬g -) - - ) - -199  - #__IDSTRING -( -Çme -, -ˇršg -čcÚˇ Çme[] -__unuŁd - = - ) -string - -201 #iâdeŕ -__COPYRIGHT - - -202  - #__COPYRIGHT -( -s -č - `__IDSTRING -( -cÝyright -,s) - - ) - -205 #iâdeŕ -__RCSID - - -206  - #__RCSID -( -s -č - `__IDSTRING -( -rcsid -,s) - - ) - -209 #iâdeŕ -__SCCSID - - -210  - #__SCCSID -( -s -č - `__IDSTRING -( -sccsid -,s) - - ) - -213 #iâdeŕ -__PROJECT_VERSION - - -214  - #__PROJECT_VERSION -( -s -č - `__IDSTRING -( -´ojeů_v”siÚ -,s) - - ) - -272 #iŕ! -defšed -( -__DARWIN_UNIX03 -) - -273 #iŕ -defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_XOPEN_SOURCE -č|| defšed( -_POSIX_C_SOURCE -č|| defšed( -__LP64__ -č|| (defšed( -__¬m__ -č&& !defšed( -KERNEL -)) - -274 #iŕ -defšed -( -_NONSTD_SOURCE -) - -277  - #__DARWIN_UNIX03 - 1 - - ) - -278 #–iŕ -defšed -( -_NONSTD_SOURCE -č|| defšed( -KERNEL -) - -279  - #__DARWIN_UNIX03 - 0 - - ) - -281 #iŕ -defšed -( -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ -) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) < 1050) - -282  - #__DARWIN_UNIX03 - 0 - - ) - -284  - #__DARWIN_UNIX03 - 1 - - ) - -289 #iŕ! -defšed -( -__DARWIN_64_BIT_INO_T -) - -290 #iŕ -defšed -( -_DARWIN_USE_64_BIT_INODE -) - -291  - #__DARWIN_64_BIT_INO_T - 1 - - ) - -292 #–iŕ -defšed -( -_DARWIN_NO_64_BIT_INODE -č|| defšed( -KERNEL -) - -293  - #__DARWIN_64_BIT_INO_T - 0 - - ) - -295  - #__DARWIN_64_BIT_INO_T - 0 - - ) - -299 #iŕ! -defšed -( -__DARWIN_NON_CANCELABLE -) - -300  - #__DARWIN_NON_CANCELABLE - 0 - - ) - -303 #iŕ! -defšed -( -__DARWIN_VERS_1050 -) - -304 #iŕ! -defšed -( -KERNEL -č&& defšed( -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ -) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) >= 1050) - -305  - #__DARWIN_VERS_1050 - 1 - - ) - -307  - #__DARWIN_VERS_1050 - 0 - - ) - -314 #iŕ -__DARWIN_UNIX03 - - -315 #iŕ! -defšed -( -__LP64__ -č&& !defšed( -__¬m__ -) - -316  - #__DARWIN_SUF_UNIX03 - "$UNIX2003" - - ) - -317  - #__DARWIN_SUF_UNIX03_SET - 1 - - ) - -319  - #__DARWIN_SUF_UNIX03 - - - ) - -320  - #__DARWIN_SUF_UNIX03_SET - 0 - - ) - -323 #iŕ -__DARWIN_64_BIT_INO_T - - -324  - #__DARWIN_SUF_64_BIT_INO_T - "$INODE64" - - ) - -326  - #__DARWIN_SUF_64_BIT_INO_T - - - ) - -329 #iŕ -__DARWIN_NON_CANCELABLE - - -330  - #__DARWIN_SUF_NON_CANCELABLE - "$NOCANCEL" - - ) - -332  - #__DARWIN_SUF_NON_CANCELABLE - - - ) - -335 #iŕ -__DARWIN_VERS_1050 - - -336  - #__DARWIN_SUF_1050 - "$1050" - - ) - -338  - #__DARWIN_SUF_1050 - - - ) - -342  - #__DARWIN_SUF_UNIX03 - - - ) - -343  - #__DARWIN_SUF_UNIX03_SET - 0 - - ) - -344  - #__DARWIN_SUF_64_BIT_INO_T - - - ) - -345  - #__DARWIN_SUF_NON_CANCELABLE - - - ) - -346  - #__DARWIN_SUF_1050 - - - ) - -349  - #__DARWIN_SUF_EXTSN - "$DARWIN_EXTSN" - - ) - -354  - #__DARWIN_ALIAS -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_UNIX03 -) - - ) - -355  - #__DARWIN_ALIAS_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_NON_CANCELABLE - -__DARWIN_SUF_UNIX03 -) - - ) - -356  - #__DARWIN_ALIAS_I -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_64_BIT_INO_T - -__DARWIN_SUF_UNIX03 -) - - ) - -357  - #__DARWIN_INODE64 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_64_BIT_INO_T -) - - ) - -359  - #__DARWIN_1050 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 -) - - ) - -360  - #__DARWIN_1050ALIAS -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_UNIX03 -) - - ) - -361  - #__DARWIN_1050ALIAS_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_NON_CANCELABLE - -__DARWIN_SUF_UNIX03 -) - - ) - -362  - #__DARWIN_1050ALIAS_I -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_64_BIT_INO_T - -__DARWIN_SUF_UNIX03 -) - - ) - -363  - #__DARWIN_1050INODE64 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_64_BIT_INO_T -) - - ) - -365  - #__DARWIN_EXTSN -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_EXTSN -) - - ) - -366  - #__DARWIN_EXTSN_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_EXTSN - -__DARWIN_SUF_NON_CANCELABLE -) - - ) - -389 #iŕ -defšed -( -_POSIX_C_SOURCE -) && _POSIX_C_SOURCE == 1L - -390 #undeŕ -_POSIX_C_SOURCE - - -391  - #_POSIX_C_SOURCE - 199009L - - ) - -395 #iŕ -defšed -( -_POSIX_C_SOURCE -) && _POSIX_C_SOURCE == 2L - -396 #undeŕ -_POSIX_C_SOURCE - - -397  - #_POSIX_C_SOURCE - 199209L - - ) - -401 #ifdeŕ -_XOPEN_SOURCE - - -402 #iŕ -_XOPEN_SOURCE - - 0L >= 600L - -403 #undeŕ -_POSIX_C_SOURCE - - -404  - #_POSIX_C_SOURCE - 200112L - - ) - -405 #–iŕ -_XOPEN_SOURCE - - 0L >= 500L - -406 #undeŕ -_POSIX_C_SOURCE - - -407  - #_POSIX_C_SOURCE - 199506L - - ) - -415 #iŕ -defšed -( -_POSIX_SOURCE -č&& !defšed( -_POSIX_C_SOURCE -) - -416  - #_POSIX_C_SOURCE - 198808L - - ) - -424  - #__DARWIN_NO_LONG_LONG - ( - `defšed -( -__STRICT_ANSI__ -) \ - -425 && ( -__STDC_VERSION__ --0 < 199901L) \ - -426 && ! - `defšed -( -__GNUG__ -)) - - ) - -434 #iŕ -defšed -( -__µc__ -) - -435 #iŕ -defšed -( -__LDBL_MANT_DIG__ -č&& defšed( -__DBL_MANT_DIG__ -) && \ - -436 -__LDBL_MANT_DIG__ - > -__DBL_MANT_DIG__ - - -437 #iŕ -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ --0 < 1040 - -438  - #__DARWIN_LDBL_COMPAT -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBLStub") - - ) - -440  - #__DARWIN_LDBL_COMPAT -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBL128") - - ) - -442  - #__DARWIN_LDBL_COMPAT2 -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBL128") - - ) - -443  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 0 - - ) - -445  - #__DARWIN_LDBL_COMPAT -( -x -č - - ) - -446  - #__DARWIN_LDBL_COMPAT2 -( -x -č - - ) - -447  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 1 - - ) - -449 #–iŕ -defšed -( -__i386__ -č|| defšed( -__µc64__ -č|| defšed( -__x86_64__ -č|| defšed ( -__¬m__ -) - -450  - #__DARWIN_LDBL_COMPAT -( -x -č - - ) - -451  - #__DARWIN_LDBL_COMPAT2 -( -x -č - - ) - -452  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 0 - - ) - -454 #”rÜ -Unknown - -¬ch™eůu» - - -460 #iŕ -__GNUC__ - >= 3 - -461  - #__d•»˙‹d - - `__©Śibu‹__ -(( -d•»˙‹d -)) - - ) - -463  - #__d•»˙‹d - - - ) - -474 #iŕ -__DARWIN_LONG_DOUBLE_IS_DOUBLE - - -475  - #_DARWIN_FEATURE_LONG_DOUBLE_IS_DOUBLE - 1 - - ) - -482 #iŕ -__DARWIN_UNIX03 - - -483  - #_DARWIN_FEATURE_UNIX_CONFORMANCE - 3 - - ) - -490 #iŕ -__DARWIN_64_BIT_INO_T - - -491  - #_DARWIN_FEATURE_64_BIT_INODE - 1 - - ) - - @/usr/include/sys/dirent.h - -75 #iâdeŕ -_SYS_DIRENT_H - - -76  - #_SYS_DIRENT_H - - - ) - -78  - ~ - -79  - ~ - -81 #iâdef -_INO_T - - -82  -__d¬wš_šo_t - - tšo_t -; - -83  - #_INO_T - - - ) - -87  - #__DARWIN_MAXNAMLEN - 255 - - ) - -89 #´agm¨ -·ck -(4) - -91 #iŕ! -__DARWIN_64_BIT_INO_T - - -92  - sdś’t - { - -93 -šo_t - - md_šo -; - -94 -__ušt16_t - - md_»ţ’ -; - -95 -__ušt8_t - - md_tył -; - -96 -__ušt8_t - - md_ÇmËn -; - -97  - md_Çme -[ -__DARWIN_MAXNAMLEN - + 1]; - -101 #´agm¨ -·ck -() - -103  - #__DARWIN_MAXPATHLEN - 1024 - - ) - -105  - #__DARWIN_STRUCT_DIRENTRY - { \ - -106 -__ušt64_t - -d_šo -; \ - -107 -__ušt64_t - -d_Łekoff -; \ - -108 -__ušt16_t - -d_»ţ’ -; \ - -109 -__ušt16_t - -d_ÇmËn -; \ - -110 -__ušt8_t - -d_tył -; \ - -111  -d_Çme -[ -__DARWIN_MAXPATHLEN -]; \ - -112 } - - ) - -114 #iŕ -__DARWIN_64_BIT_INO_T - - -115  -dś’t - - g__DARWIN_STRUCT_DIRENTRY -; - -120 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -121  - #d_fž’o - -d_šo - - - ) - -122  - #MAXNAMLEN - -__DARWIN_MAXNAMLEN - - - ) - -126  - #DT_UNKNOWN - 0 - - ) - -127  - #DT_FIFO - 1 - - ) - -128  - #DT_CHR - 2 - - ) - -129  - #DT_DIR - 4 - - ) - -130  - #DT_BLK - 6 - - ) - -131  - #DT_REG - 8 - - ) - -132  - #DT_LNK - 10 - - ) - -133  - #DT_SOCK - 12 - - ) - -134  - #DT_WHT - 14 - - ) - -139  - #IFTODT -( -mode -č(((modeč& 0170000č>> 12) - - ) - -140  - #DTTOIF -( -dśtył -č((dśtyłč<< 12) - - ) - - @/usr/include/sys/fcntl.h - -70 #iâdeŕ -_SYS_FCNTL_H_ - - -71  - #_SYS_FCNTL_H_ - - - ) - -78  - ~ - -79  - ~ - -82 #iâdeŕ -_SIZE_T - - -83  - #_SIZE_T - - - ) - -84  -__d¬wš_size_t - - tsize_t -; - -87 #iâdef -_MODE_T - - -88  -__d¬wš_mode_t - - tmode_t -; - -89  - #_MODE_T - - - ) - -92 #iâdeŕ -_OFF_T - - -93  -__d¬wš_off_t - - toff_t -; - -94  - #_OFF_T - - - ) - -97 #iâdeŕ -_PID_T - - -98  -__d¬wš_pid_t - - tpid_t -; - -99  - #_PID_T - - - ) - -110  - #O_RDONLY - 0x0000 - - ) - -111  - #O_WRONLY - 0x0001 - - ) - -112  - #O_RDWR - 0x0002 - - ) - -113  - #O_ACCMODE - 0x0003 - - ) - -123 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -124  - #FREAD - 0x0001 - - ) - -125  - #FWRITE - 0x0002 - - ) - -127  - #O_NONBLOCK - 0x0004 - - ) - -128  - #O_APPEND - 0x0008 - - ) - -129  - #O_SYNC - 0x0080 - - ) - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -131  - #O_SHLOCK - 0x0010 - - ) - -132  - #O_EXLOCK - 0x0020 - - ) - -133  - #O_ASYNC - 0x0040 - - ) - -134  - #O_FSYNC - -O_SYNC - - - ) - -135  - #O_NOFOLLOW - 0x0100 - - ) - -137  - #O_CREAT - 0x0200 - - ) - -138  - #O_TRUNC - 0x0400 - - ) - -139  - #O_EXCL - 0x0800 - - ) - -140 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -141  - #O_EVTONLY - 0x8000 - - ) - -145  - #O_NOCTTY - 0x20000 - - ) - -148 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -149  - #O_DIRECTORY - 0x100000 - - ) - -150  - #O_SYMLINK - 0x200000 - - ) - -161 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -162  - #FAPPEND - -O_APPEND - - - ) - -163  - #FASYNC - -O_ASYNC - - - ) - -164  - #FFSYNC - -O_FSYNC - - - ) - -165  - #FNONBLOCK - -O_NONBLOCK - - - ) - -166  - #FNDELAY - -O_NONBLOCK - - - ) - -167  - #O_NDELAY - -O_NONBLOCK - - - ) - -174 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -175  - #CPF_OVERWRITE - 1 - - ) - -176  - #CPF_IGNORE_MODE - 2 - - ) - -177  - #CPF_MASK - ( -CPF_OVERWRITE -| -CPF_IGNORE_MODE -) - - ) - -185  - #F_DUPFD - 0 - - ) - -186  - #F_GETFD - 1 - - ) - -187  - #F_SETFD - 2 - - ) - -188  - #F_GETFL - 3 - - ) - -189  - #F_SETFL - 4 - - ) - -190  - #F_GETOWN - 5 - - ) - -191  - #F_SETOWN - 6 - - ) - -192  - #F_GETLK - 7 - - ) - -193  - #F_SETLK - 8 - - ) - -194  - #F_SETLKW - 9 - - ) - -195 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -196  - #F_CHKCLEAN - 41 - - ) - -197  - #F_PREALLOCATE - 42 - - ) - -198  - #F_SETSIZE - 43 - - ) - -199  - #F_RDADVISE - 44 - - ) - -200  - #F_RDAHEAD - 45 - - ) - -201  - #F_READBOOTSTRAP - 46 - - ) - -202  - #F_WRITEBOOTSTRAP - 47 - - ) - -203  - #F_NOCACHE - 48 - - ) - -204  - #F_LOG2PHYS - 49 - - ) - -205  - #F_GETPATH - 50 - - ) - -206  - #F_FULLFSYNC - 51 - - ) - -207  - #F_PATHPKG_CHECK - 52 - - ) - -208  - #F_FREEZE_FS - 53 - - ) - -209  - #F_THAW_FS - 54 - - ) - -210  - #F_GLOBAL_NOCACHE - 55 - - ) - -213  - #F_ADDSIGS - 59 - - ) - -215  - #F_MARKDEPENDENCY - 60 - - ) - -218  - #FCNTL_FS_SPECIFIC_BASE - 0x00010000 - - ) - -223  - #FD_CLOEXEC - 1 - - ) - -226  - #F_RDLCK - 1 - - ) - -227  - #F_UNLCK - 2 - - ) - -228  - #F_WRLCK - 3 - - ) - -234 #iâdeŕ -SEEK_SET - - -235  - #SEEK_SET - 0 - - ) - -236  - #SEEK_CUR - 1 - - ) - -237  - #SEEK_END - 2 - - ) - -244 #iâdeŕ -S_IFMT - - -246  - #S_IFMT - 0170000 - - ) - -247  - #S_IFIFO - 0010000 - - ) - -248  - #S_IFCHR - 0020000 - - ) - -249  - #S_IFDIR - 0040000 - - ) - -250  - #S_IFBLK - 0060000 - - ) - -251  - #S_IFREG - 0100000 - - ) - -252  - #S_IFLNK - 0120000 - - ) - -253  - #S_IFSOCK - 0140000 - - ) - -254 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -255  - #S_IFWHT - 0160000 - - ) - -256  - #S_IFXATTR - 0200000 - - ) - -261  - #S_IRWXU - 0000700 - - ) - -262  - #S_IRUSR - 0000400 - - ) - -263  - #S_IWUSR - 0000200 - - ) - -264  - #S_IXUSR - 0000100 - - ) - -266  - #S_IRWXG - 0000070 - - ) - -267  - #S_IRGRP - 0000040 - - ) - -268  - #S_IWGRP - 0000020 - - ) - -269  - #S_IXGRP - 0000010 - - ) - -271  - #S_IRWXO - 0000007 - - ) - -272  - #S_IROTH - 0000004 - - ) - -273  - #S_IWOTH - 0000002 - - ) - -274  - #S_IXOTH - 0000001 - - ) - -276  - #S_ISUID - 0004000 - - ) - -277  - #S_ISGID - 0002000 - - ) - -278  - #S_ISVTX - 0001000 - - ) - -280 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -281  - #S_ISTXT - -S_ISVTX - - - ) - -282  - #S_IREAD - -S_IRUSR - - - ) - -283  - #S_IWRITE - -S_IWUSR - - - ) - -284  - #S_IEXEC - -S_IXUSR - - - ) - -288 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -291  - #F_ALLOCATECONTIG - 0x00000002 - - ) - -292  - #F_ALLOCATEALL - 0x00000004 - - ) - -296  - #F_PEOFPOSMODE - 3 - - ) - -298  - #F_VOLPOSMODE - 4 - - ) - -305  - sćock - { - -306 -off_t - - ml_ˇ¬t -; - -307 -off_t - - ml_Ën -; - -308 -pid_t - - ml_pid -; - -309  - ml_tył -; - -310  - ml_wh’ű -; - -314 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -319  - sżdvisÜy - { - -320 -off_t - - mż_offŁt -; - -321  - mż_couÁ -; - -329  - sfsigÇtu»s - { - -330 -off_t - - mfs_fže_ˇ¬t -; - -331 * - mfs_blob_ˇ¬t -; - -332 -size_t - - mfs_blob_size -; - -333 } - tfsigÇtu»s_t -; - -336  - #LOCK_SH - 0x01 - - ) - -337  - #LOCK_EX - 0x02 - - ) - -338  - #LOCK_NB - 0x04 - - ) - -339  - #LOCK_UN - 0x08 - - ) - -343  - sfˇÜe - { - -344  - mfˇ_ćags -; - -345  - mfˇ_posmode -; - -346 -off_t - - mfˇ_offŁt -; - -347 -off_t - - mfˇ_Ëngth -; - -348 -off_t - - mfˇ_by‹§Îoc -; - -349 } - tfˇÜe_t -; - -353  - sfbo١ż±żnsăr - { - -354 -off_t - - mfbt_offŁt -; - -355 -size_t - - mfbt_Ëngth -; - -356 * - mfbt_bufăr -; - -357 } - tfbo١ż±żnsăr_t -; - -377 #´agm¨ -·ck -(4) - -379  - slog2phys - { - -380  - ml2p_ćags -; - -381 -off_t - - ml2p_cÚtigby‹s -; - -382 -off_t - - ml2p_devoffŁt -; - -385 #´agm¨ -·ck -() - -387  - #O_POPUP - 0x80000000 - - ) - -388  - #O_ALERT - 0x20000000 - - ) - -394 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -395 #iâdeŕ -_FILESEC_T - - -396  - g_fžeŁc -; - -397  -_fžeŁc - * - tfžeŁc_t -; - -398  - #_FILESEC_T - - - ) - -401 - mFILESEC_OWNER - = 1, - -402 - mFILESEC_GROUP - = 2, - -403 - mFILESEC_UUID - = 3, - -404 - mFILESEC_MODE - = 4, - -405 - mFILESEC_ACL - = 5, - -406 - mFILESEC_GRPUUID - = 6, - -409 - mFILESEC_ACL_RAW - = 100, - -410 - mFILESEC_ACL_ALLOCSIZE - = 101 - -411 } - tfžeŁc_´Ý”ty_t -; - -414  - #FILESEC_GUID - -FILESEC_UUID - - - ) - -417 -__BEGIN_DECLS - - -418  - $Ý’ -(cÚˇ *, , ...č - `__DARWIN_ALIAS_C -( -Ý’ -); - -419  - $ü—t -(cÚˇ *, -mode_t -č - `__DARWIN_ALIAS_C -( -ü—t -); - -420  - $fúŽ -(, , ...č - `__DARWIN_ALIAS_C -( -fúŽ -); - -421 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -422  - `Ý’x_Ĺ -(cÚˇ *, , -fžeŁc_t -); - -423  - `ćock -(, ); - -424 -fžeŁc_t - - `fžeŁc_š™ -(); - -425 -fžeŁc_t - - `fžeŁc_dup -(filesec_t); - -426  - `fžeŁc_ä“ -( -fžeŁc_t -); - -427  - `fžeŁc_g‘_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, *); - -428  - `fžeŁc_Łt_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, const *); - -429  - `fžeŁc_qu”y_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, *); - -430  - #_FILESEC_UNSET_PROPERTY - ((*)0) - - ) - -431  - #_FILESEC_REMOVE_ACL - ((*)1) - - ) - -433 -__END_DECLS - - - @/usr/include/sys/select.h - -63 #iâdeŕ -_SYS_SELECT_H_ - - -64  - #_SYS_SELECT_H_ - - - ) - -66  - ~ - -67  - ~ - -68  - ~ - -75  - #__Ăed_fd_Łt - - - ) - -76  - #__Ăed_ˇruů_timeĄec - - - ) - -77  - #__Ăed_ˇruů_timev® - - - ) - -78  - ~ - -85 #iâdef -_TIME_T - - -86  - #_TIME_T - - - ) - -87  -__d¬wš_time_t - - ttime_t -; - -90 #iâdeŕ -_SUSECONDS_T - - -91  - #_SUSECONDS_T - - - ) - -92  -__d¬wš_suŁcÚds_t - - tsuŁcÚds_t -; - -95 #iâdeŕ -_SIGSET_T - - -96  - #_SIGSET_T - - - ) - -97  -__d¬wš_sigŁt_t - - tsigŁt_t -; - -112 #iâdef -FD_SETSIZE - - -113  - #FD_SETSIZE - -__DARWIN_FD_SETSIZE - - - ) - -115 #iâdeŕ -FD_SET - - -116  - #FD_SET -( -n -, -p -č - `__DARWIN_FD_SET -Ň,…) - - ) - -118 #iâdeŕ -FD_CLR - - -119  - #FD_CLR -( -n -, -p -č - `__DARWIN_FD_CLR -Ň,…) - - ) - -121 #iâdeŕ -FD_ISSET - - -122  - #FD_ISSET -( -n -, -p -č - `__DARWIN_FD_ISSET -Ň,…) - - ) - -124 #iâdeŕ -FD_ZERO - - -125  - #FD_ZERO -( -p -č - `__DARWIN_FD_ZERO -Ő) - - ) - -127 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -128 #iâdeŕ -FD_COPY - - -129  - #FD_COPY -( -f -, -t -č - `__DARWIN_FD_COPY -(f,) - - ) - -134 - g__BEGIN_DECLS - - -136 #iâdeŕ -__MWERKS__ - - -137  - $pŁËů -(, -fd_Łt - * -__»ˇriů -, fd_set * __restrict, - -138 -fd_Łt - * -__»ˇriů -, cÚˇ  -timeĄec - * __restrict, - -139 cÚˇ -sigŁt_t - * -__»ˇriů -) - -140 #iŕ - `defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_UNLIMITED_SELECT -) - -141 - $__DARWIN_EXTSN_C -( -pŁËů -) - -143 #iŕ - `defšed -( -__LP64__ -č&& ! -__DARWIN_NON_CANCELABLE - - -144 - $__DARWIN_1050 -( -pŁËů -) - -146 - $__DARWIN_ALIAS_C -( -pŁËů -) - -152  - ~ - -154 -__END_DECLS - - - @/usr/include/sys/unistd.h - -64 #iâdeŕ -_SYS_UNISTD_H_ - - -65  - #_SYS_UNISTD_H_ - - - ) - -67  - ~ - -75 #ifdef -_NOT_AVAILABLE - - -76  - #_POSIX_SAVED_IDS - - - ) - -79  - #_POSIX_VERSION - 200112L - - ) - -80  - #_POSIX2_VERSION - 200112L - - ) - -84 #iâdeŕ -_POSIX_VDISABLE - - -85  - #_POSIX_VDISABLE - (()'\377') - - ) - -88  - #_POSIX_THREAD_KEYS_MAX - 128 - - ) - -91  - #F_OK - 0 - - ) - -92  - #X_OK - (1<<0č - - ) - -93  - #W_OK - (1<<1č - - ) - -94  - #R_OK - (1<<2č - - ) - -96 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -102  - #_READ_OK - (1<<9č - - ) - -103  - #_WRITE_OK - (1<<10č - - ) - -104  - #_EXECUTE_OK - (1<<11č - - ) - -105  - #_DELETE_OK - (1<<12č - - ) - -106  - #_APPEND_OK - (1<<13č - - ) - -107  - #_RMFILE_OK - (1<<14č - - ) - -108  - #_RATTR_OK - (1<<15č - - ) - -109  - #_WATTR_OK - (1<<16č - - ) - -110  - #_REXT_OK - (1<<17č - - ) - -111  - #_WEXT_OK - (1<<18č - - ) - -112  - #_RPERM_OK - (1<<19č - - ) - -113  - #_WPERM_OK - (1<<20č - - ) - -114  - #_CHOWN_OK - (1<<21č - - ) - -116  - #_ACCESS_EXTENDED_MASK - ( -_READ_OK - | -_WRITE_OK - | -_EXECUTE_OK - | \ - -117 -_DELETE_OK - | -_APPEND_OK - | \ - -118 -_RMFILE_OK - | -_REXT_OK - | \ - -119 -_WEXT_OK - | -_RATTR_OK - | -_WATTR_OK - | -_RPERM_OK - | \ - -120 -_WPERM_OK - | -_CHOWN_OK -) - - ) - -124 #iâdeŕ -SEEK_SET - - -125  - #SEEK_SET - 0 - - ) - -126  - #SEEK_CUR - 1 - - ) - -127  - #SEEK_END - 2 - - ) - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -132  - #L_SET - -SEEK_SET - - - ) - -133  - #L_INCR - -SEEK_CUR - - - ) - -134  - #L_XTND - -SEEK_END - - - ) - -137 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -138  - sacűssx_desüťtÜ - { - -139  - mad_Çme_offŁt -; - -140  - mad_ćags -; - -141  - mad_·d -[2]; - -143  - #ACCESSX_MAX_DESCRIPTORS - 100 - - ) - -144  - #ACCESSX_MAX_TABLESIZE - (16 * 1024) - - ) - -148  - #_PC_LINK_MAX - 1 - - ) - -149  - #_PC_MAX_CANON - 2 - - ) - -150  - #_PC_MAX_INPUT - 3 - - ) - -151  - #_PC_NAME_MAX - 4 - - ) - -152  - #_PC_PATH_MAX - 5 - - ) - -153  - #_PC_PIPE_BUF - 6 - - ) - -154  - #_PC_CHOWN_RESTRICTED - 7 - - ) - -155  - #_PC_NO_TRUNC - 8 - - ) - -156  - #_PC_VDISABLE - 9 - - ) - -158 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -159  - #_PC_NAME_CHARS_MAX - 10 - - ) - -160  - #_PC_CASE_SENSITIVE - 11 - - ) - -161  - #_PC_CASE_PRESERVING - 12 - - ) - -162  - #_PC_EXTENDED_SECURITY_NP - 13 - - ) - -163  - #_PC_AUTH_OPAQUE_NP - 14 - - ) - -166  - #_PC_2_SYMLINKS - 15 - - ) - -167  - #_PC_ALLOC_SIZE_MIN - 16 - - ) - -168  - #_PC_ASYNC_IO - 17 - - ) - -169  - #_PC_FILESIZEBITS - 18 - - ) - -170  - #_PC_PRIO_IO - 19 - - ) - -171  - #_PC_REC_INCR_XFER_SIZE - 20 - - ) - -172  - #_PC_REC_MAX_XFER_SIZE - 21 - - ) - -173  - #_PC_REC_MIN_XFER_SIZE - 22 - - ) - -174  - #_PC_REC_XFER_ALIGN - 23 - - ) - -175  - #_PC_SYMLINK_MAX - 24 - - ) - -176  - #_PC_SYNC_IO - 25 - - ) - -179  - #_CS_PATH - 1 - - ) - - @/usr/include/sys/wait.h - -64 #iâdeŕ -_SYS_WAIT_H_ - - -65  - #_SYS_WAIT_H_ - - - ) - -67  - ~ - -68  - ~ - -80 - mP_ALL -, - -81 - mP_PID -, - -82 - mP_PGID - - -83 } - tidtył_t -; - -89 #iâdeŕ -_PID_T - - -90  -__d¬wš_pid_t - - tpid_t -; - -91  - #_PID_T - - - ) - -94 #iâdeŕ -_ID_T - - -95  -__d¬wš_id_t - - tid_t -; - -96  - #_ID_T - - - ) - -116  - ~ - -117  - ~ - -128  - #WNOHANG - 0x00000001 - - ) - -129  - #WUNTRACED - 0x00000002 - - ) - -135 #iŕ -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -) - -136  - #_W_INT -( -i -č(i) - - ) - -138  - #_W_INT -( -w -č(*(*)&(w)č - - ) - -139  - #WCOREFLAG - 0200 - - ) - -143  - #_WSTATUS -( -x -č( - `_W_INT -(xč& 0177) - - ) - -144  - #_WSTOPPED - 0177 - - ) - -150 #iŕ -__DARWIN_UNIX03 - - -151  - #WEXITSTATUS -( -x -č(( - `_W_INT -(xč>> 8č& 0x000000ff) - - ) - -153  - #WEXITSTATUS -( -x -č( - `_W_INT -(xč>> 8) - - ) - -156  - #WSTOPSIG -( -x -č( - `_W_INT -(xč>> 8) - - ) - -157  - #WIFCONTINUED -( -x -č( - `_WSTATUS -(xč=đ -_WSTOPPED - && - `WSTOPSIG -(xč=đ0x13) - - ) - -158  - #WIFSTOPPED -( -x -č( - `_WSTATUS -(xč=đ -_WSTOPPED - && - `WSTOPSIG -(xč!đ0x13) - - ) - -159  - #WIFEXITED -( -x -č( - `_WSTATUS -(xč=đ0) - - ) - -160  - #WIFSIGNALED -( -x -č( - `_WSTATUS -(xč!đ -_WSTOPPED - && _WSTATUS(xč!đ0) - - ) - -161  - #WTERMSIG -( -x -č( - `_WSTATUS -(x)) - - ) - -162 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -163  - #WCOREDUMP -( -x -č( - `_W_INT -(xč& -WCOREFLAG -) - - ) - -165  - #W_EXITCODE -( -»t -, -sig -č(Ô‘č<< 8 | (sig)) - - ) - -166  - #W_STOPCODE -( -sig -č((sigč<< 8 | -_WSTOPPED -) - - ) - -175  - #WEXITED - 0x00000004 - - ) - -176 #iŕ -__DARWIN_UNIX03 - - -178  - #WSTOPPED - 0x00000008 - - ) - -180  - #WCONTINUED - 0x00000010 - - ) - -181  - #WNOWAIT - 0x00000020 - - ) - -184 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -190  - #WAIT_ANY - (-1č - - ) - -191  - #WAIT_MYPGRP - 0 - - ) - -193  - ~ - -201  - uwa™ - { - -202  - mw_ˇ©us -; - -207 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_LITTLE_ENDIAN - - -208  - mw_T”msig -:7, - -209 - mw_CÜedump -:1, - -210 - mw_R‘code -:8, - -211 - mw_FžËr -:16; - -213 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -214  - mw_FžËr -:16, - -215 - mw_R‘code -:8, - -216 - mw_CÜedump -:1, - -217 - mw_T”msig -:7; - -219 } - mw_T -; - -226 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_LITTLE_ENDIAN - - -227  - mw_StÝv® -:8, - -228 - mw_StÝsig -:8, - -229 - mw_FžËr -:16; - -231 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -232  - mw_FžËr -:16, - -233 - mw_StÝsig -:8, - -234 - mw_StÝv® -:8; - -236 } - mw_S -; - -238  - #w_‹rmsig - -w_T -. -w_T”msig - - - ) - -239  - #w_cÜedump - -w_T -. -w_CÜedump - - - ) - -240  - #w_»tcode - -w_T -. -w_R‘code - - - ) - -241  - #w_ˇÝv® - -w_S -. -w_StÝv® - - - ) - -242  - #w_ˇÝsig - -w_S -. -w_StÝsig - - - ) - -246 #iŕ!( -__DARWIN_UNIX03 - - 0) - -251  - #WSTOPPED - -_WSTOPPED - - - ) - -254 -__BEGIN_DECLS - - -255 -pid_t - - $wa™ -(*č - `__DARWIN_ALIAS_C -( -wa™ -); - -256 -pid_t - - $wa™pid -( -pid_t -, *, č - `__DARWIN_ALIAS_C -( -wa™pid -); - -257 #iâdeŕ -_ANSI_SOURCE - - -258  - $wa™id -( -idtył_t -, -id_t -, -sigšfo_t - *, č - `__DARWIN_ALIAS_C -( -wa™id -); - -260 #iŕ (! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -261 -pid_t - - `wa™3 -(*, ,  -ru§ge - *); - -262 -pid_t - - `wa™4 -Őid_t, *, ,  -ru§ge - *); - -264 -__END_DECLS - - - @/usr/include/time.h - -63 #iâdeŕ -_TIME_H_ - - -64  - #_TIME_H_ - - - ) - -66  - ~<_tyłs.h -> - -68  - #__Ăed_ˇruů_timeĄec - - - ) - -69  - ~<_ˇruůs.h -> - -71 #iâdeŕ -NULL - - -72  - #NULL - -__DARWIN_NULL - - - ) - -75 #iâdef -_CLOCK_T - - -76  - #_CLOCK_T - - - ) - -77  -__d¬wš_ţock_t - - tţock_t -; - -80 #iâdef -_SIZE_T - - -81  - #_SIZE_T - - - ) - -82  -__d¬wš_size_t - - tsize_t -; - -85 #iâdef -_TIME_T - - -86  - #_TIME_T - - - ) - -87  -__d¬wš_time_t - - ttime_t -; - -90  - stm - { - -91  - mtm_Łc -; - -92  - mtm_mš -; - -93  - mtm_hour -; - -94  - mtm_mday -; - -95  - mtm_mÚ -; - -96  - mtm_y—r -; - -97  - mtm_wday -; - -98  - mtm_yday -; - -99  - mtm_isdˇ -; - -100  - mtm_gmtoff -; - -101 * - mtm_zÚe -; - -104 #iŕ -__DARWIN_UNIX03 - - -105  - #CLOCKS_PER_SEC - 1000000 - - ) - -107  - ~ - -109  - #CLOCKS_PER_SEC - ( -__DARWIN_CLK_TCK -) - - ) - -112 #iâdeŕ -_ANSI_SOURCE - - -113 * -tzÇme -[]; - -116  -g‘d©e_”r -; - -117 #iŕ -__DARWIN_UNIX03 - - -118  -timezÚe - -__DARWIN_ALIAS -(timezone); - -120  -daylight -; - -122 -__BEGIN_DECLS - - -123 * -asůime -(cÚˇ  -tm - *); - -124 -ţock_t - - $ţock -(č - `__DARWIN_ALIAS -( -ţock -); - -125 * - `ůime -(cÚˇ -time_t - *); - -126  - `difáime -( -time_t -,ime_t); - -127  -tm - * - `g‘d©e -(const *); - -128  -tm - * - `gmtime -(cÚˇ -time_t - *); - -129  -tm - * - `lo˙Éime -(cÚˇ -time_t - *); - -130 -time_t - - $mktime -( -tm - *č - `__DARWIN_ALIAS -( -mktime -); - -131 -size_t - - $ˇráime -(* -__»ˇriů -, -size_t -, cÚˇ * __»ˇriů, cÚˇ  -tm - * __»ˇriůč - `__DARWIN_ALIAS -( -ˇráime -); - -132 * - $ˇ˝time -(cÚˇ * -__»ˇriů -, cÚˇ * __»ˇriů,  -tm - * __»ˇriůč - `__DARWIN_ALIAS -( -ˇ˝time -); - -133 -time_t - - `time -(time_t *); - -135 #iâdeŕ -_ANSI_SOURCE - - -136  - `tzŁt -(); - -140 * - `asůime_r -(cÚˇ  -tm - * -__»ˇriů -, * __restrict); - -141 * - `ůime_r -(cÚˇ -time_t - *, *); - -142  -tm - * - `gmtime_r -(cÚˇ -time_t - * -__»ˇriů -, tm * __restrict); - -143  -tm - * - `lo˙Éime_r -(cÚˇ -time_t - * -__»ˇriů -, tm * __restrict); - -145 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -146 -time_t - - `posix2time -(time_t); - -147 #iŕ! -__DARWIN_UNIX03 - - -148 * - `timezÚe -(, ); - -150  - `tzŁtw®l -(); - -151 -time_t - - `time2posix -(time_t); - -152 -time_t - - `tim–o˙l -( -tm - * const); - -153 -time_t - - `timegm -( -tm - * const); - -156 #iŕ! - `defšed -( -_ANSI_SOURCE -) - -157  - $Çno¦“p -(cÚˇ  -timeĄec - *, timeĄeř*č - `__DARWIN_ALIAS_C -( -Çno¦“p -); - -159 -__END_DECLS - - -161 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -162  - ~ - - @/usr/include/xlocale/_stdio.h - -24 #iâdeŕ -_XLOCALE__STDIO_H_ - - -25  - #_XLOCALE__STDIO_H_ - - - ) - -27 -__BEGIN_DECLS - - -28  - $aĄrštf_l -(**, -lo˙Ë_t -, const *, ...) - -29 - `__DARWIN_LDBL_COMPAT2 -( -aĄrštf_l -); - -30  - $ĺrštf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -31 - `__DARWIN_LDBL_COMPAT2 -( -ĺrštf_l -); - -32  - $fs˙nf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -33 - `__DARWIN_LDBL_COMPAT2 -( -fs˙nf_l -); - -34  - $´štf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, ...) - -35 - `__DARWIN_LDBL_COMPAT2 -( -´štf_l -); - -36  - $s˙nf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, ...) - -37 - `__DARWIN_LDBL_COMPAT2 -( -s˙nf_l -); - -38  - $˘´štf_l -(* -__»ˇriů -, -size_t -, -lo˙Ë_t -, - -39 cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT2 -( -˘´štf_l -); - -40  - $Ąrštf_l -(* -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -41 - `__DARWIN_LDBL_COMPAT2 -( -Ąrštf_l -); - -42  - $ss˙nf_l -(cÚˇ * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -43 ...č - `__DARWIN_LDBL_COMPAT2 -( -ss˙nf_l -); - -44  - $vaĄrštf_l -(**, -lo˙Ë_t -, cÚˇ *, -va_liˇ -) - -45 - `__DARWIN_LDBL_COMPAT2 -( -vaĄrštf_l -); - -46  - $vĺrštf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -47 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vĺrštf_l -); - -48  - $vfs˙nf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -49 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vfs˙nf_l -); - -50  - $v´štf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, -va_liˇ -) - -51 - `__DARWIN_LDBL_COMPAT2 -( -v´štf_l -); - -52  - $vs˙nf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, -va_liˇ -) - -53 - `__DARWIN_LDBL_COMPAT2 -( -vs˙nf_l -); - -54  - $v˘´štf_l -(* -__»ˇriů -, -size_t -, -lo˙Ë_t -, - -55 cÚˇ * -__»ˇriů -, -va_liˇ -) - -56 - `__DARWIN_LDBL_COMPAT2 -( -v˘´štf_l -); - -57  - $vĄrštf_l -(* -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -58 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vĄrštf_l -); - -59  - $vss˙nf_l -(cÚˇ * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -60 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vss˙nf_l -); - -61 -__END_DECLS - - - @/usr/include/xlocale/_stdlib.h - -24 #iâdeŕ -_XLOCALE__STDLIB_H_ - - -25  - #_XLOCALE__STDLIB_H_ - - - ) - -27 -__BEGIN_DECLS - - -28  -©of_l -(cÚˇ *, -lo˙Ë_t -); - -29  -©oi_l -(cÚˇ *, -lo˙Ë_t -); - -30  -©Ţ_l -(cÚˇ *, -lo˙Ë_t -); - -31 #iŕ! -__DARWIN_NO_LONG_LONG - - -33 -©Ţl_l -(cÚˇ *, -lo˙Ë_t -); - -35  -mbËn_l -(cÚˇ *, -size_t -, -lo˙Ë_t -); - -36 -size_t - -mbˇowcs_l -( -wch¬_t - * -__»ˇriů - , const * __restrict, size_t, - -37 -lo˙Ë_t -); - -38  -mbtowc_l -( -wch¬_t - * -__»ˇriů -, cÚˇ * __»ˇriů, -size_t -, - -39 -lo˙Ë_t -); - -40  - $ˇąod_l -(cÚˇ *, **, -lo˙Ë_t -č - `__DARWIN_ALIAS -( -ˇąod_l -); - -41  - $ˇąof_l -(cÚˇ *, **, -lo˙Ë_t -č - `__DARWIN_ALIAS -( -ˇąof_l -); - -42  - `ˇąŢ_l -(cÚˇ *, **, , -lo˙Ë_t -); - -44 - $ˇąŢd_l -(cÚˇ *, **, -lo˙Ë_t -) - -45 - `__DARWIN_LDBL_COMPAT2 -( -ˇąŢd_l -); - -47 - `ˇąŢl_l -(cÚˇ *, **, , -lo˙Ë_t -); - -48 #iŕ! -__DARWIN_NO_LONG_LONG - - -50 - `ˇąoq_l -(cÚˇ *, **, , -lo˙Ë_t -); - -53 - `ˇąoul_l -(cÚˇ *, **, , -lo˙Ë_t -); - -55 - `ˇąouÎ_l -(cÚˇ *, **, , -lo˙Ë_t -); - -56 #iŕ! -__DARWIN_NO_LONG_LONG - - -58 - `ˇąouq_l -(cÚˇ *, **, , -lo˙Ë_t -); - -60 -size_t - - `wcˇombs_l -(* -__»ˇriů -, cÚˇ -wch¬_t - * __restrict, size_t, - -61 -lo˙Ë_t -); - -62  - `wůomb_l -(*, -wch¬_t -, -lo˙Ë_t -); - -65 #iŕ! - `defšed -( -__ýluĄlus -č&& defšed( -__WCHAR_MAX__ -) && __WCHAR_MAX__ <= 0xffffU - -66 #´agm¨ -GCC - -poisÚ - -mbˇowcs_l - -mbtowc_l - -wcˇombs_l - -wůomb_l - - -68 -__END_DECLS - - - @/usr/include/_structs.h - -24  - ~ - - @/usr/include/i386/endian.h - -66 #iâdeŕ -_I386__ENDIAN_H_ - - -67  - #_I386__ENDIAN_H_ - - - ) - -69  - ~ - -78  - #_QUAD_HIGHWORD - 1 - - ) - -79  - #_QUAD_LOWWORD - 0 - - ) - -85  - #__DARWIN_LITTLE_ENDIAN - 1234 - - ) - -86  - #__DARWIN_BIG_ENDIAN - 4321 - - ) - -87  - #__DARWIN_PDP_ENDIAN - 3412 - - ) - -89  - #__DARWIN_BYTE_ORDER - -__DARWIN_LITTLE_ENDIAN - - - ) - -91 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -93  - #LITTLE_ENDIAN - -__DARWIN_LITTLE_ENDIAN - - - ) - -94  - #BIG_ENDIAN - -__DARWIN_BIG_ENDIAN - - - ) - -95  - #PDP_ENDIAN - -__DARWIN_PDP_ENDIAN - - - ) - -97  - #BYTE_ORDER - -__DARWIN_BYTE_ORDER - - - ) - -99  - ~ - - @/usr/include/i386/types.h - -66 #iâdef -_MACHTYPES_H_ - - -67  - #_MACHTYPES_H_ - - - ) - -69 #iâdeŕ -__ASSEMBLER__ - - -70  - ~ - -71  - ~ - -76 #iâdeŕ -_INT8_T - - -77  - #_INT8_T - - - ) - -78  -__sigĂd -  - tšt8_t -; - -80  - tu_št8_t -; - -81 #iâdeŕ -_INT16_T - - -82  - #_INT16_T - - - ) - -83  - tšt16_t -; - -85  - tu_št16_t -; - -86 #iâdeŕ -_INT32_T - - -87  - #_INT32_T - - - ) - -88  - tšt32_t -; - -90  - tu_št32_t -; - -91 #iâdeŕ -_INT64_T - - -92  - #_INT64_T - - - ) - -93  - tšt64_t -; - -95  - tu_št64_t -; - -97 #iŕ -__LP64__ - - -98  -št64_t - - t»giˇ”_t -; - -100  -št32_t - - t»giˇ”_t -; - -103 #iâdeŕ -_INTPTR_T - - -104  - #_INTPTR_T - - - ) - -105  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -107 #iâdeŕ -_UINTPTR_T - - -108  - #_UINTPTR_T - - - ) - -109  - tušŤŚ_t -; - -112 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -114  -u_št64_t - - tuŁr_addr_t -; - -115  -u_št64_t - - tuŁr_size_t -; - -116  -št64_t - - tuŁr_ssize_t -; - -117  -št64_t - - tuŁr_lÚg_t -; - -118  -u_št64_t - - tuŁr_ulÚg_t -; - -119  -št64_t - - tuŁr_time_t -; - -120  - #USER_ADDR_NULL - (( -uŁr_addr_t -č0) - - ) - -121  - #CAST_USER_ADDR_T -( -a_±r -č(( -uŁr_addr_t -)(( -ušŤŚ_t -)×_±r))) - - ) - -125  -u_št64_t - - tsys˙Î_¬g_t -; - -127 #iâdeŕ -__offŁtof - - -128  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - - @/usr/include/machine/_limits.h - -28 #iâdeŕ -_BSD_MACHINE__LIMITS_H_ - - -29  - #_BSD_MACHINE__LIMITS_H_ - - - ) - -31 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -32  - ~"µc/_lim™s.h -" - -33 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -34  - ~"i386/_lim™s.h -" - -35 #–iŕ -defšed - ( -__¬m__ -) - -36  - ~"¬m/_lim™s.h -" - -38 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/machine/_structs.h - -28 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -29  - ~"µc/_ˇruůs.h -" - -30 #–iŕ -defšed - ( -__i386__ -č|| defšed ( -__x86_64__ -) - -31  - ~"i386/_ˇruůs.h -" - -32 #–iŕ -defšed - ( -__¬m__ -) - -33  - ~"¬m/_ˇruůs.h -" - -35 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/machine/_types.h - -28 #iâdeŕ -_BSD_MACHINE__TYPES_H_ - - -29  - #_BSD_MACHINE__TYPES_H_ - - - ) - -31 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -32  - ~"µc/_tyłs.h -" - -33 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -34  - ~"i386/_tyłs.h -" - -35 #–iŕ -defšed - ( -__¬m__ -) - -36  - ~"¬m/_tyłs.h -" - -38 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/ppc/endian.h - -92 #iâdeŕ -_PPC_ENDIAN_H_ - - -93  - #_PPC_ENDIAN_H_ - - - ) - -95  - ~ - -100  - #_QUAD_HIGHWORD - 0 - - ) - -101  - #_QUAD_LOWWORD - 1 - - ) - -107  - #__DARWIN_LITTLE_ENDIAN - 1234 - - ) - -108  - #__DARWIN_BIG_ENDIAN - 4321 - - ) - -109  - #__DARWIN_PDP_ENDIAN - 3412 - - ) - -111  - #__DARWIN_BYTE_ORDER - -__DARWIN_BIG_ENDIAN - - - ) - -113 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -115  - #LITTLE_ENDIAN - -__DARWIN_LITTLE_ENDIAN - - - ) - -116  - #BIG_ENDIAN - -__DARWIN_BIG_ENDIAN - - - ) - -117  - #PDP_ENDIAN - -__DARWIN_PDP_ENDIAN - - - ) - -119  - #BYTE_ORDER - -__DARWIN_BYTE_ORDER - - - ) - -121  - ~ - - @/usr/include/ppc/types.h - -66 #iâdef -_MACHTYPES_H_ - - -67  - #_MACHTYPES_H_ - - - ) - -69 #iâdeŕ -__ASSEMBLER__ - - -70  - ~<µc/_tyłs.h -> - -71  - ~ - -76 #iâdeŕ -_INT8_T - - -77  - #_INT8_T - - - ) - -78  -__sigĂd -  - tšt8_t -; - -80  - tu_št8_t -; - -81 #iâdeŕ -_INT16_T - - -82  - #_INT16_T - - - ) - -83  - tšt16_t -; - -85  - tu_št16_t -; - -86 #iâdeŕ -_INT32_T - - -87  - #_INT32_T - - - ) - -88  - tšt32_t -; - -90  - tu_št32_t -; - -91 #iâdeŕ -_INT64_T - - -92  - #_INT64_T - - - ) - -93  - tšt64_t -; - -95  - tu_št64_t -; - -97 #iŕ -defšed -( -__µc64__ -) - -98  -št64_t - - t»giˇ”_t -; - -100  -št32_t - - t»giˇ”_t -; - -103 #iâdeŕ -_INTPTR_T - - -104  - #_INTPTR_T - - - ) - -105  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -107 #iâdeŕ -_UINTPTR_T - - -108  - #_UINTPTR_T - - - ) - -109  - tušŤŚ_t -; - -112 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -117  -u_št64_t - - tuŁr_addr_t -; - -118  -u_št64_t - - tuŁr_size_t -; - -119  -št64_t - - tuŁr_ssize_t -; - -120  -št64_t - - tuŁr_lÚg_t -; - -121  -u_št64_t - - tuŁr_ulÚg_t -; - -122  -št64_t - - tuŁr_time_t -; - -123  - #USER_ADDR_NULL - (( -uŁr_addr_t -č0) - - ) - -124  - #CAST_USER_ADDR_T -( -a_±r -č(( -uŁr_addr_t -)(( -ušŤŚ_t -)×_±r))) - - ) - -128  -u_št64_t - - tsys˙Î_¬g_t -; - -130 #iâdeŕ -__offŁtof - - -131  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - - @/usr/include/secure/_common.h - -24 #iâdeŕ -_SECURE__COMMON_H_ - - -25  - #_SECURE__COMMON_H_ - - - ) - -27 #undeŕ -_USE_FORTIFY_LEVEL - - -28 #ifdeŕ -_FORTIFY_SOURCE - && _FORTIFY_SOURCE > 0 - -29 #iŕ -_FORTIFY_SOURCE - > 1 - -30  - #_USE_FORTIFY_LEVEL - 2 - - ) - -32  - #_USE_FORTIFY_LEVEL - 1 - - ) - -35  - #_USE_FORTIFY_LEVEL - 0 - - ) - -38  - #__d¬wš_obsz0 -( -objeů -č - `__bužtš_objeů_size - (objeů, 0) - - ) - -39  - #__d¬wš_obsz -( -objeů -č - `__bužtš_objeů_size - (objeů, -_USE_FORTIFY_LEVEL - > 1) - - ) - - @/usr/include/sys/resource.h - -64 #iâdeŕ -_SYS_RESOURCE_H_ - - -65  - #_SYS_RESOURCE_H_ - - - ) - -67  - ~ - -68  - ~ - -69  - ~ - -75  - #__Ăed_ˇruů_timev® - - - ) - -76  - ~ - -79 #iâdeŕ -_ID_T - - -80  - #_ID_T - - - ) - -81  -__d¬wš_id_t - - tid_t -; - -88  -__ušt64_t - - tľim_t -; - -99  - #PRIO_PROCESS - 0 - - ) - -100  - #PRIO_PGRP - 1 - - ) - -101  - #PRIO_USER - 2 - - ) - -103 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -104  - #PRIO_DARWIN_THREAD - 3 - - ) - -109  - #PRIO_MIN - -20 - - ) - -110  - #PRIO_MAX - 20 - - ) - -116  - #PRIO_DARWIN_BG - 0x1000 - - ) - -130  - #RUSAGE_SELF - 0 - - ) - -131  - #RUSAGE_CHILDREN - -1 - - ) - -142  - sru§ge - { - -143  -timev® - - mru_utime -; - -144  -timev® - - mru_ˇime -; - -145 #iŕ -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -) - -146  - mru_Ýaque -[14]; - -153  - mru_maxrss -; - -154  - #ru_fśˇ - -ru_ixrss - - - ) - -155  - mru_ixrss -; - -156  - mru_idrss -; - -157  - mru_i¤ss -; - -158  - mru_mšćt -; - -159  - mru_majćt -; - -160  - mru_nsw­ -; - -161  - mru_šblock -; - -162  - mru_oublock -; - -163  - mru_msg˘d -; - -164  - mru_msgrcv -; - -165  - mru_nsigÇls -; - -166  - mru_nvcsw -; - -167  - mru_nivcsw -; - -168  - #ru_ϡ - -ru_nivcsw - - - ) - -184  - #RLIM_INFINITY - ((( -__ušt64_t -)1 << 63č- 1č - - ) - -185  - #RLIM_SAVED_MAX - -RLIM_INFINITY - - - ) - -186  - #RLIM_SAVED_CUR - -RLIM_INFINITY - - - ) - -192  - #RLIMIT_CPU - 0 - - ) - -193  - #RLIMIT_FSIZE - 1 - - ) - -194  - #RLIMIT_DATA - 2 - - ) - -195  - #RLIMIT_STACK - 3 - - ) - -196  - #RLIMIT_CORE - 4 - - ) - -197  - #RLIMIT_AS - 5 - - ) - -198 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -199  - #RLIMIT_RSS - -RLIMIT_AS - - - ) - -200  - #RLIMIT_MEMLOCK - 6 - - ) - -201  - #RLIMIT_NPROC - 7 - - ) - -203  - #RLIMIT_NOFILE - 8 - - ) - -204 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -205  - #RLIM_NLIMITS - 9 - - ) - -207  - #_RLIMIT_POSIX_FLAG - 0x1000 - - ) - -213  - sľim™ - { - -214 -ľim_t - - mľim_cur -; - -215 -ľim_t - - mľim_max -; - -218 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -220  - #IOPOL_TYPE_DISK - 0 - - ) - -223  - #IOPOL_SCOPE_PROCESS - 0 - - ) - -224  - #IOPOL_SCOPE_THREAD - 1 - - ) - -227  - #IOPOL_DEFAULT - 0 - - ) - -228  - #IOPOL_NORMAL - 1 - - ) - -229  - #IOPOL_PASSIVE - 2 - - ) - -230  - #IOPOL_THROTTLE - 3 - - ) - -235 -__BEGIN_DECLS - - -236  -g‘´iÜ™y -(, -id_t -); - -237 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -238  -g‘iÝŢicy_Ĺ -(, ); - -240  - $g‘ľim™ -(,  -ľim™ - *č - `__DARWIN_ALIAS -( -g‘ľim™ -); - -241  - `g‘ru§ge -(,  -ru§ge - *); - -242  - `ŁŤriÜ™y -(, -id_t -, ); - -243 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -244  - `ŁtiÝŢicy_Ĺ -(, , ); - -246  - $ŁŚlim™ -(, cÚˇ  -ľim™ - *č - `__DARWIN_ALIAS -( -ŁŚlim™ -); - -247 -__END_DECLS - - - @/usr/include/sys/signal.h - -69 #iâdef -_SYS_SIGNAL_H_ - - -70  - #_SYS_SIGNAL_H_ - - - ) - -72  - ~ - -73  - ~ - -75  - #__DARWIN_NSIG - 32 - - ) - -77 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -78  - #NSIG - -__DARWIN_NSIG - - - ) - -81  - ~ - -83  - #SIGHUP - 1 - - ) - -84  - #SIGINT - 2 - - ) - -85  - #SIGQUIT - 3 - - ) - -86  - #SIGILL - 4 - - ) - -87  - #SIGTRAP - 5 - - ) - -88  - #SIGABRT - 6 - - ) - -89 #iŕ ( -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -)) - -90  - #SIGPOLL - 7 - - ) - -92  - #SIGIOT - -SIGABRT - - - ) - -93  - #SIGEMT - 7 - - ) - -95  - #SIGFPE - 8 - - ) - -96  - #SIGKILL - 9 - - ) - -97  - #SIGBUS - 10 - - ) - -98  - #SIGSEGV - 11 - - ) - -99  - #SIGSYS - 12 - - ) - -100  - #SIGPIPE - 13 - - ) - -101  - #SIGALRM - 14 - - ) - -102  - #SIGTERM - 15 - - ) - -103  - #SIGURG - 16 - - ) - -104  - #SIGSTOP - 17 - - ) - -105  - #SIGTSTP - 18 - - ) - -106  - #SIGCONT - 19 - - ) - -107  - #SIGCHLD - 20 - - ) - -108  - #SIGTTIN - 21 - - ) - -109  - #SIGTTOU - 22 - - ) - -110 #iŕ (! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -111  - #SIGIO - 23 - - ) - -113  - #SIGXCPU - 24 - - ) - -114  - #SIGXFSZ - 25 - - ) - -115  - #SIGVTALRM - 26 - - ) - -116  - #SIGPROF - 27 - - ) - -117 #iŕ (! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -118  - #SIGWINCH - 28 - - ) - -119  - #SIGINFO - 29 - - ) - -121  - #SIGUSR1 - 30 - - ) - -122  - #SIGUSR2 - 31 - - ) - -124 #iŕ -defšed -( -_ANSI_SOURCE -č|| -__DARWIN_UNIX03 - || defšed( -__ýluĄlus -) - -130  - #SIG_DFL - ((*)())0 - - ) - -131  - #SIG_IGN - ((*)())1 - - ) - -132  - #SIG_HOLD - ((*)())5 - - ) - -133  - #SIG_ERR - (((*)())-1) - - ) - -136  - #SIG_DFL - ((*)Đ))0 - - ) - -137  - #SIG_IGN - ((*)Đ))1 - - ) - -138  - #SIG_HOLD - ((*)Đ))5 - - ) - -139  - #SIG_ERR - (((*)Đ))-1) - - ) - -142 #iâdeŕ -_ANSI_SOURCE - - -143  - ~ - -145  - #__Ăed_mcÚ‹xt_t - - - ) - -146  - #__Ăed_ˇack_t - - - ) - -147  - #__Ăed_ucÚ‹xt_t - - - ) - -148 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -149 #iŕ -defšed -( -__µc__ -č|| defšed( -__µc64__ -) - -150  - #__Ăed_mcÚ‹xt64_t - - - ) - -151  - #__Ăed_ucÚ‹xt64_t - - - ) - -154  - ~ - -156 #iâdeŕ -_PID_T - - -157  - #_PID_T - - - ) - -158  -__d¬wš_pid_t - - tpid_t -; - -161 #iâdeŕ -_PTHREAD_ATTR_T - - -162  - #_PTHREAD_ATTR_T - - - ) - -163  -__d¬wš_±h»ad_©Ś_t - - t±h»ad_©Ś_t -; - -166 #iâdeŕ -_SIGSET_T - - -167  - #_SIGSET_T - - - ) - -168  -__d¬wš_sigŁt_t - - tsigŁt_t -; - -171 #iâdef -_SIZE_T - - -172  - #_SIZE_T - - - ) - -173  -__d¬wš_size_t - - tsize_t -; - -176 #iâdeŕ -_UID_T - - -177  - #_UID_T - - - ) - -178  -__d¬wš_uid_t - - tuid_t -; - -181  - usigv® - { - -183  - msiv®_št -; - -184 * - msiv®_±r -; - -187  - #SIGEV_NONE - 0 - - ) - -188  - #SIGEV_SIGNAL - 1 - - ) - -189  - #SIGEV_THREAD - 3 - - ) - -191  - ssigev’t - { - -192  - msigev_nŮify -; - -193  - msigev_signo -; - -194  -sigv® - - msigev_v®ue -; - -195 (* - msigev_nŮify_funůiÚ -)( - msigv® -); - -196 -±h»ad_©Ś_t - * - msigev_nŮify_©Śibu‹s -; - -200  - s__sigšfo - { - -201  - msi_signo -; - -202  - msi_”şo -; - -203  - msi_code -; - -204 -pid_t - - msi_pid -; - -205 -uid_t - - msi_uid -; - -206  - msi_ˇ©us -; - -207 * - msi_addr -; - -208  -sigv® - - msi_v®ue -; - -209  - msi_bŞd -; - -210  - m__·d -[7]; - -211 } - tsigšfo_t -; - -228 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -229  - #ILL_NOOP - 0 - - ) - -231  - #ILL_ILLOPC - 1 - - ) - -232  - #ILL_ILLTRP - 2 - - ) - -233  - #ILL_PRVOPC - 3 - - ) - -234  - #ILL_ILLOPN - 4 - - ) - -235  - #ILL_ILLADR - 5 - - ) - -236  - #ILL_PRVREG - 6 - - ) - -237  - #ILL_COPROC - 7 - - ) - -238  - #ILL_BADSTK - 8 - - ) - -241 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -242  - #FPE_NOOP - 0 - - ) - -244  - #FPE_FLTDIV - 1 - - ) - -245  - #FPE_FLTOVF - 2 - - ) - -246  - #FPE_FLTUND - 3 - - ) - -247  - #FPE_FLTRES - 4 - - ) - -248  - #FPE_FLTINV - 5 - - ) - -249  - #FPE_FLTSUB - 6 - - ) - -250  - #FPE_INTDIV - 7 - - ) - -251  - #FPE_INTOVF - 8 - - ) - -254 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -255  - #SEGV_NOOP - 0 - - ) - -257  - #SEGV_MAPERR - 1 - - ) - -258  - #SEGV_ACCERR - 2 - - ) - -261 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -262  - #BUS_NOOP - 0 - - ) - -264  - #BUS_ADRALN - 1 - - ) - -265  - #BUS_ADRERR - 2 - - ) - -266  - #BUS_OBJERR - 3 - - ) - -269  - #TRAP_BRKPT - 1 - - ) - -270  - #TRAP_TRACE - 2 - - ) - -273 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -274  - #CLD_NOOP - 0 - - ) - -276  - #CLD_EXITED - 1 - - ) - -277  - #CLD_KILLED - 2 - - ) - -278  - #CLD_DUMPED - 3 - - ) - -279  - #CLD_TRAPPED - 4 - - ) - -280  - #CLD_STOPPED - 5 - - ) - -281  - #CLD_CONTINUED - 6 - - ) - -284  - #POLL_IN - 1 - - ) - -285  - #POLL_OUT - 2 - - ) - -286  - #POLL_MSG - 3 - - ) - -287  - #POLL_ERR - 4 - - ) - -288  - #POLL_PRI - 5 - - ) - -289  - #POLL_HUP - 6 - - ) - -292  - u__sigaůiÚ_u - { - -293 (* - m__§_hŞdËr -)(); - -294 (* - m__§_sigaůiÚ -)(,  - m__sigšfo - *, - -299  - s__sigaůiÚ - { - -300  -__sigaůiÚ_u - - m__sigaůiÚ_u -; - -301 (* - m§_Śamp -)(*, , , - msigšfo_t - *, *); - -302 -sigŁt_t - - m§_mask -; - -303  - m§_ćags -; - -309  - ssigaůiÚ - { - -310  -__sigaůiÚ_u - - m__sigaůiÚ_u -; - -311 -sigŁt_t - - m§_mask -; - -312  - m§_ćags -; - -318  - #§_hŞdËr - -__sigaůiÚ_u -. -__§_hŞdËr - - - ) - -319  - #§_sigaůiÚ - -__sigaůiÚ_u -. -__§_sigaůiÚ - - - ) - -321  - #SA_ONSTACK - 0x0001 - - ) - -322  - #SA_RESTART - 0x0002 - - ) - -323  - #SA_RESETHAND - 0x0004 - - ) - -324  - #SA_NOCLDSTOP - 0x0008 - - ) - -325  - #SA_NODEFER - 0x0010 - - ) - -326  - #SA_NOCLDWAIT - 0x0020 - - ) - -327  - #SA_SIGINFO - 0x0040 - - ) - -328 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -329  - #SA_USERTRAMP - 0x0100 - - ) - -331  - #SA_64REGSET - 0x0200 - - ) - -337  - #SA_USERSPACE_MASK - ( -SA_ONSTACK - | -SA_RESTART - | -SA_RESETHAND - | -SA_NOCLDSTOP - | -SA_NODEFER - | -SA_NOCLDWAIT - | -SA_SIGINFO -) - - ) - -342  - #SIG_BLOCK - 1 - - ) - -343  - #SIG_UNBLOCK - 2 - - ) - -344  - #SIG_SETMASK - 3 - - ) - -347  - #SI_USER - 0x10001 - - ) - -348  - #SI_QUEUE - 0x10002 - - ) - -349  - #SI_TIMER - 0x10003 - - ) - -350  - #SI_ASYNCIO - 0x10004 - - ) - -351  - #SI_MESGQ - 0x10005 - - ) - -353 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -354 (* - tsig_t -)(); - -361  - #SS_ONSTACK - 0x0001 - - ) - -362  - #SS_DISABLE - 0x0004 - - ) - -363  - #MINSIGSTKSZ - 32768 - - ) - -364  - #SIGSTKSZ - 131072 - - ) - -366 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -371  - ssigvec - { - -372 (* -sv_hŞdËr -)(); - -373  -sv_mask -; - -374  -sv_ćags -; - -377  - #SV_ONSTACK - -SA_ONSTACK - - - ) - -378  - #SV_INTERRUPT - -SA_RESTART - - - ) - -379  - #SV_RESETHAND - -SA_RESETHAND - - - ) - -380  - #SV_NODEFER - -SA_NODEFER - - - ) - -381  - #SV_NOCLDSTOP - -SA_NOCLDSTOP - - - ) - -382  - #SV_SIGINFO - -SA_SIGINFO - - - ) - -384  - #sv_Úˇack - -sv_ćags - - - ) - -390  - ssigˇack - { - -391 * -ss_Ą -; - -392  -ss_Úˇack -; - -395 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -400  - #sigmask -( -m -č(1 << ((m)-1)) - - ) - -403  - #BADSIG - -SIG_ERR - - - ) - -412 -__BEGIN_DECLS - - -413 (* - `sigÇl -(, (*)()))(); - -414 -__END_DECLS - - - @/usr/include/xlocale/_time.h - -24 #iâdeŕ -_XLOCALE__TIME_H_ - - -25  - #_XLOCALE__TIME_H_ - - - ) - -27 -__BEGIN_DECLS - - -28 -size_t - - $ˇráime_l -(* -__»ˇriů -, -size_t -, const * __restrict, - -29 cÚˇ  -tm - * -__»ˇriů -, -lo˙Ë_t -) - -30 - `__DARWIN_ALIAS -( -ˇráime_l -); - -31 * - $ˇ˝time_l -(cÚˇ * -__»ˇriů -, const * __restrict, - -32  -tm - * -__»ˇriů -, -lo˙Ë_t -č - `__DARWIN_ALIAS -( -ˇ˝time_l -); - -33 -__END_DECLS - - - @/usr/include/i386/_limits.h - -22 #iâdef -_I386__LIMITS_H_ - - -23  - #_I386__LIMITS_H_ - - - ) - -25  - #__DARWIN_CLK_TCK - 100 - - ) - - @/usr/include/i386/_structs.h - -29  - ~ - -31 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -32 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -33  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -37 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -) - -38  - ~ - -42 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -43 #undeŕ -__Ăed_ˇruů_mcÚ‹xt - - -45 #iâdeŕ -_STRUCT_MCONTEXT32 - - -46 #iŕ -__DARWIN_UNIX03 - - -47  - #_STRUCT_MCONTEXT32 -  -__d¬wš_mcÚ‹xt32 - - - ) - -48 - g_STRUCT_MCONTEXT32 - - -50 -_STRUCT_X86_EXCEPTION_STATE32 - - g__es -; - -51 -_STRUCT_X86_THREAD_STATE32 - - g__ss -; - -52 -_STRUCT_X86_FLOAT_STATE32 - - g__fs -; - -55  - #_STRUCT_MCONTEXT32 -  -mcÚ‹xt32 - - - ) - -56 - g_STRUCT_MCONTEXT32 - - -58 -_STRUCT_X86_EXCEPTION_STATE32 - - ges -; - -59 -_STRUCT_X86_THREAD_STATE32 - - gss -; - -60 -_STRUCT_X86_FLOAT_STATE32 - - gfs -; - -65 #iâdeŕ -_STRUCT_MCONTEXT64 - - -66 #iŕ -__DARWIN_UNIX03 - - -67  - #_STRUCT_MCONTEXT64 -  -__d¬wš_mcÚ‹xt64 - - - ) - -68 - g_STRUCT_MCONTEXT64 - - -70 -_STRUCT_X86_EXCEPTION_STATE64 - - g__es -; - -71 -_STRUCT_X86_THREAD_STATE64 - - g__ss -; - -72 -_STRUCT_X86_FLOAT_STATE64 - - g__fs -; - -75  - #_STRUCT_MCONTEXT64 -  -mcÚ‹xt64 - - - ) - -76 - g_STRUCT_MCONTEXT64 - - -78 -_STRUCT_X86_EXCEPTION_STATE64 - - ges -; - -79 -_STRUCT_X86_THREAD_STATE64 - - gss -; - -80 -_STRUCT_X86_FLOAT_STATE64 - - gfs -; - -86 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -87 #undeŕ -__Ăed_mcÚ‹xt_t - - -88 #iâdeŕ -_MCONTEXT_T - - -89  - #_MCONTEXT_T - - - ) - -90 #iŕ -defšed -( -__LP64__ -) - -91  -_STRUCT_MCONTEXT64 - * - tmcÚ‹xt_t -; - -92  - #_STRUCT_MCONTEXT - -_STRUCT_MCONTEXT64 - - - ) - -94  -_STRUCT_MCONTEXT32 - * - tmcÚ‹xt_t -; - -95  - #_STRUCT_MCONTEXT - -_STRUCT_MCONTEXT32 - - - ) - -100 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -101 #iâdeŕ -I386_MCONTEXT_SIZE - - -102  - #I386_MCONTEXT_SIZE - ( -mcÚ‹xt -) - - ) - - @/usr/include/i386/_types.h - -28 #iâdef -_BSD_I386__TYPES_H_ - - -29  - #_BSD_I386__TYPES_H_ - - - ) - -36 #ifdeŕ -__GNUC__ - - -37  -__sigĂd -  - t__št8_t -; - -39  - t__št8_t -; - -41  - t__ušt8_t -; - -42  - t__št16_t -; - -43  - t__ušt16_t -; - -44  - t__št32_t -; - -45  - t__ušt32_t -; - -46  - t__št64_t -; - -47  - t__ušt64_t -; - -49  - t__d¬wš_šŤŚ_t -; - -50  - t__d¬wš_Çtużl_t -; - -70  - t__d¬wš_ů_ruĂ_t -; - -77  - m__mbˇ©e8 -[128]; - -78  - m_mbˇ©eL -; - -79 } - t__mbˇ©e_t -; - -81  -__mbˇ©e_t - - t__d¬wš_mbˇ©e_t -; - -83 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__PTRDIFF_TYPE__ -) - -84  -__PTRDIFF_TYPE__ - - t__d¬wš_±rdiff_t -; - -86  - t__d¬wš_±rdiff_t -; - -89 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__SIZE_TYPE__ -) - -90  -__SIZE_TYPE__ - - t__d¬wš_size_t -; - -92  - t__d¬wš_size_t -; - -95 #iŕ( -__GNUC__ - > 2) - -96  -__bužtš_va_liˇ - - t__d¬wš_va_liˇ -; - -98 * - t__d¬wš_va_liˇ -; - -101 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WCHAR_TYPE__ -) - -102  -__WCHAR_TYPE__ - - t__d¬wš_wch¬_t -; - -104  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wch¬_t -; - -107  -__d¬wš_wch¬_t - - t__d¬wš_ruĂ_t -; - -109 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WINT_TYPE__ -) - -110  -__WINT_TYPE__ - - t__d¬wš_wšt_t -; - -112  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wšt_t -; - -115  - t__d¬wš_ţock_t -; - -116  -__ušt32_t - - t__d¬wš_sockËn_t -; - -117  - t__d¬wš_ssize_t -; - -118  - t__d¬wš_time_t -; - - @/usr/include/machine/signal.h - -28 #iâdeŕ -_BSD_MACHINE_SIGNAL_H_ - - -29  - #_BSD_MACHINE_SIGNAL_H_ - - - ) - -31 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -32  - ~"µc/sigÇl.h -" - -33 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -34  - ~"i386/sigÇl.h -" - -35 #–iŕ -defšed - ( -__¬m__ -) - -36  - ~"¬m/sigÇl.h -" - -38 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/ppc/_limits.h - -22 #iâdef -_PPC__LIMITS_H_ - - -23  - #_PPC__LIMITS_H_ - - - ) - -25  - #__DARWIN_CLK_TCK - 100 - - ) - - @/usr/include/ppc/_structs.h - -29  - ~ - -31 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -32 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -33  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -37 #ifdeŕ -__Ăed_mcÚ‹xt64_t - - -38 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -39  - #__Ăed_ˇruů_mcÚ‹xt64 - - - ) - -43 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -č|| defšed( -__Ăed_ˇruů_mcÚ‹xt64 -) - -44  - ~ - -47 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -48 #undeŕ -__Ăed_ˇruů_mcÚ‹xt - - -49 #iâdeŕ -_STRUCT_MCONTEXT - - -50 #iŕ -__DARWIN_UNIX03 - - -51  - #_STRUCT_MCONTEXT -  -__d¬wš_mcÚ‹xt - - - ) - -52 - g_STRUCT_MCONTEXT - - -54 -_STRUCT_PPC_EXCEPTION_STATE - - g__es -; - -55 -_STRUCT_PPC_THREAD_STATE - - g__ss -; - -56 -_STRUCT_PPC_FLOAT_STATE - - g__fs -; - -57 -_STRUCT_PPC_VECTOR_STATE - - g__vs -; - -60  - #_STRUCT_MCONTEXT -  -mcÚ‹xt - - - ) - -61 - g_STRUCT_MCONTEXT - - -63 -_STRUCT_PPC_EXCEPTION_STATE - - ges -; - -64 -_STRUCT_PPC_THREAD_STATE - - gss -; - -65 -_STRUCT_PPC_FLOAT_STATE - - gfs -; - -66 -_STRUCT_PPC_VECTOR_STATE - - gvs -; - -72 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -73 #undeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -74 #iâdeŕ -_STRUCT_MCONTEXT64 - - -75 #iŕ -__DARWIN_UNIX03 - - -76  - #_STRUCT_MCONTEXT64 -  -__d¬wš_mcÚ‹xt64 - - - ) - -77 - g_STRUCT_MCONTEXT64 - - -79 -_STRUCT_PPC_EXCEPTION_STATE64 - - g__es -; - -80 -_STRUCT_PPC_THREAD_STATE64 - - g__ss -; - -81 -_STRUCT_PPC_FLOAT_STATE - - g__fs -; - -82 -_STRUCT_PPC_VECTOR_STATE - - g__vs -; - -85  - #_STRUCT_MCONTEXT64 -  -mcÚ‹xt64 - - - ) - -86 - g_STRUCT_MCONTEXT64 - - -88 -_STRUCT_PPC_EXCEPTION_STATE64 - - ges -; - -89 -_STRUCT_PPC_THREAD_STATE64 - - gss -; - -90 -_STRUCT_PPC_FLOAT_STATE - - gfs -; - -91 -_STRUCT_PPC_VECTOR_STATE - - gvs -; - -97 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -98 #undeŕ -__Ăed_mcÚ‹xt_t - - -99 #iâdeŕ -_MCONTEXT_T - - -100  - #_MCONTEXT_T - - - ) - -101  -_STRUCT_MCONTEXT - * - tmcÚ‹xt_t -; - -105 #ifdeŕ -__Ăed_mcÚ‹xt64_t - - -106 #undeŕ -__Ăed_mcÚ‹xt64_t - - -107 #iâdeŕ -_MCONTEXT64_T - - -108  - #_MCONTEXT64_T - - - ) - -109  -_STRUCT_MCONTEXT64 - * - tmcÚ‹xt64_t -; - -113 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -114 #iâdeŕ -PPC_MCONTEXT_SIZE - - -115  - #PPC_MCONTEXT_SIZE - ( -PPC_THREAD_STATE_COUNT - + -PPC_FLOAT_STATE_COUNT - + -PPC_EXCEPTION_STATE_COUNT - + -PPC_VECTOR_STATE_COUNT -č* () - - ) - -117 #iâdeŕ -PPC_MCONTEXT64_SIZE - - -118  - #PPC_MCONTEXT64_SIZE - ( -PPC_THREAD_STATE64_COUNT - + -PPC_FLOAT_STATE_COUNT - + -PPC_EXCEPTION_STATE_COUNT - + -PPC_VECTOR_STATE_COUNT -č* () - - ) - -126 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt - - -127 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt - - -128 #iâdeŕ -_STRUCT_SIGCONTEXT - - -129 #iŕ -__DARWIN_UNIX03 - - -130  - #_STRUCT_SIGCONTEXT -  -__d¬wš_sigcÚ‹xt - - - ) - -131 - g_STRUCT_SIGCONTEXT - - -133  - g__sc_Úˇack -; - -134  - g__sc_mask -; - -135  - g__sc_ś -; - -136  - g__sc_psw -; - -137  - g__sc_Ą -; - -138 * - g__sc_»gs -; - -141  - #_STRUCT_SIGCONTEXT -  -sigcÚ‹xt - - - ) - -142 - g_STRUCT_SIGCONTEXT - - -144  - gsc_Úˇack -; - -145  - gsc_mask -; - -146  - gsc_ś -; - -147  - gsc_psw -; - -148  - gsc_Ą -; - -149 * - gsc_»gs -; - -162 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt32 - - -163 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt32 - - -164 #iâdeŕ -_STRUCT_SIGCONTEXT32 - - -165 #iŕ -__DARWIN_UNIX03 - - -166  - #_STRUCT_SIGCONTEXT32 -  -__d¬wš_sigcÚ‹xt32 - - - ) - -167 - g_STRUCT_SIGCONTEXT32 - - -169  - g__sc_Úˇack -; - -170  - g__sc_mask -; - -171  - g__sc_ś -; - -172  - g__sc_psw -; - -173  - g__sc_Ą -; - -174 * - g__sc_»gs -; - -177  - #_STRUCT_SIGCONTEXT32 -  -sigcÚ‹xt32 - - - ) - -178 - g_STRUCT_SIGCONTEXT32 - - -180  - gsc_Úˇack -; - -181  - gsc_mask -; - -182  - gsc_ś -; - -183  - gsc_psw -; - -184  - gsc_Ą -; - -185 * - gsc_»gs -; - -191 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt64 - - -192 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt64 - - -193 #iâdeŕ -_STRUCT_SIGCONTEXT64 - - -194 #iŕ -__DARWIN_UNIX03 - - -195  - #_STRUCT_SIGCONTEXT64 -  -__d¬wš_sigcÚ‹xt64 - - - ) - -196 - g_STRUCT_SIGCONTEXT64 - - -198  - g__sc_Úˇack -; - -199  - g__sc_mask -; - -200  - g__sc_ś -; - -201  - g__sc_psw -; - -202  - g__sc_Ą -; - -203 * - g__sc_»gs -; - -206  - #_STRUCT_SIGCONTEXT64 -  -sigcÚ‹xt64 - - - ) - -207 - g_STRUCT_SIGCONTEXT64 - - -209  - gsc_Úˇack -; - -210  - gsc_mask -; - -211  - gsc_ś -; - -212  - gsc_psw -; - -213  - gsc_Ą -; - -214 * - gsc_»gs -; - - @/usr/include/ppc/_types.h - -28 #iâdef -_BSD_PPC__TYPES_H_ - - -29  - #_BSD_PPC__TYPES_H_ - - - ) - -36 #ifdeŕ -__GNUC__ - - -37  -__sigĂd -  - t__št8_t -; - -39  - t__št8_t -; - -41  - t__ušt8_t -; - -42  - t__št16_t -; - -43  - t__ušt16_t -; - -44  - t__št32_t -; - -45  - t__ušt32_t -; - -46  - t__št64_t -; - -47  - t__ušt64_t -; - -49  - t__d¬wš_šŤŚ_t -; - -50  - t__d¬wš_Çtużl_t -; - -70  - t__d¬wš_ů_ruĂ_t -; - -77  - m__mbˇ©e8 -[128]; - -78  - m_mbˇ©eL -; - -79 } - t__mbˇ©e_t -; - -81  -__mbˇ©e_t - - t__d¬wš_mbˇ©e_t -; - -83 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__PTRDIFF_TYPE__ -) - -84  -__PTRDIFF_TYPE__ - - t__d¬wš_±rdiff_t -; - -86  - t__d¬wš_±rdiff_t -; - -89 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__SIZE_TYPE__ -) - -90  -__SIZE_TYPE__ - - t__d¬wš_size_t -; - -92  - t__d¬wš_size_t -; - -95 #iŕ( -__GNUC__ - > 2) - -96  -__bužtš_va_liˇ - - t__d¬wš_va_liˇ -; - -98 * - t__d¬wš_va_liˇ -; - -101 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WCHAR_TYPE__ -) - -102  -__WCHAR_TYPE__ - - t__d¬wš_wch¬_t -; - -104  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wch¬_t -; - -107  -__d¬wš_wch¬_t - - t__d¬wš_ruĂ_t -; - -109 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WINT_TYPE__ -) - -110  -__WINT_TYPE__ - - t__d¬wš_wšt_t -; - -112  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wšt_t -; - -115  - t__d¬wš_ţock_t -; - -116  -__ušt32_t - - t__d¬wš_sockËn_t -; - -117  - t__d¬wš_ssize_t -; - -118  - t__d¬wš_time_t -; - - @/usr/include/sys/_endian.h - -90 #iâdeŕ -_SYS__ENDIAN_H_ - - -91  - #_SYS__ENDIAN_H_ - - - ) - -93  - ~ - -99 #iŕ -defšed -( -lšt -) - -101 -__BEGIN_DECLS - - -102 -__ušt16_t - -Áohs -(__uint16_t); - -103 -__ušt16_t - -htÚs -(__uint16_t); - -104 -__ušt32_t - -Áohl -(__uint32_t); - -105 -__ušt32_t - -htÚl -(__uint32_t); - -106 - g__END_DECLS - - -108 #–iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -110  - #Áohl -( -x -č(x) - - ) - -111  - #Áohs -( -x -č(x) - - ) - -112  - #htÚl -( -x -č(x) - - ) - -113  - #htÚs -( -x -č(x) - - ) - -115 #iŕ -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -116  - #NTOHL -( -x -č(x) - - ) - -117  - #NTOHS -( -x -č(x) - - ) - -118  - #HTONL -( -x -č(x) - - ) - -119  - #HTONS -( -x -č(x) - - ) - -124  - ~ - -126  - #Áohs -( -x -č - `__DARWIN_OSSw­IÁ16 -(x) - - ) - -127  - #htÚs -( -x -č - `__DARWIN_OSSw­IÁ16 -(x) - - ) - -129  - #Áohl -( -x -č - `__DARWIN_OSSw­IÁ32 -(x) - - ) - -130  - #htÚl -( -x -č - `__DARWIN_OSSw­IÁ32 -(x) - - ) - -132 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -133  - #NTOHL -( -x -č(xčđ - `Áohl -(( -__ušt32_t -)x) - - ) - -134  - #NTOHS -( -x -č(xčđ - `Áohs -(( -__ušt16_t -)x) - - ) - -135  - #HTONL -( -x -č(xčđ - `htÚl -(( -__ušt32_t -)x) - - ) - -136  - #HTONS -( -x -č(xčđ - `htÚs -(( -__ušt16_t -)x) - - ) - - @/usr/include/i386/signal.h - -33 #iâdef -_I386_SIGNAL_H_ - - -34  - #_I386_SIGNAL_H_ - 1 - - ) - -36  - ~ - -38 #iâdeŕ -_ANSI_SOURCE - - -39  - tsig_©omic_t -; - -41 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -43  - ~ - -45 #ifdeŕ -__APPLE_API_OBSOLETE - - -54  - #__Ăed_ˇruů_sigcÚ‹xt - - - ) - -55  - ~ - - @/usr/include/libkern/_OSByteOrder.h - -29 #iâdeŕ -_OS__OSBYTEORDER_H - - -30  - #_OS__OSBYTEORDER_H - - - ) - -40  - ~ - -43  - #__DARWIN_OSSw­CÚˇIÁ16 -( -x -) \ - -44 (( -__ušt16_t -)((((__ušt16_t)( -x -) & 0xff00) >> 8) | \ - -45 ((( -__ušt16_t -)( -x -č& 0x00ffč<< 8))) - - ) - -47  - #__DARWIN_OSSw­CÚˇIÁ32 -( -x -) \ - -48 (( -__ušt32_t -)((((__ušt32_t)( -x -) & 0xff000000) >> 24) | \ - -49 ((( -__ušt32_t -)( -x -) & 0x00ff0000) >> 8) | \ - -50 ((( -__ušt32_t -)( -x -) & 0x0000ff00) << 8) | \ - -51 ((( -__ušt32_t -)( -x -č& 0x000000ffč<< 24))) - - ) - -53  - #__DARWIN_OSSw­CÚˇIÁ64 -( -x -) \ - -54 (( -__ušt64_t -)((((__ušt64_t)( -x -) & 0xff00000000000000ULL) >> 56) | \ - -55 ((( -__ušt64_t -)( -x -) & 0x00ff000000000000ULL) >> 40) | \ - -56 ((( -__ušt64_t -)( -x -) & 0x0000ff0000000000ULL) >> 24) | \ - -57 ((( -__ušt64_t -)( -x -) & 0x000000ff00000000ULL) >> 8) | \ - -58 ((( -__ušt64_t -)( -x -) & 0x00000000ff000000ULL) << 8) | \ - -59 ((( -__ušt64_t -)( -x -) & 0x0000000000ff0000ULL) << 24) | \ - -60 ((( -__ušt64_t -)( -x -) & 0x000000000000ff00ULL) << 40) | \ - -61 ((( -__ušt64_t -)( -x -č& 0x00000000000000ffULLč<< 56))) - - ) - -63 #iŕ -defšed -( -__GNUC__ -) - -65 #iŕ -defšed -( -__i386__ -č|| defšed( -__x86_64__ -) - -66  - ~ - -69 #iŕ -defšed -( -__¬m__ -) - -70  - ~ - -74  - #__DARWIN_OSSw­IÁ16 -( -x -) \ - -75 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ16 -(xč: - `_OSSw­IÁ16 -(x)) - - ) - -77  - #__DARWIN_OSSw­IÁ32 -( -x -) \ - -78 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ32 -(xč: - `_OSSw­IÁ32 -(x)) - - ) - -80  - #__DARWIN_OSSw­IÁ64 -( -x -) \ - -81 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ64 -(xč: - `_OSSw­IÁ64 -(x)) - - ) - -85 #iŕ -defšed -( -__i386__ -č|| defšed( -__x86_64__ -) - -87 #iŕ! -defšed -( -__DARWIN_OS_INLINE -) - -88 #iŕ -defšed -( -__STDC_VERSION__ -) && __STDC_VERSION__ >= 199901L - -89  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -90 #–iŕ -defšed -( -__MWERKS__ -č|| defšed( -__ýluĄlus -) - -91  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -93  - #__DARWIN_OS_INLINE -  -__šlše__ - - - ) - -97 -__DARWIN_OS_INLINE - - -98 -ušt16_t - - -99 - $_OSSw­IÁ16 -( - -100 -ušt16_t - -d©a - - -103  - `__DARWIN_OSSw­CÚˇIÁ16 -( -d©a -); - -104 - } -} - -106 -__DARWIN_OS_INLINE - - -107 -ušt32_t - - -108 - $_OSSw­IÁ32 -( - -109 -ušt32_t - -d©a - - -112  - `__DARWIN_OSSw­CÚˇIÁ32 -( -d©a -); - -113 - } -} - -115 -__DARWIN_OS_INLINE - - -116 -ušt64_t - - -117 - $_OSSw­IÁ64 -( - -118 -ušt64_t - -d©a - - -121  - `__DARWIN_OSSw­CÚˇIÁ64 -( -d©a -); - -122 - } -} - -125  - #__DARWIN_OSSw­IÁ16 -( -x -č - `_OSSw­IÁ16 -(x) - - ) - -127  - #__DARWIN_OSSw­IÁ32 -( -x -č - `_OSSw­IÁ32 -(x) - - ) - -129  - #__DARWIN_OSSw­IÁ64 -( -x -č - `_OSSw­IÁ64 -(x) - - ) - - @/usr/include/mach/i386/_structs.h - -32 #iâdef -_MACH_I386__STRUCTS_H_ - - -33  - #_MACH_I386__STRUCTS_H_ - - - ) - -41 #iŕ -__DARWIN_UNIX03 - - -42  - #_STRUCT_X86_THREAD_STATE32 -  -__d¬wš_i386_th»ad_ˇ©e - - - ) - -43 - g_STRUCT_X86_THREAD_STATE32 - - -45  - g__—x -; - -46  - g__ebx -; - -47  - g__ecx -; - -48  - g__edx -; - -49  - g__edi -; - -50  - g__esi -; - -51  - g__ebp -; - -52  - g__eĄ -; - -53  - g__ss -; - -54  - g__ećags -; - -55  - g__eť -; - -56  - g__cs -; - -57  - g__ds -; - -58  - g__es -; - -59  - g__fs -; - -60  - g__gs -; - -63  - #_STRUCT_X86_THREAD_STATE32 -  -i386_th»ad_ˇ©e - - - ) - -64 - g_STRUCT_X86_THREAD_STATE32 - - -66  - g—x -; - -67  - gebx -; - -68  - gecx -; - -69  - gedx -; - -70  - gedi -; - -71  - gesi -; - -72  - gebp -; - -73  - geĄ -; - -74  - gss -; - -75  - gećags -; - -76  - geť -; - -77  - gcs -; - -78  - gds -; - -79  - ges -; - -80  - gfs -; - -81  - ggs -; - -87 #iŕ -__DARWIN_UNIX03 - - -88  - #_STRUCT_FP_CONTROL -  -__d¬wš_ĺ_cÚŚŢ - - - ) - -89 - g_STRUCT_FP_CONTROL - - -91  - g__šv®id - :1, - -92 - g__d’Üm - :1, - -93 - g__zdiv - :1, - -94 - g__ovrć - :1, - -95 - g__undć - :1, - -96 - g__´ecis - :1, - -98 - g__pc - :2, - -99 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -100  - #FP_PREC_24B - 0 - - ) - -101  - #FP_PREC_53B - 2 - - ) - -102  - #FP_PREC_64B - 3 - - ) - -104 - g__rc - :2, - -105 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -106  - #FP_RND_NEAR - 0 - - ) - -107  - #FP_RND_DOWN - 1 - - ) - -108  - #FP_RND_UP - 2 - - ) - -109  - #FP_CHOP - 3 - - ) - -114  -_STRUCT_FP_CONTROL - - t__d¬wš_ĺ_cÚŚŢ_t -; - -116  - #_STRUCT_FP_CONTROL -  -ĺ_cÚŚŢ - - - ) - -117 - g_STRUCT_FP_CONTROL - - -119  - gšv®id - :1, - -120 - gd’Üm - :1, - -121 - gzdiv - :1, - -122 - govrć - :1, - -123 - gundć - :1, - -124 - g´ecis - :1, - -126 - gpc - :2, - -127  - #FP_PREC_24B - 0 - - ) - -128  - #FP_PREC_53B - 2 - - ) - -129  - #FP_PREC_64B - 3 - - ) - -130 - grc - :2, - -131  - #FP_RND_NEAR - 0 - - ) - -132  - #FP_RND_DOWN - 1 - - ) - -133  - #FP_RND_UP - 2 - - ) - -134  - #FP_CHOP - 3 - - ) - -138  -_STRUCT_FP_CONTROL - - tĺ_cÚŚŢ_t -; - -145 #iŕ -__DARWIN_UNIX03 - - -146  - #_STRUCT_FP_STATUS -  -__d¬wš_ĺ_ˇ©us - - - ) - -147 - g_STRUCT_FP_STATUS - - -149  - g__šv®id - :1, - -150 - g__d’Üm - :1, - -151 - g__zdiv - :1, - -152 - g__ovrć - :1, - -153 - g__undć - :1, - -154 - g__´ecis - :1, - -155 - g__ˇkćt - :1, - -156 - g__”rsumm - :1, - -157 - g__c0 - :1, - -158 - g__c1 - :1, - -159 - g__c2 - :1, - -160 - g__tos - :3, - -161 - g__c3 - :1, - -162 - g__busy - :1; - -164  -_STRUCT_FP_STATUS - - t__d¬wš_ĺ_ˇ©us_t -; - -166  - #_STRUCT_FP_STATUS -  -ĺ_ˇ©us - - - ) - -167 - g_STRUCT_FP_STATUS - - -169  - gšv®id - :1, - -170 - gd’Üm - :1, - -171 - gzdiv - :1, - -172 - govrć - :1, - -173 - gundć - :1, - -174 - g´ecis - :1, - -175 - gˇkćt - :1, - -176 - g”rsumm - :1, - -177 - gc0 - :1, - -178 - gc1 - :1, - -179 - gc2 - :1, - -180 - gtos - :3, - -181 - gc3 - :1, - -182 - gbusy - :1; - -184  -_STRUCT_FP_STATUS - - tĺ_ˇ©us_t -; - -189 #iŕ -__DARWIN_UNIX03 - - -190  - #_STRUCT_MMST_REG -  -__d¬wš_mmˇ_»g - - - ) - -191 - g_STRUCT_MMST_REG - - -193  - g__mmˇ_»g -[10]; - -194  - g__mmˇ_r¤v -[6]; - -197  - #_STRUCT_MMST_REG -  -mmˇ_»g - - - ) - -198 - g_STRUCT_MMST_REG - - -200  - gmmˇ_»g -[10]; - -201  - gmmˇ_r¤v -[6]; - -208 #iŕ -__DARWIN_UNIX03 - - -209  - #_STRUCT_XMM_REG -  -__d¬wš_xmm_»g - - - ) - -210 - g_STRUCT_XMM_REG - - -212  - g__xmm_»g -[16]; - -215  - #_STRUCT_XMM_REG -  -xmm_»g - - - ) - -216 - g_STRUCT_XMM_REG - - -218  - gxmm_»g -[16]; - -226 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -227  - #FP_STATE_BYTES - 512 - - ) - -230 #iŕ -__DARWIN_UNIX03 - - -231  - #_STRUCT_X86_FLOAT_STATE32 -  -__d¬wš_i386_ćßt_ˇ©e - - - ) - -232 - g_STRUCT_X86_FLOAT_STATE32 - - -234  - g__ĺu_»Łrved -[2]; - -235 -_STRUCT_FP_CONTROL - - g__ĺu_fcw -; - -236 -_STRUCT_FP_STATUS - - g__ĺu_fsw -; - -237 -__ušt8_t - - g__ĺu_áw -; - -238 -__ušt8_t - - g__ĺu_r¤v1 -; - -239 -__ušt16_t - - g__ĺu_fÝ -; - -240 -__ušt32_t - - g__ĺu_ť -; - -241 -__ušt16_t - - g__ĺu_cs -; - -242 -__ušt16_t - - g__ĺu_r¤v2 -; - -243 -__ušt32_t - - g__ĺu_dp -; - -244 -__ušt16_t - - g__ĺu_ds -; - -245 -__ušt16_t - - g__ĺu_r¤v3 -; - -246 -__ušt32_t - - g__ĺu_mxc¤ -; - -247 -__ušt32_t - - g__ĺu_mxc¤mask -; - -248 -_STRUCT_MMST_REG - - g__ĺu_ˇmm0 -; - -249 -_STRUCT_MMST_REG - - g__ĺu_ˇmm1 -; - -250 -_STRUCT_MMST_REG - - g__ĺu_ˇmm2 -; - -251 -_STRUCT_MMST_REG - - g__ĺu_ˇmm3 -; - -252 -_STRUCT_MMST_REG - - g__ĺu_ˇmm4 -; - -253 -_STRUCT_MMST_REG - - g__ĺu_ˇmm5 -; - -254 -_STRUCT_MMST_REG - - g__ĺu_ˇmm6 -; - -255 -_STRUCT_MMST_REG - - g__ĺu_ˇmm7 -; - -256 -_STRUCT_XMM_REG - - g__ĺu_xmm0 -; - -257 -_STRUCT_XMM_REG - - g__ĺu_xmm1 -; - -258 -_STRUCT_XMM_REG - - g__ĺu_xmm2 -; - -259 -_STRUCT_XMM_REG - - g__ĺu_xmm3 -; - -260 -_STRUCT_XMM_REG - - g__ĺu_xmm4 -; - -261 -_STRUCT_XMM_REG - - g__ĺu_xmm5 -; - -262 -_STRUCT_XMM_REG - - g__ĺu_xmm6 -; - -263 -_STRUCT_XMM_REG - - g__ĺu_xmm7 -; - -264  - g__ĺu_r¤v4 -[14*16]; - -265  - g__ĺu_»Łrved1 -; - -268  - #_STRUCT_X86_FLOAT_STATE32 -  -i386_ćßt_ˇ©e - - - ) - -269 - g_STRUCT_X86_FLOAT_STATE32 - - -271  - gĺu_»Łrved -[2]; - -272 -_STRUCT_FP_CONTROL - - gĺu_fcw -; - -273 -_STRUCT_FP_STATUS - - gĺu_fsw -; - -274 -__ušt8_t - - gĺu_áw -; - -275 -__ušt8_t - - gĺu_r¤v1 -; - -276 -__ušt16_t - - gĺu_fÝ -; - -277 -__ušt32_t - - gĺu_ť -; - -278 -__ušt16_t - - gĺu_cs -; - -279 -__ušt16_t - - gĺu_r¤v2 -; - -280 -__ušt32_t - - gĺu_dp -; - -281 -__ušt16_t - - gĺu_ds -; - -282 -__ušt16_t - - gĺu_r¤v3 -; - -283 -__ušt32_t - - gĺu_mxc¤ -; - -284 -__ušt32_t - - gĺu_mxc¤mask -; - -285 -_STRUCT_MMST_REG - - gĺu_ˇmm0 -; - -286 -_STRUCT_MMST_REG - - gĺu_ˇmm1 -; - -287 -_STRUCT_MMST_REG - - gĺu_ˇmm2 -; - -288 -_STRUCT_MMST_REG - - gĺu_ˇmm3 -; - -289 -_STRUCT_MMST_REG - - gĺu_ˇmm4 -; - -290 -_STRUCT_MMST_REG - - gĺu_ˇmm5 -; - -291 -_STRUCT_MMST_REG - - gĺu_ˇmm6 -; - -292 -_STRUCT_MMST_REG - - gĺu_ˇmm7 -; - -293 -_STRUCT_XMM_REG - - gĺu_xmm0 -; - -294 -_STRUCT_XMM_REG - - gĺu_xmm1 -; - -295 -_STRUCT_XMM_REG - - gĺu_xmm2 -; - -296 -_STRUCT_XMM_REG - - gĺu_xmm3 -; - -297 -_STRUCT_XMM_REG - - gĺu_xmm4 -; - -298 -_STRUCT_XMM_REG - - gĺu_xmm5 -; - -299 -_STRUCT_XMM_REG - - gĺu_xmm6 -; - -300 -_STRUCT_XMM_REG - - gĺu_xmm7 -; - -301  - gĺu_r¤v4 -[14*16]; - -302  - gĺu_»Łrved1 -; - -306 #iŕ -__DARWIN_UNIX03 - - -307  - #_STRUCT_X86_EXCEPTION_STATE32 -  -__d¬wš_i386_exű±iÚ_ˇ©e - - - ) - -308 - g_STRUCT_X86_EXCEPTION_STATE32 - - -310  - g__Ś­no -; - -311  - g__”r -; - -312  - g__çuÉvaddr -; - -315  - #_STRUCT_X86_EXCEPTION_STATE32 -  -i386_exű±iÚ_ˇ©e - - - ) - -316 - g_STRUCT_X86_EXCEPTION_STATE32 - - -318  - gŚ­no -; - -319  - g”r -; - -320  - gçuÉvaddr -; - -324 #iŕ -__DARWIN_UNIX03 - - -325  - #_STRUCT_X86_DEBUG_STATE32 -  -__d¬wš_x86_debug_ˇ©e32 - - - ) - -326 - g_STRUCT_X86_DEBUG_STATE32 - - -328  - g__dr0 -; - -329  - g__dr1 -; - -330  - g__dr2 -; - -331  - g__dr3 -; - -332  - g__dr4 -; - -333  - g__dr5 -; - -334  - g__dr6 -; - -335  - g__dr7 -; - -338  - #_STRUCT_X86_DEBUG_STATE32 -  -x86_debug_ˇ©e32 - - - ) - -339 - g_STRUCT_X86_DEBUG_STATE32 - - -341  - gdr0 -; - -342  - gdr1 -; - -343  - gdr2 -; - -344  - gdr3 -; - -345  - gdr4 -; - -346  - gdr5 -; - -347  - gdr6 -; - -348  - gdr7 -; - -356 #iŕ -__DARWIN_UNIX03 - - -357  - #_STRUCT_X86_THREAD_STATE64 -  -__d¬wš_x86_th»ad_ˇ©e64 - - - ) - -358 - g_STRUCT_X86_THREAD_STATE64 - - -360 -__ušt64_t - - g__żx -; - -361 -__ušt64_t - - g__rbx -; - -362 -__ušt64_t - - g__rcx -; - -363 -__ušt64_t - - g__rdx -; - -364 -__ušt64_t - - g__rdi -; - -365 -__ušt64_t - - g__rsi -; - -366 -__ušt64_t - - g__rbp -; - -367 -__ušt64_t - - g__rĄ -; - -368 -__ušt64_t - - g__r8 -; - -369 -__ušt64_t - - g__r9 -; - -370 -__ušt64_t - - g__r10 -; - -371 -__ušt64_t - - g__r11 -; - -372 -__ušt64_t - - g__r12 -; - -373 -__ušt64_t - - g__r13 -; - -374 -__ušt64_t - - g__r14 -; - -375 -__ušt64_t - - g__r15 -; - -376 -__ušt64_t - - g__rť -; - -377 -__ušt64_t - - g__rćags -; - -378 -__ušt64_t - - g__cs -; - -379 -__ušt64_t - - g__fs -; - -380 -__ušt64_t - - g__gs -; - -383  - #_STRUCT_X86_THREAD_STATE64 -  -x86_th»ad_ˇ©e64 - - - ) - -384 - g_STRUCT_X86_THREAD_STATE64 - - -386 -__ušt64_t - - gżx -; - -387 -__ušt64_t - - grbx -; - -388 -__ušt64_t - - grcx -; - -389 -__ušt64_t - - grdx -; - -390 -__ušt64_t - - grdi -; - -391 -__ušt64_t - - grsi -; - -392 -__ušt64_t - - grbp -; - -393 -__ušt64_t - - grĄ -; - -394 -__ušt64_t - - gr8 -; - -395 -__ušt64_t - - gr9 -; - -396 -__ušt64_t - - gr10 -; - -397 -__ušt64_t - - gr11 -; - -398 -__ušt64_t - - gr12 -; - -399 -__ušt64_t - - gr13 -; - -400 -__ušt64_t - - gr14 -; - -401 -__ušt64_t - - gr15 -; - -402 -__ušt64_t - - grť -; - -403 -__ušt64_t - - grćags -; - -404 -__ušt64_t - - gcs -; - -405 -__ušt64_t - - gfs -; - -406 -__ušt64_t - - ggs -; - -411 #iŕ -__DARWIN_UNIX03 - - -412  - #_STRUCT_X86_FLOAT_STATE64 -  -__d¬wš_x86_ćßt_ˇ©e64 - - - ) - -413 - g_STRUCT_X86_FLOAT_STATE64 - - -415  - g__ĺu_»Łrved -[2]; - -416 -_STRUCT_FP_CONTROL - - g__ĺu_fcw -; - -417 -_STRUCT_FP_STATUS - - g__ĺu_fsw -; - -418 -__ušt8_t - - g__ĺu_áw -; - -419 -__ušt8_t - - g__ĺu_r¤v1 -; - -420 -__ušt16_t - - g__ĺu_fÝ -; - -423 -__ušt32_t - - g__ĺu_ť -; - -424 -__ušt16_t - - g__ĺu_cs -; - -426 -__ušt16_t - - g__ĺu_r¤v2 -; - -429 -__ušt32_t - - g__ĺu_dp -; - -430 -__ušt16_t - - g__ĺu_ds -; - -432 -__ušt16_t - - g__ĺu_r¤v3 -; - -433 -__ušt32_t - - g__ĺu_mxc¤ -; - -434 -__ušt32_t - - g__ĺu_mxc¤mask -; - -435 -_STRUCT_MMST_REG - - g__ĺu_ˇmm0 -; - -436 -_STRUCT_MMST_REG - - g__ĺu_ˇmm1 -; - -437 -_STRUCT_MMST_REG - - g__ĺu_ˇmm2 -; - -438 -_STRUCT_MMST_REG - - g__ĺu_ˇmm3 -; - -439 -_STRUCT_MMST_REG - - g__ĺu_ˇmm4 -; - -440 -_STRUCT_MMST_REG - - g__ĺu_ˇmm5 -; - -441 -_STRUCT_MMST_REG - - g__ĺu_ˇmm6 -; - -442 -_STRUCT_MMST_REG - - g__ĺu_ˇmm7 -; - -443 -_STRUCT_XMM_REG - - g__ĺu_xmm0 -; - -444 -_STRUCT_XMM_REG - - g__ĺu_xmm1 -; - -445 -_STRUCT_XMM_REG - - g__ĺu_xmm2 -; - -446 -_STRUCT_XMM_REG - - g__ĺu_xmm3 -; - -447 -_STRUCT_XMM_REG - - g__ĺu_xmm4 -; - -448 -_STRUCT_XMM_REG - - g__ĺu_xmm5 -; - -449 -_STRUCT_XMM_REG - - g__ĺu_xmm6 -; - -450 -_STRUCT_XMM_REG - - g__ĺu_xmm7 -; - -451 -_STRUCT_XMM_REG - - g__ĺu_xmm8 -; - -452 -_STRUCT_XMM_REG - - g__ĺu_xmm9 -; - -453 -_STRUCT_XMM_REG - - g__ĺu_xmm10 -; - -454 -_STRUCT_XMM_REG - - g__ĺu_xmm11 -; - -455 -_STRUCT_XMM_REG - - g__ĺu_xmm12 -; - -456 -_STRUCT_XMM_REG - - g__ĺu_xmm13 -; - -457 -_STRUCT_XMM_REG - - g__ĺu_xmm14 -; - -458 -_STRUCT_XMM_REG - - g__ĺu_xmm15 -; - -459  - g__ĺu_r¤v4 -[6*16]; - -460  - g__ĺu_»Łrved1 -; - -463  - #_STRUCT_X86_FLOAT_STATE64 -  -x86_ćßt_ˇ©e64 - - - ) - -464 - g_STRUCT_X86_FLOAT_STATE64 - - -466  - gĺu_»Łrved -[2]; - -467 -_STRUCT_FP_CONTROL - - gĺu_fcw -; - -468 -_STRUCT_FP_STATUS - - gĺu_fsw -; - -469 -__ušt8_t - - gĺu_áw -; - -470 -__ušt8_t - - gĺu_r¤v1 -; - -471 -__ušt16_t - - gĺu_fÝ -; - -474 -__ušt32_t - - gĺu_ť -; - -475 -__ušt16_t - - gĺu_cs -; - -477 -__ušt16_t - - gĺu_r¤v2 -; - -480 -__ušt32_t - - gĺu_dp -; - -481 -__ušt16_t - - gĺu_ds -; - -483 -__ušt16_t - - gĺu_r¤v3 -; - -484 -__ušt32_t - - gĺu_mxc¤ -; - -485 -__ušt32_t - - gĺu_mxc¤mask -; - -486 -_STRUCT_MMST_REG - - gĺu_ˇmm0 -; - -487 -_STRUCT_MMST_REG - - gĺu_ˇmm1 -; - -488 -_STRUCT_MMST_REG - - gĺu_ˇmm2 -; - -489 -_STRUCT_MMST_REG - - gĺu_ˇmm3 -; - -490 -_STRUCT_MMST_REG - - gĺu_ˇmm4 -; - -491 -_STRUCT_MMST_REG - - gĺu_ˇmm5 -; - -492 -_STRUCT_MMST_REG - - gĺu_ˇmm6 -; - -493 -_STRUCT_MMST_REG - - gĺu_ˇmm7 -; - -494 -_STRUCT_XMM_REG - - gĺu_xmm0 -; - -495 -_STRUCT_XMM_REG - - gĺu_xmm1 -; - -496 -_STRUCT_XMM_REG - - gĺu_xmm2 -; - -497 -_STRUCT_XMM_REG - - gĺu_xmm3 -; - -498 -_STRUCT_XMM_REG - - gĺu_xmm4 -; - -499 -_STRUCT_XMM_REG - - gĺu_xmm5 -; - -500 -_STRUCT_XMM_REG - - gĺu_xmm6 -; - -501 -_STRUCT_XMM_REG - - gĺu_xmm7 -; - -502 -_STRUCT_XMM_REG - - gĺu_xmm8 -; - -503 -_STRUCT_XMM_REG - - gĺu_xmm9 -; - -504 -_STRUCT_XMM_REG - - gĺu_xmm10 -; - -505 -_STRUCT_XMM_REG - - gĺu_xmm11 -; - -506 -_STRUCT_XMM_REG - - gĺu_xmm12 -; - -507 -_STRUCT_XMM_REG - - gĺu_xmm13 -; - -508 -_STRUCT_XMM_REG - - gĺu_xmm14 -; - -509 -_STRUCT_XMM_REG - - gĺu_xmm15 -; - -510  - gĺu_r¤v4 -[6*16]; - -511  - gĺu_»Łrved1 -; - -515 #iŕ -__DARWIN_UNIX03 - - -516  - #_STRUCT_X86_EXCEPTION_STATE64 -  -__d¬wš_x86_exű±iÚ_ˇ©e64 - - - ) - -517 - g_STRUCT_X86_EXCEPTION_STATE64 - - -519  - g__Ś­no -; - -520  - g__”r -; - -521 -__ušt64_t - - g__çuÉvaddr -; - -524  - #_STRUCT_X86_EXCEPTION_STATE64 -  -x86_exű±iÚ_ˇ©e64 - - - ) - -525 - g_STRUCT_X86_EXCEPTION_STATE64 - - -527  - gŚ­no -; - -528  - g”r -; - -529 -__ušt64_t - - gçuÉvaddr -; - -533 #iŕ -__DARWIN_UNIX03 - - -534  - #_STRUCT_X86_DEBUG_STATE64 -  -__d¬wš_x86_debug_ˇ©e64 - - - ) - -535 - g_STRUCT_X86_DEBUG_STATE64 - - -537 -__ušt64_t - - g__dr0 -; - -538 -__ušt64_t - - g__dr1 -; - -539 -__ušt64_t - - g__dr2 -; - -540 -__ušt64_t - - g__dr3 -; - -541 -__ušt64_t - - g__dr4 -; - -542 -__ušt64_t - - g__dr5 -; - -543 -__ušt64_t - - g__dr6 -; - -544 -__ušt64_t - - g__dr7 -; - -547  - #_STRUCT_X86_DEBUG_STATE64 -  -x86_debug_ˇ©e64 - - - ) - -548 - g_STRUCT_X86_DEBUG_STATE64 - - -550 -__ušt64_t - - gdr0 -; - -551 -__ušt64_t - - gdr1 -; - -552 -__ušt64_t - - gdr2 -; - -553 -__ušt64_t - - gdr3 -; - -554 -__ušt64_t - - gdr4 -; - -555 -__ušt64_t - - gdr5 -; - -556 -__ušt64_t - - gdr6 -; - -557 -__ušt64_t - - gdr7 -; - - @/usr/include/mach/ppc/_structs.h - -32 #iâdef -_MACH_PPC__STRUCTS_H_ - - -33  - #_MACH_PPC__STRUCTS_H_ - - - ) - -35  - ~ - -43 #iŕ -__DARWIN_UNIX03 - - -44  - #_STRUCT_PPC_THREAD_STATE -  -__d¬wš_µc_th»ad_ˇ©e - - - ) - -45 - g_STRUCT_PPC_THREAD_STATE - - -47  - g__¤r0 -; - -48  - g__¤r1 -; - -49  - g__r0 -; - -50  - g__r1 -; - -51  - g__r2 -; - -52  - g__r3 -; - -53  - g__r4 -; - -54  - g__r5 -; - -55  - g__r6 -; - -56  - g__r7 -; - -57  - g__r8 -; - -58  - g__r9 -; - -59  - g__r10 -; - -60  - g__r11 -; - -61  - g__r12 -; - -62  - g__r13 -; - -63  - g__r14 -; - -64  - g__r15 -; - -65  - g__r16 -; - -66  - g__r17 -; - -67  - g__r18 -; - -68  - g__r19 -; - -69  - g__r20 -; - -70  - g__r21 -; - -71  - g__r22 -; - -72  - g__r23 -; - -73  - g__r24 -; - -74  - g__r25 -; - -75  - g__r26 -; - -76  - g__r27 -; - -77  - g__r28 -; - -78  - g__r29 -; - -79  - g__r30 -; - -80  - g__r31 -; - -82  - g__ü -; - -83  - g__x” -; - -84  - g__Ě -; - -85  - g__ůr -; - -86  - g__mq -; - -88  - g__vr§ve -; - -91  - #_STRUCT_PPC_THREAD_STATE -  -µc_th»ad_ˇ©e - - - ) - -92 - g_STRUCT_PPC_THREAD_STATE - - -94  - g¤r0 -; - -95  - g¤r1 -; - -96  - gr0 -; - -97  - gr1 -; - -98  - gr2 -; - -99  - gr3 -; - -100  - gr4 -; - -101  - gr5 -; - -102  - gr6 -; - -103  - gr7 -; - -104  - gr8 -; - -105  - gr9 -; - -106  - gr10 -; - -107  - gr11 -; - -108  - gr12 -; - -109  - gr13 -; - -110  - gr14 -; - -111  - gr15 -; - -112  - gr16 -; - -113  - gr17 -; - -114  - gr18 -; - -115  - gr19 -; - -116  - gr20 -; - -117  - gr21 -; - -118  - gr22 -; - -119  - gr23 -; - -120  - gr24 -; - -121  - gr25 -; - -122  - gr26 -; - -123  - gr27 -; - -124  - gr28 -; - -125  - gr29 -; - -126  - gr30 -; - -127  - gr31 -; - -129  - gü -; - -130  - gx” -; - -131  - gĚ -; - -132  - gůr -; - -133  - gmq -; - -135  - gvr§ve -; - -139 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -141 #´agm¨ -·ck -(4) - -143 #iŕ -__DARWIN_UNIX03 - - -144  - #_STRUCT_PPC_THREAD_STATE64 -  -__d¬wš_µc_th»ad_ˇ©e64 - - - ) - -145 - g_STRUCT_PPC_THREAD_STATE64 - - -147  - g__¤r0 -; - -148  - g__¤r1 -; - -149  - g__r0 -; - -150  - g__r1 -; - -151  - g__r2 -; - -152  - g__r3 -; - -153  - g__r4 -; - -154  - g__r5 -; - -155  - g__r6 -; - -156  - g__r7 -; - -157  - g__r8 -; - -158  - g__r9 -; - -159  - g__r10 -; - -160  - g__r11 -; - -161  - g__r12 -; - -162  - g__r13 -; - -163  - g__r14 -; - -164  - g__r15 -; - -165  - g__r16 -; - -166  - g__r17 -; - -167  - g__r18 -; - -168  - g__r19 -; - -169  - g__r20 -; - -170  - g__r21 -; - -171  - g__r22 -; - -172  - g__r23 -; - -173  - g__r24 -; - -174  - g__r25 -; - -175  - g__r26 -; - -176  - g__r27 -; - -177  - g__r28 -; - -178  - g__r29 -; - -179  - g__r30 -; - -180  - g__r31 -; - -182  - g__ü -; - -183  - g__x” -; - -184  - g__Ě -; - -185  - g__ůr -; - -187  - g__vr§ve -; - -190  - #_STRUCT_PPC_THREAD_STATE64 -  -µc_th»ad_ˇ©e64 - - - ) - -191 - g_STRUCT_PPC_THREAD_STATE64 - - -193  - g¤r0 -; - -194  - g¤r1 -; - -195  - gr0 -; - -196  - gr1 -; - -197  - gr2 -; - -198  - gr3 -; - -199  - gr4 -; - -200  - gr5 -; - -201  - gr6 -; - -202  - gr7 -; - -203  - gr8 -; - -204  - gr9 -; - -205  - gr10 -; - -206  - gr11 -; - -207  - gr12 -; - -208  - gr13 -; - -209  - gr14 -; - -210  - gr15 -; - -211  - gr16 -; - -212  - gr17 -; - -213  - gr18 -; - -214  - gr19 -; - -215  - gr20 -; - -216  - gr21 -; - -217  - gr22 -; - -218  - gr23 -; - -219  - gr24 -; - -220  - gr25 -; - -221  - gr26 -; - -222  - gr27 -; - -223  - gr28 -; - -224  - gr29 -; - -225  - gr30 -; - -226  - gr31 -; - -228  - gü -; - -229  - gx” -; - -230  - gĚ -; - -231  - gůr -; - -233  - gvr§ve -; - -237 #´agm¨ -·ck -() - -243 #iŕ -__DARWIN_UNIX03 - - -244  - #_STRUCT_PPC_FLOAT_STATE -  -__d¬wš_µc_ćßt_ˇ©e - - - ) - -245 - g_STRUCT_PPC_FLOAT_STATE - - -247  - g__ĺ»gs -[32]; - -249  - g__ĺsü_·d -; - -250  - g__ĺsü -; - -253  - #_STRUCT_PPC_FLOAT_STATE -  -µc_ćßt_ˇ©e - - - ) - -254 - g_STRUCT_PPC_FLOAT_STATE - - -256  - gĺ»gs -[32]; - -258  - gĺsü_·d -; - -259  - gĺsü -; - -263 #´agm¨ -·ck -(4) - -265 #iŕ -__DARWIN_UNIX03 - - -266  - #_STRUCT_PPC_VECTOR_STATE -  -__d¬wš_µc_veůÜ_ˇ©e - - - ) - -267 - g_STRUCT_PPC_VECTOR_STATE - - -269 #iŕ -defšed -( -__LP64__ -) - -270  - g__§ve_vr -[32][4]; - -271  - g__§ve_vsü -[4]; - -273  - g__§ve_vr -[32][4]; - -274  - g__§ve_vsü -[4]; - -276  - g__§ve_·d5 -[4]; - -277  - g__§ve_vrv®id -; - -278  - g__§ve_·d6 -[7]; - -281  - #_STRUCT_PPC_VECTOR_STATE -  -µc_veůÜ_ˇ©e - - - ) - -282 - g_STRUCT_PPC_VECTOR_STATE - - -284 #iŕ -defšed -( -__LP64__ -) - -285  - g§ve_vr -[32][4]; - -286  - g§ve_vsü -[4]; - -288  - g§ve_vr -[32][4]; - -289  - g§ve_vsü -[4]; - -291  - g§ve_·d5 -[4]; - -292  - g§ve_vrv®id -; - -293  - g§ve_·d6 -[7]; - -297 #´agm¨ -·ck -() - -316 #´agm¨ -·ck -(4) - -318 #iŕ -__DARWIN_UNIX03 - - -319  - #_STRUCT_PPC_EXCEPTION_STATE -  -__d¬wš_µc_exű±iÚ_ˇ©e - - - ) - -320 - g_STRUCT_PPC_EXCEPTION_STATE - - -322 #iŕ -defšed -( -__LP64__ -) - -323  - g__d¬ -; - -324  - g__dsi¤ -; - -325  - g__exű±iÚ -; - -326  - g__·d0 -; - -327  - g__·d1 -[4]; - -329  - g__d¬ -; - -330  - g__dsi¤ -; - -331  - g__exű±iÚ -; - -332  - g__·d0 -; - -333  - g__·d1 -[4]; - -337  - #_STRUCT_PPC_EXCEPTION_STATE -  -µc_exű±iÚ_ˇ©e - - - ) - -338 - g_STRUCT_PPC_EXCEPTION_STATE - - -340 #iŕ -defšed -( -__LP64__ -) - -341  - gd¬ -; - -342  - gdsi¤ -; - -343  - gexű±iÚ -; - -344  - g·d0 -; - -345  - g·d1 -[4]; - -347  - gd¬ -; - -348  - gdsi¤ -; - -349  - gexű±iÚ -; - -350  - g·d0 -; - -351  - g·d1 -[4]; - -356 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -357 #iŕ -__DARWIN_UNIX03 - - -358  - #_STRUCT_PPC_EXCEPTION_STATE64 -  -__d¬wš_µc_exű±iÚ_ˇ©e64 - - - ) - -359 - g_STRUCT_PPC_EXCEPTION_STATE64 - - -361  - g__d¬ -; - -362 #iŕ -defšed -( -__LP64__ -) - -363  - g__dsi¤ -; - -364  - g__exű±iÚ -; - -365  - g__·d1 -[4]; - -367  - g__dsi¤ -; - -368  - g__exű±iÚ -; - -369  - g__·d1 -[4]; - -373  - #_STRUCT_PPC_EXCEPTION_STATE64 -  -µc_exű±iÚ_ˇ©e64 - - - ) - -374 - g_STRUCT_PPC_EXCEPTION_STATE64 - - -376  - gd¬ -; - -377 #iŕ -defšed -( -__LP64__ -) - -378  - gdsi¤ -; - -379  - gexű±iÚ -; - -380  - g·d1 -[4]; - -382  - gdsi¤ -; - -383  - gexű±iÚ -; - -384  - g·d1 -[4]; - -390 #´agm¨ -·ck -() - - @/usr/include/ppc/signal.h - -32 #iâdef -_PPC_SIGNAL_H_ - - -33  - #_PPC_SIGNAL_H_ - 1 - - ) - -35  - ~ - -37 #iâdeŕ -_ANSI_SOURCE - - -39  - tsig_©omic_t -; - -41  - ~ - -43 #ifdeŕ -__APPLE_API_OBSOLETE - - -45 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -47  - #__Ăed_ˇruů_sigcÚ‹xt - - - ) - -48  - #__Ăed_ˇruů_sigcÚ‹xt32 - - - ) - -49  - #__Ăed_ˇruů_sigcÚ‹xt64 - - - ) - -50  - ~<µc/_ˇruůs.h -> - -55  - #SV_SAVE_REGS - 0x1000 - - ) - -69 - mREGS_SAVED_NONE -, - -70 - mREGS_SAVED_CALLER -, - -73 - mREGS_SAVED_ALL - - -74 } - t»gs_§ved_t -; - - @/usr/include/libkern/i386/_OSByteOrder.h - -29 #iâdeŕ -_OS__OSBYTEORDERI386_H - - -30  - #_OS__OSBYTEORDERI386_H - - - ) - -32 #iŕ! -defšed -( -__DARWIN_OS_INLINE -) - -33 #iŕ -defšed -( -__STDC_VERSION__ -) && __STDC_VERSION__ >= 199901L - -34  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -35 #–iŕ -defšed -( -__MWERKS__ -č|| defšed( -__ýluĄlus -) - -36  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -38  - #__DARWIN_OS_INLINE -  -__šlše__ - - - ) - -44 -__DARWIN_OS_INLINE - - -45 -__ušt16_t - - -46 - $_OSSw­IÁ16 -( - -47 -__ušt16_t - -_d©a - - -50  (( -_d©a - << 8) | (_data >> 8)); - -51 - } -} - -53 -__DARWIN_OS_INLINE - - -54 -__ušt32_t - - -55 - $_OSSw­IÁ32 -( - -56 -__ušt32_t - -_d©a - - -59 - `__asm__ - ("bsw­ %0" : "+r" ( -_d©a -)); - -60  -_d©a -; - -61 - } -} - -63 #iŕ -defšed -( -__i386__ -) - -64 -__DARWIN_OS_INLINE - - -65 -__ušt64_t - - -66 - $_OSSw­IÁ64 -( - -67 -__ušt64_t - -_d©a - - -70 - `__asm__ - ("bswap %%eax\n\t" - -73 : "+A" ( -_d©a -)); - -74  -_d©a -; - -75 - } -} - -76 #–iŕ -defšed -( -__x86_64__ -) - -77 -__DARWIN_OS_INLINE - - -78 -__ušt64_t - - -79 - $_OSSw­IÁ64 -( - -80 -__ušt64_t - -_d©a - - -83 - `__asm__ - ("bsw­ %0" : "+r" ( -_d©a -)); - -84  -_d©a -; - -85 - } -} - -87 #”rÜ -Unknown - -¬ch™eůu» - - - @ -1 -. -1 -/usr/include -69 -1617 -debug.h -filterfs.c -filterfs.h -lib.c -lib.h -lnode.c -lnode.h -ncache.c -ncache.h -node.c -node.h -options.c -options.h -/usr/include/dirent.h -/usr/include/fcntl.h -/usr/include/stddef.h -/usr/include/stdio.h -/usr/include/stdlib.h -/usr/include/sys/mman.h -/usr/include/sys/stat.h -/usr/include/sys/time.h -/usr/include/sys/types.h -/usr/include/unistd.h -/usr/include/_types.h -/usr/include/_xlocale.h -/usr/include/alloca.h -/usr/include/available.h -/usr/include/machine/endian.h -/usr/include/machine/types.h -/usr/include/secure/_stdio.h -/usr/include/sys/_select.h -/usr/include/sys/_structs.h -/usr/include/sys/_types.h -/usr/include/sys/appleapiopts.h -/usr/include/sys/cdefs.h -/usr/include/sys/dirent.h -/usr/include/sys/fcntl.h -/usr/include/sys/select.h -/usr/include/sys/unistd.h -/usr/include/sys/wait.h -/usr/include/time.h -/usr/include/xlocale/_stdio.h -/usr/include/xlocale/_stdlib.h -/usr/include/_structs.h -/usr/include/i386/endian.h -/usr/include/i386/types.h -/usr/include/machine/_limits.h -/usr/include/machine/_structs.h -/usr/include/machine/_types.h -/usr/include/ppc/endian.h -/usr/include/ppc/types.h -/usr/include/secure/_common.h -/usr/include/sys/resource.h -/usr/include/sys/signal.h -/usr/include/xlocale/_time.h -/usr/include/i386/_limits.h -/usr/include/i386/_structs.h -/usr/include/i386/_types.h -/usr/include/machine/signal.h -/usr/include/ppc/_limits.h -/usr/include/ppc/_structs.h -/usr/include/ppc/_types.h -/usr/include/sys/_endian.h -/usr/include/i386/signal.h -/usr/include/libkern/_OSByteOrder.h -/usr/include/mach/i386/_structs.h -/usr/include/mach/ppc/_structs.h -/usr/include/ppc/signal.h -/usr/include/libkern/i386/_OSByteOrder.h diff --git a/proc_proxy/ourdevice.defs b/proc_proxy/ourdevice.defs deleted file mode 100644 index ba9a2d80..00000000 --- a/proc_proxy/ourdevice.defs +++ /dev/null @@ -1,383 +0,0 @@ -# 1 "device.defs" -# 1 "" -# 1 "" -# 1 "device.defs" -# 1 "/usr/include/device/device.defs" 1 3 4 -# 39 "/usr/include/device/device.defs" 3 4 -subsystem - - - - device 2800; - -# 1 "/usr/include/mach/std_types.defs" 1 3 4 -# 33 "/usr/include/mach/std_types.defs" 3 4 -type char = MACH_MSG_TYPE_CHAR; -type short = MACH_MSG_TYPE_INTEGER_16; -type int = MACH_MSG_TYPE_INTEGER_32; -type int32 = MACH_MSG_TYPE_INTEGER_32; -type int64 = MACH_MSG_TYPE_INTEGER_64; -type boolean_t = MACH_MSG_TYPE_BOOLEAN; -type unsigned = MACH_MSG_TYPE_INTEGER_32; -type unsigned32 = MACH_MSG_TYPE_INTEGER_32; -type unsigned64 = MACH_MSG_TYPE_INTEGER_64; - - -# 1 "/usr/include/mach/machine/machine_types.defs" 1 3 4 -# 50 "/usr/include/mach/machine/machine_types.defs" 3 4 -type natural_t = unsigned32; -# 59 "/usr/include/mach/machine/machine_types.defs" 3 4 -type integer_t = int32; -# 45 "/usr/include/mach/std_types.defs" 2 3 4 - -type kern_return_t = int; - -type pointer_t = ^array[] of MACH_MSG_TYPE_BYTE - ctype: vm_offset_t; - - -type mach_port_t = MACH_MSG_TYPE_COPY_SEND; -type mach_port_array_t = array[] of mach_port_t; - -type mach_port_name_t = MACH_MSG_TYPE_PORT_NAME - ctype: mach_port_t; -type mach_port_name_array_t = array[] of mach_port_name_t - ctype: mach_port_array_t; - -type mach_port_right_t = natural_t; - -type mach_port_type_t = natural_t; -type mach_port_type_array_t = array[] of mach_port_type_t; - -type mach_port_urefs_t = natural_t; -type mach_port_delta_t = integer_t; -type mach_port_seqno_t = natural_t; -type mach_port_mscount_t = unsigned; -type mach_port_msgcount_t = unsigned; -type mach_port_rights_t = unsigned; -type mach_msg_id_t = integer_t; -type mach_msg_type_name_t = unsigned; -type mach_msg_type_number_t = natural_t; - -type mach_port_move_receive_t = MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t; -type mach_port_copy_send_t = MACH_MSG_TYPE_COPY_SEND - ctype: mach_port_t; -type mach_port_make_send_t = MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; -type mach_port_move_send_t = MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -type mach_port_make_send_once_t = MACH_MSG_TYPE_MAKE_SEND_ONCE - ctype: mach_port_t; -type mach_port_move_send_once_t = MACH_MSG_TYPE_MOVE_SEND_ONCE - ctype: mach_port_t; - -type mach_port_receive_t = MACH_MSG_TYPE_PORT_RECEIVE - ctype: mach_port_t; -type mach_port_send_t = MACH_MSG_TYPE_PORT_SEND - ctype: mach_port_t; -type mach_port_send_once_t = MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; - -type mach_port_poly_t = polymorphic - ctype: mach_port_t; - -import ; -# 46 "/usr/include/device/device.defs" 2 3 4 -# 1 "/usr/include/mach/mach_types.defs" 1 3 4 -# 61 "/usr/include/mach/mach_types.defs" 3 4 -type mach_port_status_t = struct[9] of integer_t; - -type old_mach_port_status_t = struct[8] of integer_t; - -type task_t = mach_port_t - ctype: mach_port_t - - - - - - ; -# 85 "/usr/include/mach/mach_types.defs" 3 4 -type thread_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type thread_state_t = array[*:1024] of natural_t; - -type task_array_t = ^array[] of task_t; -type thread_array_t = ^array[] of thread_t; - -type vm_task_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type ipc_space_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type vm_address_t = natural_t; -type vm_offset_t = natural_t; -type vm_size_t = natural_t; -type vm_prot_t = int; -type vm_inherit_t = int; -type vm_statistics_data_t = struct[13] of integer_t; -type vm_machine_attribute_t = int; -type vm_machine_attribute_val_t = int; - -type thread_info_t = array[*:1024] of natural_t; -type thread_basic_info_data_t = struct[11] of integer_t; -type thread_sched_info_data_t = struct[7] of integer_t; - -type task_info_t = array[*:1024] of natural_t; -type task_basic_info_data_t = struct[8] of integer_t; -type task_events_info = struct[7] of natural_t; -type task_thread_times_info_data_t = struct[4] of integer_t; - - -type memory_object_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_control_t = mach_port_t - ctype: mach_port_t - - - - ; - -type memory_object_name_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type memory_object_copy_strategy_t = int; -type memory_object_return_t = int; - -type machine_info_data_t = struct[5] of integer_t; -type machine_slot_data_t = struct[8] of integer_t; - -type host_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type host_priv_t = mach_port_t - ctype: mach_port_t - - - - ; - -type host_info_t = array[*:1024] of natural_t; -type host_basic_info_data_t = struct[5] of integer_t; -type host_sched_info_data_t = struct[2] of integer_t; -type host_load_info_data_t = struct[6] of integer_t; - - -type processor_t = mach_port_t - ctype: mach_port_t - - - - - ; - -type processor_array_t = ^array[] of processor_t; -type processor_info_t = array[*:1024] of natural_t; -type processor_basic_info_data_t = struct[5] of integer_t; - - -type processor_set_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_array_t = ^array[] of processor_set_t; - -type processor_set_name_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -type processor_set_name_array_t = ^array[] of processor_set_name_t; - -type processor_set_info_t = array[*:1024] of natural_t; -type processor_set_basic_info_data_t = struct[5] of integer_t; -type processor_set_sched_info_data_t = struct[2] of integer_t; - - -type kernel_version_t = (MACH_MSG_TYPE_STRING, 512*8); - -type kernel_boot_info_t = (MACH_MSG_TYPE_STRING, 4096*8); - -type time_value_t = struct[2] of integer_t; - -type emulation_vector_t = ^array[] of vm_offset_t; - -type xxx_emulation_vector_t = array[*:1024] of vm_offset_t - ctype: emulation_vector_t; - - -type rpc_signature_info_t = array[*:1024] of int; -# 250 "/usr/include/mach/mach_types.defs" 3 4 -import ; -# 47 "/usr/include/device/device.defs" 2 3 4 -# 1 "/usr/include/device/device_types.defs" 1 3 4 -# 42 "/usr/include/device/device_types.defs" 3 4 -type recnum_t = unsigned32; -type dev_mode_t = unsigned32; -type dev_flavor_t = unsigned32; -type dev_name_t = (MACH_MSG_TYPE_STRING_C, 8*128); -type dev_status_t = array[*:1024] of int; -type io_buf_ptr_t = ^array[] of MACH_MSG_TYPE_INTEGER_8; -type io_buf_ptr_inband_t= array[*:128] of char; -type filter_t = short; -type filter_array_t = array[*:128] of filter_t; - -type device_t = mach_port_t - ctype: mach_port_t - - - - - - ; - -import ; -import ; -# 48 "/usr/include/device/device.defs" 2 3 4 - -serverprefix ds_; - -type reply_port_t = MACH_MSG_TYPE_MAKE_SEND_ONCE | polymorphic - ctype: mach_port_t; - -routine device_open( - master_port : mach_port_t; - sreplyport reply_port : reply_port_t; - mode : dev_mode_t; - name : dev_name_t; - out device : mach_port_send_t - ); - -routine device_close( - device : device_t - ); - -routine device_write( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_t; - out bytes_written : int - ); - -routine device_write_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in data : io_buf_ptr_inband_t; - out bytes_written : int - ); - -routine device_read( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_t - ); - -routine device_read_inband( - device : device_t; - sreplyport reply_port : reply_port_t; - in mode : dev_mode_t; - in recnum : recnum_t; - in bytes_wanted : int; - out data : io_buf_ptr_inband_t - ); - - -routine xxx_device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t, IsLong - ); - - -routine xxx_device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, IsLong - ); - - -routine xxx_device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t, IsLong - ); - -routine device_map( - device : device_t; - in prot : vm_prot_t; - in offset : vm_offset_t; - in size : vm_size_t; - out pager : memory_object_t; - in unmap : int - ); - -routine device_set_status( - device : device_t; - in flavor : dev_flavor_t; - in status : dev_status_t - ); - -routine device_get_status( - device : device_t; - in flavor : dev_flavor_t; - out status : dev_status_t, CountInOut - ); - -routine device_set_filter( - device : device_t; - in receive_port : mach_port_send_t; - in priority : int; - in filter : filter_array_t - ); -# 1 "device.defs" 2 diff --git a/unionfs/cscope.out b/unionfs/cscope.out deleted file mode 100644 index 74c6b85f..00000000 --- a/unionfs/cscope.out +++ /dev/null @@ -1,39484 +0,0 @@ -cscope 15 $HOME/Projects/hurd_ssh/hurd/unionfs 0000221091 - @lib.c - -20  - #_GNU_SOURCE - - - ) - -22  - ~ - -23  - ~<”rÜ.h -> - -24  - ~ - -25  - ~<”şo.h -> - -26  - ~ - -27  - ~<ˇddef.h -> - -29  - ~"lib.h -" - -33  -mu‹x - - gdebug_msg_lock - = -MUTEX_INITIALIZER -; - -36 -”rÜ_t - - $check_dś - (* -·th -) - -38  -ˇ© - -fžeˇ© -; - -39 -”rÜ_t - -”r - = 0; - -41 -”r - = - `ˇ© - ( -·th -, & -fžeˇ© -); - -42 iŕ( -”r -) - -43  -”r -; - -45 iŕ(! - `S_ISDIR - ( -fžeˇ© -. -ˇ_mode -)) - -46  -ENOTDIR -; - -49 - } -} - -55 -”rÜ_t - - -56 - $dś_’Ś›s_g‘ - ( -fže_t - -dś -, ** -dś’t_d©a -, - -57 -size_t - * -dś’t_d©a_size -,  -dś’t - *** -dś’t_liˇ -) - -59 -”rÜ_t - -”r -; - -60 -size_t - -d©a_size -; - -61  -’Ś›s_num -; - -62 * -d©a -; - -64 -”r - = - `dś_»addś - ( -dś -, & -d©a -, & -d©a_size -, 0, -1, 0, & -’Ś›s_num -); - -65 iŕ(! -”r -) - -67  -dś’t - ** -liˇ -; - -69 -liˇ - = - `m®loc - ( ( -dś’t - *č* ( -’Ś›s_num - + 1)); - -70 iŕ( -liˇ -) - -72  -dś’t - * -dp -; - -73  -i -; - -75  -i - = 0, -dp - = ( -dś’t - *č -d©a -; - -76 -i - < -’Ś›s_num -; - -77 -i -++, -dp - = ( -dś’t - *č((*čd°+ dp-> -d_»ţ’ -)) - -78 *( -liˇ - + -i -čđ -dp -; - -79 *( -liˇ - + -i -čđ -NULL -; - -81 * -dś’t_d©a - = -d©a -; - -82 * -dś’t_d©a_size - = -d©a_size -; - -83 * -dś’t_liˇ - = -liˇ -; - -87 - `munm­ - ( -d©a -, -d©a_size -); - -88 -”r - = -ENOMEM -; - -91  -”r -; - -92 - } -} - -99 -”rÜ_t - - -100 - $fže_lookup - ( -fže_t - -dś -, * -Çme -,  -ćags0 -,  -ćags1 -, - -101  -mode -, -fže_t - * -pÜt -,  -ˇ© - *stat) - -103 -”rÜ_t - -”r - = 0; - -104 -fže_t - -p -; - -105  -ˇ© - -s -; - -107 -fže_t - - `do_fže_lookup - (fže_ -d -, * -n -,  -f -,  -m -) - -109 iŕ( - `pÜt_v®id - ( -d -)) - -110 -p - = - `fže_Çme_lookup_und” - ( -d -, -n -, -f -, -m -); - -111 iŕ( -”şo - =đ -EACCES -) - -112 -p - = - `fže_Çme_lookup - ( -n -, -f -, -m -); - -113  -p -; - -116 -p - = - `do_fže_lookup - ( -dś -, -Çme -, -ćags0 -, -mode -); - -117 iŕ(! - `pÜt_v®id - ( -p -)) - -118 -p - = - `do_fže_lookup - ( -dś -, -Çme -, -ćags1 -, -mode -); - -120 iŕ( - `pÜt_v®id - ( -p -)) - -122 iŕ( -ˇ© -) - -124 -”r - = - `io_ˇ© - ( -p -, & -s -); - -125 iŕ( -”r -) - -126 - `pÜt_d—Îoc - ( -p -); - -130 -”r - = -”şo -; - -132 iŕ(! -”r -) - -134 * -pÜt - = -p -; - -135 iŕ( -ˇ© -) - -136 * -ˇ© - = -s -; - -138  -”r -; - -139 - } -} - -141  - ~ - -144 - $make_fž•©h - (* -·th -, * -fž’ame -) - -146  -Ëngth -; - -147 * -fž•©h -; - -149 -Ëngth - = - `ˇľ’ - ( -·th -č+ sŚËŔ( -fž’ame -) + 2; - -150 -fž•©h - = - `m®loc - ( -Ëngth -); - -151 iŕ( -fž•©h - =đ -NULL -) - -152  -NULL -; - -154 - `ˇşýy - ( -fž•©h -, -·th -, -Ëngth -); - -155 - `ˇş˙t - ( -fž•©h -, -fž’ame -, - `ˇľ’ - (filename)); - -157  -fž•©h -; - -158 - } -} - -160 -”rÜ_t - - -161 -fÜ_—ch_subdś - (* -·th -, - $”rÜ_t - (* -func -) (*, *)) - -163  -dś’t - **dś’t, ** -dś’t_liˇ -; - -164 * -dś’t_d©a -; - -165 -size_t - -dś’t_d©a_size -; - -166 -fže_t - -dś -; - -167 -”rÜ_t - -”r -; - -169 -dś - = - `fže_Çme_lookup - ( -·th -, -O_READ -, 0); - -171 -”r - = - `dś_’Ś›s_g‘ - ( -dś -, & -dś’t_d©a -, & -dś’t_d©a_size -, & -dś’t_liˇ -); - -172 iŕ( -”r -) - -173  -”r -; - -175  -dś’t - = -dś’t_liˇ -; (! -”r -) && (*dirent); dirent++) - -177 * -Çme -; - -178  -ˇ© - -fžeˇ© -; - -180 iŕ((! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".")) - -181 || (! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".."))) - -184 -Çme - = - `make_fž•©h - ( -·th -, (* -dś’t -)-> -d_Çme -); - -186 -”r - = - `ˇ© - ( -Çme -, & -fžeˇ© -); - -188 - `ä“ - ( -Çme -); - -190 iŕ( -”r -) - -192 - `ĺrštf - ( -ˇd”r -, "unionfs: couldn't stat %s%s\n", - -193 -·th -, (* -dś’t -)-> -d_Çme -); - -197 iŕ(! - `S_ISDIR -( -fžeˇ© -. -ˇ_mode -)) - -200 - `func - ((* -dś’t -)-> -d_Çme -, -·th -); - -204 - } -} - -206 -”rÜ_t - - -207 -fÜ_—ch_subdś_´iv - (* -·th -, - $”rÜ_t - (* -func -) (*, *, *), - -208 * -´iv -) - -210  -dś’t - **dś’t, ** -dś’t_liˇ -; - -211 * -dś’t_d©a -; - -212 -size_t - -dś’t_d©a_size -; - -213 -fže_t - -dś -; - -214 -”rÜ_t - -”r -; - -216 -dś - = - `fže_Çme_lookup - ( -·th -, -O_READ -, 0); - -218 -”r - = - `dś_’Ś›s_g‘ - ( -dś -, & -dś’t_d©a -, & -dś’t_d©a_size -, & -dś’t_liˇ -); - -219 iŕ( -”r -) - -220  -”r -; - -222  -dś’t - = -dś’t_liˇ -; (! -”r -) && (*dirent); dirent++) - -224 * -Çme -; - -225  -ˇ© - -fžeˇ© -; - -227 iŕ((! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".")) - -228 || (! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".."))) - -231 -Çme - = - `make_fž•©h - ( -·th -, (* -dś’t -)-> -d_Çme -); - -233 -”r - = - `ˇ© - ( -Çme -, & -fžeˇ© -); - -235 - `ä“ - ( -Çme -); - -237 iŕ( -”r -) - -239 - `ĺrštf - ( -ˇd”r -, "unionfs: couldn't stat %s%s\n", - -240 -·th -, (* -dś’t -)-> -d_Çme -); - -244 iŕ(! - `S_ISDIR -( -fžeˇ© -. -ˇ_mode -)) - -247 - `func - ((* -dś’t -)-> -d_Çme -, -·th -, -´iv -); - -251 - } -} - -253 -”rÜ_t - - -254 -fÜ_—ch_fže_´iv - (* -·th -, - $”rÜ_t - (* -func -) (*, *, *), - -255 * -´iv -) - -257  -dś’t - **dś’t, ** -dś’t_liˇ -; - -258 * -dś’t_d©a -; - -259 -size_t - -dś’t_d©a_size -; - -260 -fže_t - -dś -; - -261 -”rÜ_t - -”r -; - -263 -dś - = - `fže_Çme_lookup - ( -·th -, -O_READ -, 0); - -265 -”r - = - `dś_’Ś›s_g‘ - ( -dś -, & -dś’t_d©a -, & -dś’t_d©a_size -, & -dś’t_liˇ -); - -266 iŕ( -”r -) - -267  -”r -; - -269  -dś’t - = -dś’t_liˇ -; (! -”r -) && (*dirent); dirent++) - -272 iŕ((! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".")) - -273 || (! - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".."))) - -276 - `func - ((* -dś’t -)-> -d_Çme -, -·th -, -´iv -); - -279  -”r -; - -280 - } -} - - @lib.h - -20 #iâdeŕ -INCLUDED_LIB_H - - -21  - #INCLUDED_LIB_H - - - ) - -23  - ~ - -24  - ~ - -25  - ~<ˇddef.h -> - -29  - #DIRENT_ALIGN - 4 - - ) - -30  - #DIRENT_NAME_OFFS - - `offŁtof - ( -dś’t -, -d_Çme -) - - ) - -34  - #DIRENT_LEN -( -Çme_Ën -) \ - -35 (( -DIRENT_NAME_OFFS - + ( -Çme_Ën -č+ 1 + ( -DIRENT_ALIGN - - 1)) \ - -36 & ~( -DIRENT_ALIGN - - 1)) - - ) - -40  - #pÜt_nuÎ - -MACH_PORT_NULL - - - ) - -41  - #pÜt_d—Îoc -( -p -č - `mach_pÜt_d—Îo˙‹ - ( - `mach_Źsk_Łlf - (), (p)) - - ) - -42  - #pÜt_v®id -( -p -č(Őč!đ -pÜt_nuÎ -) - - ) - -48 -”rÜ_t - -dś_’Ś›s_g‘ - ( -fže_t - -dś -, ** -dś’t_d©a -, - -49 -size_t - * -dś’t_d©a_size -, - -50  -dś’t - *** -dś’t_liˇ -); - -52 * -make_fž•©h - (*, *); - -53 -”rÜ_t - -fÜ_—ch_subdś - (*, - $”rÜ_t - (*) (*, *)); - -54 -”rÜ_t - - `fÜ_—ch_subdś_´iv - (*, - $”rÜ_t - (*) (*, *, *), - -62 -”rÜ_t - - `fže_lookup - ( -fže_t - -dś -, * -Çme -,  -ćags0 -,  -ćags1 -,  -mode -, - -63 -fže_t - * -pÜt -,  -ˇ© - *stat); - -66 -”rÜ_t - - `check_dś - (* -·th -); - -68  -mu‹x - -debug_msg_lock -; - -71  - #debug_msg_Łnd -( -fmt -, -¬gs -...) \ - -74 - `mu‹x_lock - (& -debug_msg_lock -); \ - -75 - `ĺrštf - ( -ˇd”r -, "%s:%i: ", -__FILE__ -, -__LINE__ -); \ - -76 - `ĺrštf - ( -ˇd”r -, -fmt - , ## -¬gs -); \ - -77 - `putc - ('\n', -ˇd”r -); \ - -78 - `mu‹x_uĆock - (& -debug_msg_lock -); \ - -79 - } -} \ - -80 0) - - ) - - @lnode.c - -23  - #_GNU_SOURCE - - - ) - -25  - ~ - -26  - ~<”rÜ.h -> - -27  - ~<ˇdlib.h -> - -28  - ~<ˇršg.h -> - -30  - ~"Ęode.h -" - -31  - ~"lib.h -" - -32  - ~"uniÚfs.h -" - -37 -”rÜ_t - - -38 - $Ęode_ü—‹ - (* -Çme -, -Ęode_t - ** -node -) - -40 -Ęode_t - * -node_Ăw - = - `m®loc - ( (lnode_t)); - -41 -”rÜ_t - -”r - = 0; - -43 - `debug_msg - ("Ęode_ü—‹ fÜ‚ame: %s", -Çme -); - -45 iŕ(! -node_Ăw -) - -46 -”r - = -ENOMEM -; - -49 * -Çme_ý - = -NULL -; - -51 iŕ( -Çme -) - -52 -Çme_ý - = - `ˇrdup - ( -Çme -); - -53 iŕ( -Çme - && (! -Çme_ý -)) - -55 -”r - = -ENOMEM -; - -56 - `ä“ - ( -node_Ăw -); - -60 -node_Ăw --> -Çme - = -Çme_ý -; - -61 -node_Ăw --> -Çme_Ën - = -Çme_ý - ? - `ˇľ’ - (name_cp) : 0; - -62 -node_Ăw --> -ćags - = 0; - -63 -node_Ăw --> -node - = -NULL -; - -64 -node_Ăw --> -Ăxt - = -NULL -; - -65 -node_Ăw --> -´evp - = -NULL -; - -66 -node_Ăw --> -dś - = -NULL -; - -67 -node_Ăw --> -’Ś›s - = -NULL -; - -68 -node_Ăw --> -»ă»nűs - = 1; - -69 - `mu‹x_š™ - (& -node_Ăw --> -lock -); - -70 - `mu‹x_lock - (& -node_Ăw --> -lock -); - -71 * -node - = -node_Ăw -; - -74  -”r -; - -75 - } -} - -79 - $Ęode_deˇroy - ( -Ęode_t - * -node -) - -81 - `debug_msg - ("Ęode_deˇroy fÜ‚ame: %s", -node --> -Çme -); - -82 - `ä“ - ( -node --> -Çme -); - -83 - `ä“ - ( -node -); - -84 - } -} - -89 - $Ęode_šˇ®l - ( -Ęode_t - * -dś -,†node_* -node -) - -91 - `Ęode_»f_add - ( -dś -); - -92 -node --> -Ăxt - = -dś --> -’Ś›s -; - -93 -node --> -´evp - = & -dś --> -’Ś›s -; - -94 iŕ( -dś --> -’Ś›s -) - -95 -dś --> -’Ś›s --> -´evp - = & -node --> -Ăxt -; - -96 -dś --> -’Ś›s - = -node -; - -97 -node --> -dś - = dir; - -98 - } -} - -103 - $Ęode_unšˇ®l - ( -Ęode_t - * -node -) - -105 - `Ęode_»f_»move - ( -node --> -dś -); - -106 * -node --> -´evp - =‚ode-> -Ăxt -; - -107 iŕ( -node --> -Ăxt -) - -108 -node --> -Ăxt --> -´evp - = &node->next; - -109 - } -} - -113 - $Ęode_»f_add - ( -Ęode_t - * -node -) - -115 -node --> -»ă»nűs -++; - -116 - } -} - -121 - $Ęode_»f_»move - ( -Ęode_t - * -node -) - -123 - `asŁą - ( -node --> -»ă»nűs -); - -124 iŕ(! -- -node --> -»ă»nűs -) - -126 - `Ęode_unšˇ®l - ( -node -); - -127 - `Ęode_deˇroy - ( -node -); - -130 - `mu‹x_uĆock - (& -node --> -lock -); - -131 - } -} - -135 -”rÜ_t - - -136 - $Ęode_g‘ - ( -Ęode_t - * -dś -, * -Çme -, - -137 -Ęode_t - ** -node -) - -139 -”rÜ_t - -”r - = 0; - -140 -Ęode_t - * -n -; - -142  -n - = -dś --> -’Ś›s -;‚ && - `ˇrcmp - (n-> -Çme -,‚ame);‚ =‚-> -Ăxt -); - -143 iŕ( -n -) - -145 - `mu‹x_lock - (& -n --> -lock -); - -146 - `Ęode_»f_add - ( -n -); - -147 * -node - = -n -; - -150 -”r - = -ENOENT -; - -152  -”r -; - -153 - } -} - -156 -”rÜ_t - - -157 - $Ęode_·th_cÚˇruů - ( -Ęode_t - * -node -, - -158 ** -·th -) - -160 -”rÜ_t - -”r - = 0; - -161  -p_Ën - = 1; - -162 -Ęode_t - * -n -; - -163 * -p -; - -165  -n - = -node -;‚ &&‚-> -dś -;‚ =‚->dir) - -166 -p_Ën - +đ -n --> -Çme_Ën - + (n-> -dś -->dir ? 1 : 0); - -168 -p - = - `m®loc - ( -p_Ën -); - -169 iŕ(! -p -) - -170 -”r - = -ENOMEM -; - -173 *( -p - + -- -p_Ën -) = 0; - -174  -n - = -node -;‚ &&‚-> -dś -;‚ =‚->dir) - -176 -p_Ën - -đ -n --> -Çme_Ën -; - -177 - `ˇşýy - ( -p - + -p_Ën -, -n --> -Çme -,‚-> -Çme_Ën -); - -178 iŕ( -n --> -dś -->dir) - -179 *( -p - + -- -p_Ën -) = '/'; - -181 * -·th - = -p -; - -183  -”r -; - -184 - } -} - - @lnode.h - -22 #iâdeŕ -INCLUDED_LNODE_H - - -23  - #INCLUDED_LNODE_H - - - ) - -25  - ~ - -26  - ~<”rÜ.h -> - -28  - sĘode - - -30 * - mÇme -; - -31  - mÇme_Ën -; - -34  - mćags -; - -35  - m»ă»nűs -; - -36  -node - * - mnode -; - -37  -Ęode - * - mĂxt -, ** - m´evp -; - -39  -Ęode - * - mdś -; - -41  -Ęode - * - m’Ś›s -; - -43  -mu‹x - - mlock -; - -45  -Ęode - - tĘode_t -; - -50 -”rÜ_t - -Ęode_ü—‹ - (* -Çme -, -Ęode_t - ** -node -); - -53  -Ęode_deˇroy - ( -Ęode_t - * -node -); - -56  -Ęode_šˇ®l - ( -Ęode_t - * -dś -,†node_* -node -); - -60  -Ęode_unšˇ®l - ( -Ęode_t - * -node -); - -63  -Ęode_»f_add - ( -Ęode_t - * -node -); - -67  -Ęode_»f_»move - ( -Ęode_t - * -node -); - -71 -”rÜ_t - -Ęode_g‘ - ( -Ęode_t - * -dś -, * -Çme -, - -72 -Ęode_t - ** -node -); - -75 -”rÜ_t - -Ęode_·th_cÚˇruů - ( -Ęode_t - * -node -, ** -·th -); - - @main.c - -20  - #_GNU_SOURCE - - - ) - -22  - ~ - -23  - ~<¬gp.h -> - -24  - ~<¬gz.h -> - -25  - ~<”rÜ.h -> - -26  - ~ - -27  - ~ - -28  - ~ - -30  - ~"v”siÚ.h -" - -31  - ~"uniÚfs.h -" - -32  - ~"n˙che.h -" - -33  - ~"ulfs.h -" - -34  - ~"Ęode.h -" - -35  - ~"node.h -" - -36  - ~"ÝtiÚs.h -" - -37  - ~"ˇow.h -" - -38  - ~"upd©e.h -" - -40 * - gĂtfs_Łrv”_Çme - = "unionfs"; - -41 * - gĂtfs_Łrv”_v”siÚ - = -HURD_VERSION -; - -44  - gĂtfs_maxsymlšks - = 0; - -47  - guniÚfs_ćags -; - -50 -pid_t - - gfsid -; - -53 -mach_pÜt_t - - gund”lyšg_node -; - -56  -ˇ© - - gund”lyšg_node_ˇ© -; - -59 vŢ©ž -m­łd_time_v®ue - * - gm­time -; - -62  -¬gp - * - gĂtfs_ruÁime_¬gp - = & -¬gp_ruÁime -; - -66 - $maš - ( -¬gc -, ** -¬gv -) - -68 -mach_pÜt_t - -bo١żp_pÜt -; - -69 -”rÜ_t - -”r - = 0; - -71 - `roŮ_upd©e_š™ - (); - -73 -”r - = - `ˇow_š™ -(); - -74 iŕ( -”r -) - -75 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "failedo initialize stow support"); - -78 - `¬gp_·rŁ - (& -¬gp_ˇ¬tup -, -¬gc -, -¬gv -, -ARGP_IN_ORDER -, 0, 0); - -80 -”r - = - `node_ü—‹_roŮ - (& -Ătfs_roŮ_node -); - -81 iŕ( -”r -) - -82 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "failedo create„oot‚ode"); - -85 - `Źsk_g‘_bo١żp_pÜt - ( - `mach_Źsk_Łlf - (), & -bo١żp_pÜt -); - -86 - `Ătfs_š™ - (); - -87 -und”lyšg_node - = - `Ătfs_ˇ¬tup - ( -bo١żp_pÜt -, -O_READ -); - -89 -”r - = - `node_š™_roŮ - ( -Ătfs_roŮ_node -); - -90 iŕ( -”r -) - -91 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "failedo initialize„oot‚ode"); - -94 -”r - = - `m­time_m­ - (0, 0, & -m­time -); - -95 iŕ( -”r -) - -96 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "maptime_map"); - -99 - `n˙che_š™ - ( -n˙che_size -); - -102 -”r - = - `io_ˇ© - ( -und”lyšg_node -, & -und”lyšg_node_ˇ© -); - -104 iŕ( -”r -) - -105 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "io_stat"); - -107 -fsid - = - `g‘pid - (); - -108 -Ătfs_roŮ_node --> -Â_ˇ© - = -und”lyšg_node_ˇ© -; - -109 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_šo - = -UNIONFS_ROOT_INODE -; - -110 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_fsid - = -fsid -; - -111 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_mode - = -S_IFDIR - | ( -und”lyšg_node_ˇ© -.st_mode - -112 & ~ -S_IFMT - & ~ -S_ITRANS -); - -113 -Ătfs_roŮ_node --> -Â_ŚŞ¦©ed - =‚‘fs_roŮ_node-> -Â_ˇ© -. -ˇ_mode -; - -117 iŕ(! - `S_ISDIR - ( -und”lyšg_node_ˇ© -. -ˇ_mode -)) - -119 iŕ( -und”lyšg_node_ˇ© -. -ˇ_mode - & -S_IRUSR -) - -120 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_mode - |đ -S_IXUSR -; - -121 iŕ( -und”lyšg_node_ˇ© -. -ˇ_mode - & -S_IRGRP -) - -122 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_mode - |đ -S_IXGRP -; - -123 iŕ( -und”lyšg_node_ˇ© -. -ˇ_mode - & -S_IROTH -) - -124 -Ătfs_roŮ_node --> -Â_ˇ© -. -ˇ_mode - |đ -S_IXOTH -; - -128 - `fsh–p_touch - (& -Ătfs_roŮ_node --> -Â_ˇ© -, - -129 -TOUCH_ATIME - | -TOUCH_MTIME - | -TOUCH_CTIME -, -m­time -); - -133 - `Ătfs_Łrv”_loÝ - (); - -134 - } -} - - @ncache.c - -20  - #_GNU_SOURCE - - - ) - -22  - ~ - -23  - ~<”rÜ.h -> - -24  - ~<ˇdlib.h -> - -25  - ~ - -27  - ~"n˙che.h -" - -28  - ~"lib.h -" - -29  - ~"uniÚfs.h -" - -32 -n˙che_t - - gn˙che -; - -35  - gn˙che_size - = -NCACHE_SIZE -; - -40 - $n˙che_š™ - ( -size_max -) - -42 -n˙che -. -mru - = -NULL -; - -43 -n˙che -. -Ěu - = -NULL -; - -44 -n˙che -. -size_max - = size_max; - -45 -n˙che -. -size_cuĽ’t - = 0; - -46 - `mu‹x_š™ - (& -n˙che -. -lock -); - -47 - } -} - -51 - $n˙che_node_»move - ( -node_t - * -node -) - -53  -ĂŠode - * - - = -node -->nn; - -55 iŕ( - --> -n˙che_Ăxt -) - -56 - --> -n˙che_Ăxt -->Â-> -n˙che_´ev - =‚n->ncache_prev; - -57 iŕ( - --> -n˙che_´ev -) - -58 - --> -n˙che_´ev -->Â-> -n˙che_Ăxt - =‚n->ncache_next; - -59 iŕ( -n˙che -. -mru - =đ -node -) - -60 -n˙che -. -mru - = - --> -n˙che_Ăxt -; - -61 iŕ( -n˙che -. -Ěu - =đ -node -) - -62 -n˙che -. -Ěu - = - --> -n˙che_´ev -; - -63 - --> -n˙che_Ăxt - = -NULL -; - -64 - --> -n˙che_´ev - = -NULL -; - -65 -n˙che -. -size_cuĽ’t ---; - -66 - } -} - -69 - $n˙che_»Łt - () - -71 -node_t - * -node -; - -73 - `mu‹x_lock - (& -n˙che -. -lock -); - -74 ( -node - = -n˙che -. -mru -)) - -75 - `n˙che_node_»move - ( -node -); - -76 - `mu‹x_uĆock - (& -n˙che -. -lock -); - -77 - } -} - -82 -”rÜ_t - - -83 - $n˙che_node_lookup - ( -Ęode_t - * -Ęode -, -node_t - ** -node -) - -85 -”rÜ_t - -”r - = 0; - -86 -node_t - * -n -; - -88 iŕ( -Ęode --> -node -) - -90 - `debug_msg - ("ncache_node_lookup for†node: %s (found in cache)", - -91 -Ęode --> -Çme -); - -92 -n - = -Ęode --> -node -; - -93 - `Ătfs_Äef - ( -n -); - -97 - `debug_msg - ("ncache_node_lookup for†node: %s (newly created)", - -98 -Ęode --> -Çme -); - -99 -”r - = - `node_ü—‹ - ( -Ęode -, & -n -); - -102 iŕ(! -”r -) - -104 - `mu‹x_lock - (& -n --> -lock -); - -105 * -node - = -n -; - -107  -”r -; - -108 - } -} - -113 - $n˙che_node_add - ( -node_t - * -node -) - -115 - `mu‹x_lock - (& -n˙che -. -lock -); - -117 - `debug_msg - ("addšg‚odtŘ˙che: %s", -node --> - --> -Ęode --> -Çme -); - -119 iŕ( -n˙che -. -size_max - > 0 ||‚˙che. -size_cuĽ’t - > 0) - -121 iŕ( -n˙che -. -mru - !đ -node -) - -123 iŕ( -node --> - --> -n˙che_Ăxt - ||‚ode->Â-> -n˙che_´ev -) - -125 - `n˙che_node_»move - ( -node -); - -128 - `Ătfs_Äef - ( -node -); - -130 -node --> - --> -n˙che_Ăxt - = -n˙che -. -mru -; - -131 -node --> - --> -n˙che_´ev - = -NULL -; - -132 iŕ( -n˙che -. -mru -) - -133 -n˙che -. -mru --> - --> -n˙che_´ev - = -node -; - -134 iŕ(! -n˙che -. -Ěu -) - -135 -n˙che -. -Ěu - = -node -; - -136 -n˙che -. -mru - = -node -; - -137 -n˙che -. -size_cuĽ’t -++; - -142  -n˙che -. -size_cuĽ’t - >‚˙che. -size_max -) - -144  -node - * -Ěu - = -n˙che -.lru; - -145 - `debug_msg - ("»movšg cached‚ode: %s", -Ěu --> - --> -Ęode --> -Çme -); - -146 - `n˙che_node_»move - ( -Ěu -); - -147 - `Ătfs_Ä–e - ( -Ěu -); - -150 - `mu‹x_uĆock - (& -n˙che -. -lock -); - -151 - } -} - - @ncache.h - -20 #iâdeŕ -INCLUDED_NCACHE_H - - -21  - #INCLUDED_NCACHE_H - - - ) - -23  - ~<”rÜ.h -> - -24  - ~ - -26  - ~"node.h -" - -28  - sn˙che - - -30 -node_t - * - mmru -; - -32 -node_t - * - mĚu -; - -34  - msize_max -; - -36  - msize_cuĽ’t -; - -38  -mu‹x - - mlock -; - -39 } - tn˙che_t -; - -42  -n˙che_size -; - -46  -n˙che_š™ - ( -size_max -); - -51 -”rÜ_t - -n˙che_node_lookup - ( -Ęode_t - * -Ęode -, -node_t - ** -node -); - -53  -n˙che_»Łt - (); - -57  -n˙che_node_add - ( -node_t - * -node -); - - @netfs.c - -20  - #_GNU_SOURCE - - - ) - -22  - ~ - -23  - ~<”rÜ.h -> - -24  - ~<¬gz.h -> - -25  - ~<ˇddef.h -> - -26  - ~ - -27  - ~ - -28  - ~<ˇršg.h -> - -29  - ~<ˇdio.h -> - -30  - ~ - -31  - ~ - -33  - ~"uniÚfs.h -" - -34  - ~"ulfs.h -" - -35  - ~"node.h -" - -36  - ~"lib.h -" - -37  - ~"n˙che.h -" - -38  - ~"ÝtiÚs.h -" - -43 -”rÜ_t - - -44 - $Ătfs_­łnd_¬gs - (** -¬gz -, -size_t - * -¬gz_Ën -) - -46 -”rÜ_t - -”r - = 0; - -48 -ulfs_™”©e - - -50 iŕ(! -”r -) - -51 iŕ( -uniÚfs_ćags - & -FLAG_UNIONFS_MODE_DEBUG -) - -52 -”r - = - `¬gz_add - ( -¬gz -, -¬gz_Ën -, - -53 - `OPT_LONG - ( -OPT_LONG_DEBUG -)); - -54 iŕ(! -”r -) - -55 iŕ( -ulfs --> -ćags - & -FLAG_ULFS_WRITABLE -) - -56 -”r - = - `¬gz_add - ( -¬gz -, -¬gz_Ën -, - -57 - `OPT_LONG - ( -OPT_LONG_WRITABLE -)); - -58 iŕ(! -”r -) - -59 iŕ( -ulfs --> -´iÜ™y -) - -61 * -buf - = -NULL -; - -62 iŕ(( -”r - = - `aĄrštf - (& -buf -, "%s=%s", - `OPT_LONG - ( -OPT_LONG_PRIORITY -), - -63 -ulfs --> -´iÜ™y -)) != -1) - -65 -”r - = - `¬gz_add - ( -¬gz -, -¬gz_Ën -, -buf -); - -66 - `ä“ - ( -buf -); - -70 iŕ(! -”r -) - -72 iŕ( -ulfs --> -·th -) - -73 -”r - = - `¬gz_add - ( -¬gz -, -¬gz_Ën -, -ulfs --> -·th -); - -75 -”r - = - `¬gz_add - ( -¬gz -, -¬gz_Ën -, - -76 - `OPT_LONG - ( -OPT_LONG_UNDERLYING -)); - -80  -”r -; - -81 - } -} - -83 #iâdeŕ -__USE_FILE_OFFSET64 - - -84  - #OFFSET_T - -__off_t - - - ) - -86  - #OFFSET_T - -__off64_t - - - ) - -89  -”rÜ_t - - -90 - $_g‘_node_size - ( -node - * -dś -, -OFFSET_T - * -off -) - -92 -size_t - -size - = 0; - -93 -”rÜ_t - -”r -; - -94  -couÁ - = 0; - -95 -node_dś’t_t - * -dś’t_ˇ¬t -, * -dś’t_cuĽ’t -; - -96 -node_dś’t_t - * -dś’t_liˇ - = -NULL -; - -97  -fśˇ_’Śy - = 2; - -99  - `bump_size - (cÚˇ * -Çme -) - -101 -size_t - -Ăw_size - = -size - + - `DIRENT_LEN - ( - `ˇľ’ - ( -Çme -)); - -103 -size - = -Ăw_size -; - -104 -couÁ - ++; - -108 -”r - = - `node_’Ś›s_g‘ - ( -dś -, & -dś’t_liˇ -); - -109 iŕ( -”r -) - -110  -”r -; - -112  -dś’t_ˇ¬t - = -dś’t_liˇ -, -couÁ - = 2; - -113 -dś’t_ˇ¬t - && -fśˇ_’Śy - > -couÁ -; - -114 -dś’t_ˇ¬t - = dś’t_ˇ¬t-> -Ăxt -, -couÁ -++); - -116 -couÁ - = 0; - -119 iŕ( -fśˇ_’Śy - == 0) - -120 - `bump_size - ("."); - -121 iŕ( -fśˇ_’Śy - <= 1) - -122 - `bump_size - (".."); - -125  -dś’t_cuĽ’t - = -dś’t_ˇ¬t -; - -126 -dś’t_cuĽ’t -; - -127 -dś’t_cuĽ’t - = dś’t_cuĽ’t-> -Ăxt -) - -128 iŕ(! - `bump_size - ( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -)) - -131 - `ä“ - ( -dś’t_liˇ -); - -133 * -off - = -size -; - -136 - } -} - -141 -”rÜ_t - - -142 - $Ătfs_v®id©e_ˇ© - ( -node - * -Ĺ -,  -iouŁr - * -üed -) - -144 -”rÜ_t - -”r - = 0; - -146 iŕ( -Ĺ - !đ -Ătfs_roŮ_node -) - -148 iŕ(! ( -Ĺ --> - --> -ćags - & -FLAG_NODE_ULFS_UPTODATE -)) - -149 -”r - = - `node_upd©e - ( -Ĺ -); - -150 iŕ(! -”r -) - -152  -dÚe - = 0; - -154 - `node_ulfs_™”©e_uĆocked - ( -Ĺ -) - -155 iŕ((! -dÚe -č&& - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -157 -”r - = - `io_ˇ© - ( -node_ulfs --> -pÜt -, & -Ĺ --> -Â_ˇ© -); - -158 iŕ(! -”r -) - -159 -Ĺ --> -Â_ŚŞ¦©ed - =‚p-> -Â_ˇ© -. -ˇ_mode -; - -160 -dÚe - = 1; - -162 iŕ(! -dÚe -) - -163 -”r - = -ENOENT -; - -168 - `_g‘_node_size - ( -Ĺ -, &Ĺ-> -Â_ˇ© -. -ˇ_size -); - -171  -”r -; - -172 - } -} - -176 -”rÜ_t - - -177 - $Ătfs_©‹m±_chown - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -178 -uid_t - -uid -, uid_ -gid -) - -180  -EOPNOTSUPP -; - -181 - } -} - -185 -”rÜ_t - - -186 - $Ătfs_©‹m±_chauthÜ - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -187 -uid_t - -authÜ -) - -189  -EOPNOTSUPP -; - -190 - } -} - -197 -”rÜ_t - - -198 - $Ătfs_©‹m±_chmod - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -199 -mode_t - -mode -) - -201  -EOPNOTSUPP -; - -202 - } -} - -206 -”rÜ_t - - -207 - $Ătfs_©‹m±_mksymlšk - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -208 * -Çme -) - -210  -EOPNOTSUPP -; - -211 - } -} - -215 -”rÜ_t - - -216 - $Ătfs_©‹m±_mkdev - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -217 -mode_t - -tył -, -dev_t - -šdexes -) - -219  -EOPNOTSUPP -; - -220 - } -} - -224 -”rÜ_t - - -225 - $Ătfs_Łt_ŚŞ¦©Ü - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -226 * -¬gz -, -size_t - -¬gzËn -) - -228  -EOPNOTSUPP -; - -229 - } -} - -234 -”rÜ_t - - -235 - $Ătfs_g‘_ŚŞ¦©Ü - ( -node - *node, ** -¬gz -, - -236 -size_t - * -¬gz_Ën -) - -238  -EOPNOTSUPP -; - -239 - } -} - -243 -”rÜ_t - - -244 - $Ătfs_©‹m±_chćags - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -245  -ćags -) - -247  -EOPNOTSUPP -; - -248 - } -} - -253 -”rÜ_t - - -254 - $Ătfs_©‹m±_utimes - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -255  -timeĄec - * -©ime -, timeĄeř* -mtime -) - -258 - } -} - -262 -”rÜ_t - - -263 - $Ătfs_©‹m±_Łt_size - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -264 -off_t - -size -) - -266  -EOPNOTSUPP -; - -267 - } -} - -271 -”rÜ_t - - -272 - $Ătfs_©‹m±_ˇ©fs - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -273  -ˇ©fs - * -ˇ -) - -275  -EOPNOTSUPP -; - -276 - } -} - -281 -”rÜ_t - - -282 - $Ătfs_©‹m±_sync - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -283  -wa™ -) - -285  -EOPNOTSUPP -; - -286 - } -} - -290 -”rÜ_t - - -291 - $Ătfs_©‹m±_syncfs - ( -iouŁr - * -üed -,  -wa™ -) - -294 - } -} - -299 -”rÜ_t - - -300 - $Ătfs_©‹m±_lookup - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -301 * -Çme -,  -node - **node) - -303  -EOPNOTSUPP -; - -304 - } -} - -307 -”rÜ_t - - -308 - $Ătfs_©‹m±_uĆšk - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -309 * -Çme -) - -311 -”rÜ_t - -”r - = 0; - -312 -mach_pÜt_t - -p -; - -313  -ˇ© - -ˇ©buf -; - -315 - `node_upd©e - ( -dś -); - -317 -”r - = - `node_lookup_fže - ( -dś -, -Çme -, 0, & -p -, & -ˇ©buf -); - -318 iŕ( -”r -) - -319  -”r -; - -321 - `pÜt_d—Îoc - ( -p -); - -323 -”r - = - `fsh–p_checkdśmod - (& -dś --> -Â_ˇ© -, & -ˇ©buf -, -uŁr -); - -324 iŕ( -”r -) - -325  -”r -; - -327 -”r - = - `node_uĆšk_fže - ( -dś -, -Çme -); - -329  -”r -; - -330 - } -} - -334 -”rÜ_t - - -335 - $Ătfs_©‹m±_»Çme - ( -iouŁr - * -uŁr -,  -node - * -äomdś -, - -336 * -äomÇme -,  -node - * -todś -, - -337 * -tÚame -,  -exţ -) - -339  -EOPNOTSUPP -; - -340 - } -} - -344 -”rÜ_t - - -345 - $Ătfs_©‹m±_mkdś - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -346 * -Çme -, -mode_t - -mode -) - -348 -”rÜ_t - -”r - = 0; - -349 -mach_pÜt_t - -p -; - -350  -ˇ© - -ˇ©buf -; - -352 - `node_upd©e - ( -dś -); - -354 -”r - = - `fsh–p_checkdśmod - (& -dś --> -Â_ˇ© -, 0, -uŁr -); - -355 iŕ( -”r -) - -356  -ex™ -; - -359 iŕ((! -uŁr --> -uids --> -ids -) || (!user->uids->ids)) - -361 -”r - = -EACCES -; - -362  -ex™ -; - -365 -”r - = - `node_dś_ü—‹ - ( -dś -, -Çme -, -mode -); - -366 iŕ( -”r -) - -367  -ex™ -; - -369 -”r - = - `node_lookup_fže - ( -dś -, -Çme -, 0, & -p -, & -ˇ©buf -); - -370 iŕ( -”r -) - -372 - `node_dś_»move - ( -dś -, -Çme -); - -373  -ex™ -; - -376 -”r - = - `fže_chown - ( -p -, -uŁr --> -uids --> -ids -[0], uŁr-> -gids -->ids[0]); - -377 iŕ( -”r -) - -379 - `pÜt_d—Îoc - ( -p -); - -380 - `node_dś_»move - ( -dś -, -Çme -); - -381  -ex™ -; - -384 - `pÜt_d—Îoc - ( -p -); - -386 -ex™ -: - -388  -”r -; - -389 - } -} - -393 -”rÜ_t - - -394 - $Ătfs_©‹m±_rmdś - ( -iouŁr - * -uŁr -, - -395  -node - * -dś -, * -Çme -) - -397 -”rÜ_t - -”r - = 0; - -398 -mach_pÜt_t - -p -; - -399  -ˇ© - -ˇ©buf -; - -401 - `node_upd©e - ( -dś -); - -403 -”r - = - `node_lookup_fže - ( -dś -, -Çme -, 0, & -p -, & -ˇ©buf -); - -404 iŕ( -”r -) - -405  -”r -; - -407 - `pÜt_d—Îoc - ( -p -); - -409 -”r - = - `fsh–p_checkdśmod - (& -dś --> -Â_ˇ© -, & -ˇ©buf -, -uŁr -); - -410 iŕ( -”r -) - -411  -”r -; - -413 -”r - = - `node_dś_»move - ( -dś -, -Çme -); - -415  -”r -; - -416 - } -} - -421 -”rÜ_t - - -422 - $Ătfs_©‹m±_lšk - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -423  -node - * -fže -, * -Çme -,  -exţ -) - -425  -EOPNOTSUPP -; - -426 - } -} - -431 -”rÜ_t - - -432 - $Ătfs_©‹m±_mkfže - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -433 -mode_t - -mode -,  -node - ** -Ĺ -) - -435 - `mu‹x_uĆock - (& -dś --> -lock -); - -436  -EOPNOTSUPP -; - -437 - } -} - -443 -”rÜ_t - - -444 - $Ătfs_©‹m±_ü—‹_fže - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -445 * -Çme -, -mode_t - -mode -,  -node - ** -Ĺ -) - -447 - `mu‹x_uĆock - (& -dś --> -lock -); - -448  -EOPNOTSUPP -; - -449 - } -} - -453 -”rÜ_t - - -454 - $Ătfs_©‹m±_ü—‹_fže_»duűd - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -455 * -Çme -, -mode_t - -mode -,  -ćags -) - -457 -mach_pÜt_t - -p -; - -458 -”rÜ_t - -”r -; - -459  -ˇ© - -ˇ©buf -; - -461 - `node_upd©e - ( -dś -); - -463 -”r - = - `fsh–p_checkdśmod - (& -dś --> -Â_ˇ© -, 0, -uŁr -); - -464 iŕ( -”r -) - -465  -ex™ -; - -468 iŕ((! -uŁr --> -uids --> -ids -) || (!user->uids->ids)) - -470 -”r - = -EACCES -; - -471  -ex™ -; - -474 - `mu‹x_uĆock - (& -dś --> -lock -); - -475 -”r - = - `node_lookup_fže - ( -dś -, -Çme -, -ćags - | -O_CREAT -, - -476 & -p -, & -ˇ©buf -); - -477 - `mu‹x_lock - (& -dś --> -lock -); - -479 iŕ( -”r -) - -480  -ex™ -; - -482 -”r - = - `fže_chmod - ( -p -, -mode -); - -483 iŕ( -”r -) - -485 - `pÜt_d—Îoc - ( -p -); - -486 - `node_uĆšk_fže - ( -dś -, -Çme -); - -487  -ex™ -; - -490 -”r - = - `fže_chown - ( -p -, -uŁr --> -uids --> -ids -[0], uŁr-> -gids -->ids[0]); - -491 iŕ( -”r -) - -493 - `pÜt_d—Îoc - ( -p -); - -494 - `node_uĆšk_fže - ( -dś -, -Çme -); - -495  -ex™ -; - -498 -”r - = - `io_ˇ© - ( -p -, & -ˇ©buf -); - -501 iŕ(! -”r - && ( -ćags - & -O_READ -)) - -502 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IREAD -, -uŁr -); - -503 iŕ(! -”r - && ( -ćags - & -O_WRITE -)) - -504 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IWRITE -, -uŁr -); - -505 iŕ(! -”r - && ( -ćags - & -O_EXEC -)) - -506 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IEXEC -, -uŁr -); - -508 iŕ( -”r -) - -510 - `pÜt_d—Îoc - ( -p -); - -511 - `node_uĆšk_fže - ( -dś -, -Çme -); - -512  -ex™ -; - -515 - `pÜt_d—Îoc - ( -p -); - -517 -ex™ -: - -518 - `mu‹x_uĆock - (& -dś --> -lock -); - -519  -”r -; - -520 - } -} - -524 -”rÜ_t - - -525 - $Ătfs_©‹m±_»adlšk - ( -iouŁr - * -uŁr -,  -node - * -Ĺ -, - -526 * -buf -) - -528  -EOPNOTSUPP -; - -529 - } -} - -532 -”rÜ_t - - -533 - $Ătfs_check_Ý’_łrmissiÚs - ( -iouŁr - * -uŁr -,  -node - * -Ĺ -, - -534  -ćags -,  -Ăwnode -) - -536 -”rÜ_t - -”r - = 0; - -538 iŕ(! -”r - && ( -ćags - & -O_READ -)) - -539 -”r - = - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IREAD -, -uŁr -); - -540 iŕ(! -”r - && ( -ćags - & -O_WRITE -)) - -541 -”r - = - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IWRITE -, -uŁr -); - -542 iŕ(! -”r - && ( -ćags - & -O_EXEC -)) - -543 -”r - = - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IEXEC -, -uŁr -); - -545  -”r -; - -546 - } -} - -551 -”rÜ_t - - -552 - $Ătfs_©‹m±_»ad - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -553 -off_t - -offŁt -, -size_t - * -Ën -, * -d©a -) - -555 * -Ën - = 0; - -557 - } -} - -562 -”rÜ_t - - -563 - $Ătfs_©‹m±_wr™e - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -564 -off_t - -offŁt -, -size_t - * -Ën -, * -d©a -) - -567  -EISDIR -; - -568 - } -} - -572 -”rÜ_t - - -573 - $Ătfs_»pÜt_acűss - ( -iouŁr - * -üed -,  -node - * -Ĺ -, - -574 * -tyłs -) - -576 * -tyłs - = 0; - -577 iŕ( - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IREAD -, -üed -) == 0) - -578 * -tyłs - |đ -O_READ -; - -579 iŕ( - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IWRITE -, -üed -) == 0) - -580 * -tyłs - |đ -O_WRITE -; - -581 iŕ( - `fsh–p_acűss - (& -Ĺ --> -Â_ˇ© -, -S_IEXEC -, -üed -) == 0) - -582 * -tyłs - |đ -O_EXEC -; - -584 - } -} - -587  -iouŁr - * - -588 - $Ătfs_make_uŁr - ( -uid_t - * -uids -,  -nuids -, uid_* -gids -,  -ngids -) - -590  -NULL -; - -591 - } -} - -595 - $Ătfs_node_nÜefs - ( -node - * -Ĺ -) - -597 - `node_deˇroy - ( -Ĺ -); - -598 - } -} - -600 -”rÜ_t - - -601 - $Ătfs_©‹m±_lookup_im´oved - ( -iouŁr - * -uŁr -,  -node - * -dś -, - -602 * -Çme -,  -node - ** -Ĺ -, - -603  -ćags -,  -ϡcomp -, - -604 -mach_pÜt_t - * -pÜt -, - -605 -mach_msg_tył_Çme_t - * -pÜt_tył -) - -607 -mach_pÜt_t - -p -; - -608 -”rÜ_t - -”r -; - -610 - `mu‹x_lock - (& -dś --> - --> -Ęode --> -lock -); - -612 -”r - = - `fsh–p_acűss - (& -dś --> -Â_ˇ© -, -S_IEXEC -, -uŁr -); - -613 iŕ( -”r -) - -614  -ex™ -; - -617 iŕ(! * -Çme - || ! - `ˇrcmp - (name, ".")) - -621 * -Ĺ - = -dś -; - -622 - `Ătfs_Äef - (* -Ĺ -); - -625 iŕ(! - `ˇrcmp - ( -Çme -, "..")) - -629 -Ęode_t - * -Ęode - = -dś --> - -->lnode; - -630 -node_t - * -node -; - -632 -”r - = - `n˙che_node_lookup - ( -Ęode --> -dś -, & -node -); - -633 iŕ( -”r -) - -634  -ex™ -; - -636 * -Ĺ - = -node -; - -642 -Ęode_t - * -dś_Ęode - = -dś --> - --> -Ęode -; - -643  -ˇ© - -ˇ©buf -; - -644 -Ęode_t - * -Ęode - = -NULL -; - -649 -”r - = - `node_upd©e - ( -dś -); - -652 - `mu‹x_uĆock - (& -dś_Ęode --> -lock -); - -653 - `mu‹x_uĆock - (& -dś --> -lock -); - -655 -”r - = - `node_lookup_fže - ( -dś -, -Çme -, -ćags - & ~( -O_NOLINK -| -O_CREAT -), - -656 & -p -, & -ˇ©buf -); - -658 - `mu‹x_lock - (& -dś --> -lock -); - -659 - `mu‹x_lock - (& -dś_Ęode --> -lock -); - -662 iŕ( -”r -) - -663  -ex™ -; - -665 iŕ( - `S_ISDIR - ( -ˇ©buf -. -ˇ_mode -)) - -667 -node_t - * -node -; - -670 - `pÜt_d—Îoc - ( -p -); - -675 -”r - = - `Ęode_g‘ - ( -dś_Ęode -, -Çme -, & -Ęode -); - -676 iŕ( -”r - =đ -ENOENT -) - -679 -”r - = - `Ęode_ü—‹ - ( -Çme -, & -Ęode -); - -680 iŕ( -”r -) - -681  -ex™ -; - -683 - `Ęode_šˇ®l - ( -dś_Ęode -, -Ęode -); - -687 -”r - = - `n˙che_node_lookup - ( -Ęode -, & -node -); - -690 - `Ęode_»f_»move - ( -Ęode -); - -692 iŕ( -”r -) - -693  -ex™ -; - -696 * -Ĺ - = -node -; - -702 -mach_pÜt_t - -p_»ˇriůed -; - -704 iŕ(! -ϡcomp -) - -707 - `pÜt_d—Îoc - ( -p -); - -708 -”r - = -ENOTDIR -; - -709  -ex™ -; - -713 iŕ(! -”r - && ( -ćags - & -O_READ -)) - -714 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IREAD -, -uŁr -); - -715 iŕ(! -”r - && ( -ćags - & -O_WRITE -)) - -716 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IWRITE -, -uŁr -); - -717 iŕ(! -”r - && ( -ćags - & -O_EXEC -)) - -718 -”r - = - `fsh–p_acűss - (& -ˇ©buf -, -S_IEXEC -, -uŁr -); - -720 iŕ( -”r -) - -722 - `pÜt_d—Îoc - ( -p -); - -723  -ex™ -; - -728 -”r - = - `io_»ˇriů_auth - ( -p -, & -p_»ˇriůed -, - -729 -uŁr --> -uids --> -ids -, uŁr->uids-> -num -, - -730 -uŁr --> -gids --> -ids -, uŁr->gids-> -num -); - -731 - `pÜt_d—Îoc - ( -p -); - -733 iŕ( -”r -) - -734  -ex™ -; - -737 * -pÜt - = -p_»ˇriůed -; - -738 * -pÜt_tył - = -MACH_MSG_TYPE_MOVE_SEND -; - -742 -ex™ -: - -744 iŕ( -”r -) - -745 * -Ĺ - = -NULL -; - -746 iŕ(* -Ĺ -) - -748 - `mu‹x_uĆock - (&(* -Ĺ -)-> -lock -); - -749 - `n˙che_node_add - (* -Ĺ -); - -752 - `mu‹x_uĆock - (& -dś --> - --> -Ęode --> -lock -); - -753 - `mu‹x_uĆock - (& -dś --> -lock -); - -754  -”r -; - -755 - } -} - -762  - #OPENONLY_STATE_MODES - ( -O_CREAT -| -O_EXCL -| -O_NOLINK -| -O_NOTRANS -| -O_NONBLOCK -) - - ) - -764 -fsh–p_ătch_roŮ_˙Îback1_t - - g_Ătfs_ŚŞ¦©Ü_˙Îback1 -; - -765 -fsh–p_ătch_roŮ_˙Îback2_t - - g_Ătfs_ŚŞ¦©Ü_˙Îback2 -; - -767 -”rÜ_t - - -768 - $Ătfs_S_dś_lookup - ( -´Ůid - * -dśuŁr -, - -769 * -fž’ame -, - -770  -ćags -, - -771 -mode_t - -mode -, - -772 -»Śy_tył - * -do_»Śy -, - -773 * -»Śy_Çme -, - -774 -mach_pÜt_t - * -»Śy_pÜt -, - -775 -mach_msg_tył_Çme_t - * -»Śy_pÜt_tył -) - -777  -ü—‹ -; - -778  -exţ -; - -779  -muˇbedś - = 0; - -780  -ϡcomp - = 0; - -781  -Ăwnode - = 0; - -782  -nsymlšks - = 0; - -783  -node - * -dĹ -, * -Ĺ -; - -784 * -ĂxŠame -; - -785 -”rÜ_t - -”rÜ - = 0; - -786  -´Ůid - * -Ăwpi -; - -787  -iouŁr - * -uŁr -; - -789 iŕ(! -dśuŁr -) - -790  -EOPNOTSUPP -; - -792 -ü—‹ - = ( -ćags - & -O_CREAT -); - -793 -exţ - = ( -ćags - & -O_EXCL -); - -796 * -fž’ame - == '/') - -797 -fž’ame -++; - -799 * -»Śy_pÜt_tył - = -MACH_MSG_TYPE_MAKE_SEND -; - -800 * -do_»Śy - = -FS_RETRY_NORMAL -; - -801 * -»Śy_Çme - = '\0'; - -803 iŕ(* -fž’ame - == '\0') - -806 -dĹ - = 0; - -807 -Ĺ - = -dśuŁr --> -po -->np; - -808 - `mu‹x_lock - (& -Ĺ --> -lock -); - -809 - `Ătfs_Äef - ( -Ĺ -); - -810  -gŮ™ -; - -813 -dĹ - = -dśuŁr --> -po --> -Ĺ -; - -815 - `mu‹x_lock - (& -dĹ --> -lock -); - -817 - `Ătfs_Äef - ( -dĹ -); - -821 - `asŁą - (! -ϡcomp -); - -824 -ĂxŠame - = - `šdex - ( -fž’ame -, '/'); - -826 iŕ( -ĂxŠame -) - -828 * -ĂxŠame -++ = '\0'; - -829 * -ĂxŠame - == '/') - -830 -ĂxŠame -++; - -831 iŕ(* -ĂxŠame - == '\0') - -834 -ĂxŠame - = 0; - -835 -ϡcomp - = 1; - -836 -muˇbedś - = 1; - -837 -ü—‹ - = 0; - -840 -ϡcomp - = 0; - -843 -ϡcomp - = 1; - -845 -Ĺ - = 0; - -847 -»Śy_lookup -: - -849 iŕ(( -dĹ - =đ -Ătfs_roŮ_node - || dĹ =đ -dśuŁr --> -po --> -shadow_roŮ -) - -850 && -fž’ame -[0] == '.' && filename[1] == '.' && filename[2] == '\0') - -851 iŕ( -dĹ - =đ -dśuŁr --> -po --> -shadow_roŮ -) - -854 * -do_»Śy - = -FS_RETRY_REAUTH -; - -855 * -»Śy_pÜt - = -dśuŁr --> -po --> -shadow_roŮ_·»Á -; - -856 * -»Śy_pÜt_tył - = -MACH_MSG_TYPE_COPY_SEND -; - -857 iŕ(! -ϡcomp -) - -858 - `ˇrýy - ( -»Śy_Çme -, -ĂxŠame -); - -859 -”rÜ - = 0; - -860 - `mu‹x_uĆock - (& -dĹ --> -lock -); - -861  -out -; - -863 iŕ( -dśuŁr --> -po --> -roŮ_·»Á - !đ -MACH_PORT_NULL -) - -868 * -do_»Śy - = -FS_RETRY_REAUTH -; - -869 * -»Śy_pÜt - = -dśuŁr --> -po --> -roŮ_·»Á -; - -870 * -»Śy_pÜt_tył - = -MACH_MSG_TYPE_COPY_SEND -; - -871 iŕ(! -ϡcomp -) - -872 - `ˇrýy - ( -»Śy_Çme -, -ĂxŠame -); - -873 -”rÜ - = 0; - -874 - `mu‹x_uĆock - (& -dĹ --> -lock -); - -875  -out -; - -880 -”rÜ - = 0; - -881 -Ĺ - = -dĹ -; - -882 - `Ătfs_Äef - ( -Ĺ -); - -886 -”rÜ - = - `Ătfs_©‹m±_lookup_im´oved - ( -dśuŁr --> -uŁr -, -dĹ -, - -887 -fž’ame -, & -Ĺ -, - -888 -ćags -, -ϡcomp -, - -889 -»Śy_pÜt -, -»Śy_pÜt_tył -); - -894 iŕ( -ϡcomp - && -ü—‹ - && -exţ - && ! -”rÜ - && -Ĺ -) - -895 -”rÜ - = -EEXIST -; - -898 iŕ( -ϡcomp - && -ü—‹ - && -”rÜ - =đ -ENOENT -) - -900 -mode - &đ~( -S_IFMT - | -S_ISPARE - | -S_ISVTX -); - -901 -mode - |đ -S_IFREG -; - -902 - `mu‹x_lock - (& -dĹ --> -lock -); - -904 -”rÜ - = - `Ătfs_©‹m±_ü—‹_fže_»duűd - ( -dśuŁr --> -uŁr -, -dĹ -, - -905 -fž’ame -, -mode -, -ćags -); - -912 iŕ((! -”rÜ -č|| (”rÜ =đ -EEXIST - && ! -exţ -)) - -914 - `mu‹x_lock - (& -dĹ --> -lock -); - -915  -»Śy_lookup -; - -918 -Ăwnode - = 1; - -922 iŕ( -”rÜ -) - -923  -out -; - -925 iŕ( -Ĺ -) - -927 - `mu‹x_lock - (& -Ĺ --> -lock -); - -928 -”rÜ - = - `Ătfs_v®id©e_ˇ© - ( -Ĺ -, -dśuŁr --> -uŁr -); - -929 - `mu‹x_uĆock - (& -Ĺ --> -lock -); - -930 iŕ( -”rÜ -) - -931  -out -; - -934 iŕ( -Ĺ - - -935 && - `S_ISLNK - ( -Ĺ --> -Â_ŚŞ¦©ed -) - -936 && (! -ϡcomp - - -937 || -muˇbedś - - -938 || !( -ćags - & ( -O_NOLINK -| -O_NOTRANS -)))) - -940 -size_t - -ĂxŠam–’ -, -ĂwÇm–’ -, -lškËn -; - -941 * -lškbuf -; - -944 iŕ( -nsymlšks -++ > -Ătfs_maxsymlšks -) - -946 -”rÜ - = -ELOOP -; - -947  -out -; - -950 -lškËn - = -Ĺ --> -Â_ˇ© -. -ˇ_size -; - -952 -ĂxŠam–’ - = -ĂxŠame - ? - `ˇľ’ - (nextname) + 1 : 0; - -953 -ĂwÇm–’ - = -ĂxŠam–’ - + -lškËn - + 1; - -954 -lškbuf - = - `®lo˙ - ( -ĂwÇm–’ -); - -956 -”rÜ - = - `Ătfs_©‹m±_»adlšk - ( -dśuŁr --> -uŁr -, -Ĺ -, -lškbuf -); - -957 iŕ( -”rÜ -) - -958  -out -; - -960 iŕ( -ĂxŠame -) - -962 -lškbuf -[ -lškËn -] = '/'; - -963 - `memýy - ( -lškbuf - + -lškËn - + 1, -ĂxŠame -, - -964 -ĂxŠam–’ - - 1); - -966 -lškbuf -[ -ĂxŠam–’ - + -lškËn -] = '\0'; - -968 iŕ( -lškbuf -[0] == '/') - -971 * -do_»Śy - = -FS_RETRY_MAGICAL -; - -972 * -»Śy_pÜt - = -MACH_PORT_NULL -; - -973 - `ˇrýy - ( -»Śy_Çme -, -lškbuf -); - -974  -out -; - -977 -fž’ame - = -lškbuf -; - -978 iŕ( -ϡcomp -) - -980 -ϡcomp - = 0; - -984 -ü—‹ - = 0; - -986 - `Ătfs_Ĺut - ( -Ĺ -); - -987 - `mu‹x_lock - (& -dĹ --> -lock -); - -988 -Ĺ - = 0; - -993 -fž’ame - = -ĂxŠame -; - -994 - `Ătfs_Ä–e - ( -dĹ -); - -996 iŕ( -ϡcomp -) - -997 -dĹ - = 0; - -1000 -dĹ - = -Ĺ -; - -1001 -Ĺ - = 0; - -1005  -fž’ame - && *filename); - -1008 -gŮ™ -: - -1010 iŕ( -muˇbedś - && ! -Ĺ -) - -1012 -”rÜ - = -ENOTDIR -; - -1013  -out -; - -1016 iŕ( -Ĺ -) - -1017 -”rÜ - = - `Ătfs_check_Ý’_łrmissiÚs - ( -dśuŁr --> -uŁr -, -Ĺ -, - -1018 -ćags -, -Ăwnode -); - -1020 iŕ( -”rÜ -) - -1021  -out -; - -1023 -ćags - &đ~ -OPENONLY_STATE_MODES -; - -1025 iŕ( -Ĺ -) - -1027 -”rÜ - = - `ioh–p_dup_iouŁr - (& -uŁr -, -dśuŁr -->user); - -1028 iŕ( -”rÜ -) - -1029  -out -; - -1031 -Ăwpi - = - `Ătfs_make_´Ůid - ( - `Ătfs_make_łrÝ’ - ( -Ĺ -, -ćags -, -dśuŁr --> -po -), - -1032 -uŁr -); - -1033 iŕ(! -Ăwpi -) - -1035 - `ioh–p_ä“_iouŁr - ( -uŁr -); - -1036 -”rÜ - = -”şo -; - -1037  -out -; - -1040 * -»Śy_pÜt - = - `pÜts_g‘_right - ( -Ăwpi -); - -1041 - `pÜts_pÜt_d”ef - ( -Ăwpi -); - -1044 -out -: - -1045 iŕ( -Ĺ -) - -1046 - `Ătfs_Ĺut - ( -Ĺ -); - -1047 iŕ( -dĹ -) - -1048 - `Ătfs_Ä–e - ( -dĹ -); - -1049  -”rÜ -; - -1050 - } -} - -1057 -”rÜ_t - - -1058 - $Ătfs_g‘_dś’ts - ( -iouŁr - * -üed -,  -node - * -dś -, - -1059  -fśˇ_’Śy -,  -num_’Ś›s -, ** -d©a -, - -1060 -mach_msg_tył_numb”_t - * -d©a_Ën -, - -1061 -vm_size_t - -max_d©a_Ën -, * -d©a_’Ś›s -) - -1063 -node_dś’t_t - * -dś’t_ˇ¬t -, * -dś’t_cuĽ’t -; - -1064 -node_dś’t_t - * -dś’t_liˇ - = -NULL -; - -1065 -size_t - -size - = 0; - -1066  -couÁ - = 0; - -1067 * -d©a_p -; - -1068 -”rÜ_t - -”r -; - -1070  - `bump_size - (cÚˇ * -Çme -) - -1072 iŕ( -num_’Ś›s - =đ-1 || -couÁ - <‚um_entries) - -1074 -size_t - -Ăw_size - = -size - + - `DIRENT_LEN - ( - `ˇľ’ - ( -Çme -)); - -1076 iŕ( -max_d©a_Ën - > 0 && -Ăw_size - > max_data_len) - -1078 -size - = -Ăw_size -; - -1079 -couÁ -++; - -1086  - `add_dś’t - (cÚˇ * -Çme -, -šo_t - -fž’o -,  -tył -) - -1088 iŕ( -num_’Ś›s - =đ-1 || -couÁ - <‚um_entries) - -1090  -dś’t - -hdr -; - -1091 -size_t - -Çme_Ën - = - `ˇľ’ - ( -Çme -); - -1092 -size_t - -sz - = - `DIRENT_LEN - ( -Çme_Ën -); - -1094 iŕ( -sz - > -size -) - -1097 -size - -đ -sz -; - -1099 -hdr -. -d_fž’o - = -fž’o -; - -1100 -hdr -. -d_»ţ’ - = -sz -; - -1101 -hdr -. -d_tył - = -tył -; - -1102 -hdr -. -d_ÇmËn - = -Çme_Ën -; - -1104 - `memýy - ( -d©a_p -, & -hdr -, -DIRENT_NAME_OFFS -); - -1105 - `ˇrýy - ( -d©a_p - + -DIRENT_NAME_OFFS -, -Çme -); - -1106 -d©a_p - +đ -sz -; - -1107 -couÁ -++; - -1115 -”r - = - `node_’Ś›s_g‘ - ( -dś -, & -dś’t_liˇ -); - -1117 iŕ(! -”r -) - -1119  -dś’t_ˇ¬t - = -dś’t_liˇ -, -couÁ - = 2; - -1120 -dś’t_ˇ¬t - && -fśˇ_’Śy - > -couÁ -; - -1121 -dś’t_ˇ¬t - = dś’t_ˇ¬t-> -Ăxt -, -couÁ -++); - -1123 -couÁ - = 0; - -1126 iŕ( -fśˇ_’Śy - == 0) - -1127 - `bump_size - ("."); - -1128 iŕ( -fśˇ_’Śy - <= 1) - -1129 - `bump_size - (".."); - -1132  -dś’t_cuĽ’t - = -dś’t_ˇ¬t -; - -1133 -dś’t_cuĽ’t -; - -1134 -dś’t_cuĽ’t - = dś’t_cuĽ’t-> -Ăxt -) - -1135 iŕ(! - `bump_size - ( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -)) - -1138 * -d©a - = - `mm­ - (0, -size -, -PROT_READ -| -PROT_WRITE -, -MAP_ANON -, 0, 0); - -1139 -”r - = ((*č* -d©a - =đ(*č-1č? -”şo - : 0; - -1142 iŕ(! -”r -) - -1144 -d©a_p - = * -d©a -; - -1145 * -d©a_Ën - = -size -; - -1146 * -d©a_’Ś›s - = -couÁ -; - -1147 -couÁ - = 0; - -1150 iŕ( -fśˇ_’Śy - == 0) - -1151 - `add_dś’t - (".", 2, -DT_DIR -); - -1152 iŕ( -fśˇ_’Śy - <= 1) - -1153 - `add_dś’t - ("..", 2, -DT_DIR -); - -1155  -dś’t_cuĽ’t - = -dś’t_ˇ¬t -; - -1156 -dś’t_cuĽ’t -; - -1157 -dś’t_cuĽ’t - = dś’t_cuĽ’t-> -Ăxt -) - -1158 iŕ(! - `add_dś’t - ( -dś’t_cuĽ’t --> -dś’t --> -d_Çme -, - -1160 -dś’t_cuĽ’t --> -dś’t --> -d_tył -)) - -1164 iŕ( -dś’t_liˇ -) - -1165 - `node_’Ś›s_ä“ - ( -dś’t_liˇ -); - -1167 - `fsh–p_touch - (& -dś --> -Â_ˇ© -, -TOUCH_ATIME -, -m­time -); - -1169  -”r -; - -1170 - } -} - - @node.c - -22  - #_GNU_SOURCE - - - ) - -24  - ~ - -25  - ~<ˇdlib.h -> - -26  - ~<”rÜ.h -> - -27  - ~ - -28  - ~ - -29  - ~ - -30  - ~<ˇdio.h -> - -32  - ~"uniÚfs.h -" - -33  - ~"node.h -" - -34  - ~"ulfs.h -" - -35  - ~"lib.h -" - -41  -node_ulfs_ä“ - ( -node_t - * -node -); - -45 -”rÜ_t - - -46 - $node_ü—‹ - ( -Ęode_t - * -Ęode -, -node_t - ** -node -) - -48 -ĂŠode_t - * -ĂŠode_Ăw - = - `m®loc - ( (netnode_t)); - -49 -”rÜ_t - -”r - = 0; - -50 -node_t - * -node_Ăw -; - -52 - `debug_msg - ("node_ü—‹ f܆node: %s", -Ęode --> -Çme -); - -54 iŕ(! -ĂŠode_Ăw -) - -56 -”r - = -ENOMEM -; - -57  -”r -; - -60 -node_Ăw - = - `Ătfs_make_node - ( -ĂŠode_Ăw -); - -61 iŕ(! -node_Ăw -) - -63 -”r - = -ENOMEM -; - -64 - `ä“ - ( -ĂŠode_Ăw -); - -65  -”r -; - -68 -node_Ăw --> - --> -ulfs - = -NULL -; - -70 -”r - = - `node_ulfs_š™ - ( -node_Ăw -); - -71 iŕ( -”r -) - -73 - `node_deˇroy - ( -node_Ăw -); - -74  -”r -; - -77 -Ęode --> -node - = -node_Ăw -; - -78 - `Ęode_»f_add - ( -Ęode -); - -79 -node_Ăw --> - --> -Ęode - =†node; - -80 -node_Ăw --> - --> -ćags - = 0; - -81 -node_Ăw --> - --> -n˙che_Ăxt - = -NULL -; - -82 -node_Ăw --> - --> -n˙che_´ev - = -NULL -; - -83 * -node - = -node_Ăw -; - -85  -”r -; - -86 - } -} - -91 - $node_deˇroy - ( -node_t - * -node -) - -93 - `debug_msg - ("noddeˇroy: %s", -node --> - --> -Ęode --> -Çme -); - -94 - `asŁą - (! ( -node --> - --> -n˙che_Ăxt - ||‚ode->Â-> -n˙che_´ev -)); - -95 - `node_ulfs_ä“ - ( -node -); - -96 - `mu‹x_lock - (& -node --> - --> -Ęode --> -lock -); - -97 -node --> - --> -Ęode -->nodđ -NULL -; - -98 - `Ęode_»f_»move - ( -node --> - --> -Ęode -); - -99 - `ä“ - ( -node --> - -); - -100 - `ä“ - ( -node -); - -101 - } -} - -105 -”rÜ_t - - -106 - $node_upd©e - ( -node_t - * -node -) - -108 -”rÜ_t - -”r - = 0; - -109 * -·th -; - -111 -node_ulfs_t - * -roŮ_ulfs -; - -112  -ˇ© - stat; - -113 -fže_t - -pÜt -; - -114  -i - = 0; - -116 - `debug_msg - ("node_upd©f܆node: %s", -node --> - --> -Ęode --> -Çme -); - -118 iŕ( - `node_is_roŮ - ( -node -)) - -119  -”r -; - -121 - `mu‹x_lock - (& -Ătfs_roŮ_node --> -lock -); - -123 -”r - = - `Ęode_·th_cÚˇruů - ( -node --> - --> -Ęode -, & -·th -); - -124 iŕ( -”r -) - -126 - `mu‹x_uĆock - (& -Ătfs_roŮ_node --> -lock -); - -127  -”r -; - -130 -roŮ_ulfs - = -Ătfs_roŮ_node --> - --> -ulfs -; - -132 - `node_ulfs_™”©e_uĆocked - ( -node -) - -135 iŕ( -node_ulfs --> -ćags - & -FLAG_NODE_ULFS_FIXED -) - -137 -i -++; - -142 iŕ( - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -143 - `pÜt_d—Îoc - ( -node_ulfs --> -pÜt -); - -145 -”r - = - `fže_lookup - (( -roŮ_ulfs - + -i -)-> -pÜt -, -·th -, - -146 -O_READ - | -O_NOTRANS -, O_NOTRANS, - -147 0, & -pÜt -, & -ˇ© -); - -149 iŕ( -”r -) - -151 -node_ulfs --> -pÜt - = -MACH_PORT_NULL -; - -152 -”r - = 0; - -153 -i -++; - -157 iŕ( -ˇ© -. -ˇ_šo - =đ -und”lyšg_node_ˇ© -.st_ino - -158 && -ˇ© -. -ˇ_fsid - =đ -und”lyšg_node_ˇ© -.st_fsid) - -160 -”r - = -ELOOP -; - -163 - `pÜt_d—Îoc - ( -pÜt -); - -164 -”r - = - `fže_lookup - (( -roŮ_ulfs - + -i -)-> -pÜt -, -·th -, - -165 -O_READ -, 0, 0, & -pÜt -, & -ˇ© -); - -168 iŕ( -”r -) - -170 -pÜt - = -MACH_PORT_NULL -; - -171 -”r - = 0; - -173 -node_ulfs --> -pÜt - =…ort; - -175 -i -++; - -178 - `ä“ - ( -·th -); - -179 -node --> - --> -ćags - |đ -FLAG_NODE_ULFS_UPTODATE -; - -181 - `mu‹x_uĆock - (& -Ătfs_roŮ_node --> -lock -); - -183  -”r -; - -184 - } -} - -188 -”rÜ_t - - -189 - $node_dś_»move - ( -node_t - * -dś -, * -Çme -) - -191 -”rÜ_t - -”r - = 0; - -193 - `node_ulfs_™”©e_»v”Ł_uĆocked - ( -dś -) - -195 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -198 -”r - = - `dś_rmdś - ( -node_ulfs --> -pÜt -, -Çme -); - -199 iŕ(( -”r -č&& (”¸!đ -ENOENT -)) - -203  -”r -; - -204 - } -} - -208 -”rÜ_t - - -209 - $node_dś_ü—‹ - ( -node_t - * -dś -, * -Çme -, -mode_t - -mode -) - -211 -”rÜ_t - -”r - = 0; - -213 - `node_ulfs_™”©e_uĆocked - ( -dś -) - -215 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -218 -”r - = - `dś_mkdś - ( -node_ulfs --> -pÜt -, -Çme -, -mode -); - -220 iŕ((! -”r -č|| (”¸=đ -EEXIST -č|| (”¸=đ -ENOTDIR -)) - -224  -”r -; - -225 - } -} - -229 -”rÜ_t - - -230 - $node_uĆšk_fže - ( -node_t - * -dś -, * -Çme -) - -232 -mach_pÜt_t - -p -; - -233  -ˇ© - stat; - -234 -”rÜ_t - -”r - = 0; - -235  -»moved - = 0; - -242 - `node_ulfs_™”©e_»v”Ł_uĆocked - ( -dś -) - -245 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -248 -”r - = - `fže_lookup - ( -node_ulfs --> -pÜt -, -Çme -, - -249 -O_NOTRANS -, O_NOTRANS, - -250 0, & -p -, & -ˇ© -); - -252 - `pÜt_d—Îoc - ( -p -); - -254 iŕ( -”r - =đ -ENOENT -) - -256 -”r - = 0; - -260 iŕ( -”r -) - -263 -”r - = - `dś_uĆšk - ( -node_ulfs --> -pÜt -, -Çme -); - -264 iŕ(( -”r -č&& (”¸!đ -ENOENT -)) - -267 iŕ(! -”r -) - -268 -»moved -++; - -272 iŕ((! -”r -č&& (! -»moved -)) - -273 -”r - = -ENOENT -; - -275  -”r -; - -276 - } -} - -281 -”rÜ_t - - -282 - $node_lookup_fže - ( -node_t - * -dś -, * -Çme -,  -ćags -, - -283 -fže_t - * -pÜt -,  -ˇ© - * -s -) - -285 -”rÜ_t - -”r - = -ENOENT -; - -286  -ˇ© - stat; - -287 -fže_t - -p -; - -289 - `node_ulfs_™”©e_uĆocked - ( -dś -) - -292 iŕ( -”r - !đ -ENOENT -) - -295 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -298 -”r - = - `fže_lookup - ( -node_ulfs --> -pÜt -, -Çme -, - -299 -ćags - | -O_NOTRANS -, O_NOTRANS, - -300 0, & -p -, & -ˇ© -); - -301 iŕ( -”r -) - -304 iŕ( -ˇ© -. -ˇ_šo - =đ -und”lyšg_node_ˇ© -.st_ino - -305 && -ˇ© -. -ˇ_fsid - =đ -und”lyšg_node_ˇ© -.st_fsid) - -307 -”r - = -ELOOP -; - -311 - `pÜt_d—Îoc - ( -p -); - -312 -”r - = - `fže_lookup - ( -node_ulfs --> -pÜt -, -Çme -, - -313 -ćags -, 0, 0, & -p -, & -ˇ© -); - -317 iŕ(! -”r -) - -319 * -s - = -ˇ© -; - -320 * -pÜt - = -p -; - -323  -”r -; - -324 - } -} - -329 - $node_ulfs_ä“ - ( -node_t - * -node -) - -332 - `node_ulfs_™”©e_uĆocked - ( -node -) - -334 iŕ( - `pÜt_v®id - ( -node_ulfs --> -pÜt -) - -335 && -node_ulfs --> -pÜt - !đ -und”lyšg_node -) - -336 - `pÜt_d—Îoc - ( -node_ulfs --> -pÜt -); - -339 - `ä“ - ( -node --> - --> -ulfs -); - -340 - } -} - -344 -”rÜ_t - - -345 - $node_ulfs_š™ - ( -node_t - * -node -) - -347 -node_ulfs_t - * -ulfs_Ăw -; - -348 -”rÜ_t - -”r - = 0; - -350 -ulfs_Ăw - = - `m®loc - ( -ulfs_num - *  ( -node_ulfs_t -)); - -351 iŕ(! -ulfs_Ăw -) - -353 -”r - = -ENOMEM -; - -354  -”r -; - -357 iŕ( -node --> - --> -ulfs -) - -358 - `node_ulfs_ä“ - ( -node -); - -360 -node --> - --> -ulfs - = -ulfs_Ăw -; - -361 -node --> - --> -ulfs_num - = ulfs_num; - -363 - `node_ulfs_™”©e_uĆocked - ( -node -) - -365 -node_ulfs --> -ćags - = 0; - -366 -node_ulfs --> -pÜt - = -pÜt_nuÎ -; - -369  -”r -; - -370 - } -} - -374 -”rÜ_t - - -375 - $node_’Ś›s_g‘ - ( -node_t - * -node -, -node_dś’t_t - ** -dś’ts -) - -377  -dś’t - ** -dś’t_liˇ -, **dirent; - -378 -node_dś’t_t - * -node_dś’t_liˇ - = -NULL -; - -379 -size_t - -dś’t_d©a_size -; - -380 * -dś’t_d©a -; - -381 -”rÜ_t - -”r - = 0; - -386 -”rÜ_t - - `node_dś’t_add - (* -Çme -, -šo_t - -fž’o -,  -tył -) - -388 -”rÜ_t - -e - = 0; - -389 -node_dś’t_t - * -node_dś’t -; - -390 -node_dś’t_t - * -node_dś’t_Ăw -; - -391  -dś’t - * -dś’t_Ăw -; - -392  -Çme_Ën - = - `ˇľ’ - ( -Çme -); - -393  -size - = - `DIRENT_LEN - ( -Çme_Ën -); - -396  -node_dś’t - = -node_dś’t_liˇ -; - -397 -node_dś’t - && - `ˇrcmp - (node_dś’t-> -dś’t --> -d_Çme -, -Çme -); - -398 -node_dś’t - =‚ode_dś’t-> -Ăxt -); - -400 iŕ( -node_dś’t -) - -404 -node_dś’t --> -dś’t --> -d_fž’o - = -fž’o -; - -405 -node_dś’t --> -dś’t --> -d_tył - = -tył -; - -406  -e -; - -411 -node_dś’t_Ăw - = - `m®loc - ( ( -node_dś’t_t -)); - -412 iŕ(! -node_dś’t_Ăw -) - -414 -e - = -ENOMEM -; - -415  -e -; - -418 -dś’t_Ăw - = - `m®loc - ( -size -); - -419 iŕ(! -dś’t_Ăw -) - -421 - `ä“ - ( -node_dś’t_Ăw -); - -422 -e - = -ENOMEM -; - -423  -e -; - -427 -dś’t_Ăw --> -d_fž’o - = -fž’o -; - -428 -dś’t_Ăw --> -d_tył - = -tył -; - -429 -dś’t_Ăw --> -d_»ţ’ - = -size -; - -430 - `ˇrýy - ((*č -dś’t_Ăw - + -DIRENT_NAME_OFFS -, -Çme -); - -433 -node_dś’t_Ăw --> -dś’t - = -dś’t_Ăw -; - -434 -node_dś’t_Ăw --> -Ăxt - = -node_dś’t_liˇ -; - -435 -node_dś’t_liˇ - = -node_dś’t_Ăw -; - -437  -e -; - -440 - `node_ulfs_™”©e_uĆocked -( -node -) - -442 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -445 -”r - = - `dś_’Ś›s_g‘ - ( -node_ulfs --> -pÜt -, & -dś’t_d©a -, - -446 & -dś’t_d©a_size -, & -dś’t_liˇ -); - -447 iŕ( -”r -) - -450  -dś’t - = -dś’t_liˇ -; (! -”r -) && *dirent; dirent++) - -451 iŕ( - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, ".") - -452 && - `ˇrcmp - ((* -dś’t -)-> -d_Çme -, "..")) - -453 -”r - = - `node_dś’t_add - ((* -dś’t -)-> -d_Çme -, - -454 (* -dś’t -)-> -d_fž’o -, - -455 (* -dś’t -)-> -d_tył -); - -457 - `ä“ - ( -dś’t_liˇ -); - -458 - `munm­ - ( -dś’t_d©a -, -dś’t_d©a_size -); - -461 iŕ( -”r -) - -462 - `node_’Ś›s_ä“ - ( -node_dś’t_liˇ -); - -464 * -dś’ts - = -node_dś’t_liˇ -; - -466  -”r -; - -467 - } -} - -471 - $node_’Ś›s_ä“ - ( -node_dś’t_t - * -dś’ts -) - -473 -node_dś’t_t - * -dś’t -, * -dś’t_Ăxt -; - -475  -dś’t - = -dś’ts -; dś’t; dś’đ -dś’t_Ăxt -) - -477 -dś’t_Ăxt - = -dś’t --> -Ăxt -; - -478 - `ä“ - ( -dś’t -->dirent); - -479 - `ä“ - ( -dś’t -); - -481 - } -} - -485 -”rÜ_t - - -486 - $node_ü—‹_roŮ - ( -node_t - ** -roŮ_node -) - -488 -Ęode_t - * -Ęode -; - -489 -node_t - * -node -; - -490 -”rÜ_t - -”r - = 0; - -492 -”r - = - `Ęode_ü—‹ - ( -NULL -, & -Ęode -); - -493 iŕ( -”r -) - -494  -”r -; - -496 -”r - = - `node_ü—‹ - ( -Ęode -, & -node -); - -497 iŕ( -”r -) - -499 - `Ęode_deˇroy - ( -Ęode -); - -500  -”r -; - -503 - `mu‹x_uĆock - (& -Ęode --> -lock -); - -504 * -roŮ_node - = -node -; - -505  -”r -; - -506 - } -} - -511 -”rÜ_t - - -512 - $node_š™_roŮ - ( -node_t - * -node -) - -514 -”rÜ_t - -”r -; - -515 -ulfs_t - * -ulfs -; - -516  -i - = 0; - -518 - `mu‹x_lock - (& -ulfs_lock -); - -520 -”r - = - `node_ulfs_š™ - ( -node -); - -521 iŕ( -”r -) - -523 - `mu‹x_uĆock - (& -ulfs_lock -); - -524  -”r -; - -527 - `node_ulfs_™”©e_uĆocked - ( -node -) - -530 iŕ( -”r -) - -533 -”r - = - `ulfs_g‘_num - ( -i -, & -ulfs -); - -534 iŕ( -”r -) - -537 iŕ( -ulfs --> -·th -) - -538 -node_ulfs --> -pÜt - = - `fže_Çme_lookup - ( -ulfs --> -·th -, - -539 -O_READ - | -O_DIRECTORY -, 0); - -541 -node_ulfs --> -pÜt - = -und”lyšg_node -; - -543 iŕ(! - `pÜt_v®id - ( -node_ulfs --> -pÜt -)) - -545 -”r - = -”şo -; - -549 -node_ulfs --> -ćags - |đ -FLAG_NODE_ULFS_FIXED -; - -550 -i -++; - -553 - `mu‹x_uĆock - (& -ulfs_lock -); - -554  -”r -; - -555 - } -} - - @node.h - -22 #iâdeŕ -INCLUDED_NODE_H - - -23  - #INCLUDED_NODE_H - - - ) - -25  - ~<”rÜ.h -> - -26  - ~ - -27  - ~ - -29  -node - - tnode_t -; - -31  - ~"Ęode.h -" - -34  - snode_ulfs - - -36  - mćags -; - -38 -fže_t - - mpÜt -; - -41  -node_ulfs - - tnode_ulfs_t -; - -46  - #FLAG_NODE_ULFS_FIXED - 0x00000001 - - ) - -48  - sĂŠode - - -50 -Ęode_t - * - mĘode -; - -52  - mćags -; - -53 -node_ulfs_t - * - mulfs -; - -55  - mulfs_num -; - -56 -node_t - * - mn˙che_Ăxt -; - -57 -node_t - * - mn˙che_´ev -; - -59  -ĂŠode - - tĂŠode_t -; - -62  - #FLAG_NODE_INVALIDATE - 0x00000001 - - ) - -63  - #FLAG_NODE_ULFS_UPTODATE - 0x00000002 - - ) - -65  - snode_dś’t - - -67  -dś’t - * - mdś’t -; - -68  -node_dś’t - * - mĂxt -; - -69 } - tnode_dś’t_t -; - -73 -”rÜ_t - -node_ü—‹ - ( -Ęode_t - * -Ęode -, -node_t - ** -node -); - -77  -node_deˇroy - ( -node_t - * -node -); - -81 -”rÜ_t - -node_upd©e - ( -node_t - * -node -); - -85 -”rÜ_t - -node_dś_ü—‹ - ( -node_t - * -dś -, * -Çme -, -mode_t - -mode -); - -89 -”rÜ_t - -node_dś_»move - ( -node_t - * -dś -, * -Çme -); - -93 -”rÜ_t - -node_uĆšk_fže - ( -node_t - * -dś -, * -Çme -); - -98 -”rÜ_t - -node_lookup_fže - ( -node_t - * -dś -, * -Çme -,  -ćags -, - -99 -fže_t - * -pÜt -,  -ˇ© - *stat); - -103 -”rÜ_t - -node_ulfs_š™ - ( -node_t - * -node -); - -107 -”rÜ_t - -node_’Ś›s_g‘ - ( -node_t - * -node -, -node_dś’t_t - ** -dś’ts -); - -110  -node_’Ś›s_ä“ - ( -node_dś’t_t - * -dś’ts -); - -114 -”rÜ_t - -node_ü—‹_roŮ - ( -node_t - ** -roŮ_node -); - -118 -”rÜ_t - -node_š™_roŮ - ( -node_t - * -node -); - -121  - #node_is_roŮ -( -node -čŇode)-> - --> -Ęode --> -dś - ? 0 : 1 - - ) - -125  - #node_ulfs_™”©e_uĆocked -( -node -) \ - -126  -node_ulfs_t - * -node_ulfs - = ( -node -)-> - --> -ulfs -; \ - -127 -node_ulfs - < ( -node -)-> - --> -ulfs - + (node)->Â-> -ulfs_num -; \ - -128 -node_ulfs -++) - - ) - -130  - #node_ulfs_™”©e_»v”Ł_uĆocked -( -node -) \ - -131  -node_ulfs_t - * -node_ulfs - = ( -node -)-> - --> -ulfs - + (node)->Â-> -ulfs_num - - 1;\ - -132 -node_ulfs - >đ( -node -)-> - --> -ulfs -; \ - -133 -node_ulfs ---) - - ) - - @options.c - -22  - #_GNU_SOURCE - - - ) - -24  - ~<¬gp.h -> - -25  - ~<”rÜ.h -> - -27  - ~"ÝtiÚs.h -" - -28  - ~"ulfs.h -" - -29  - ~"n˙che.h -" - -30  - ~"uniÚfs.h -" - -31  - ~"node.h -" - -32  - ~"v”siÚ.h -" - -33  - ~"·‰”n.h -" - -34  - ~"ˇow.h -" - -35  - ~"upd©e.h -" - -41  - g·rsšg_ˇ¬tup_ÝtiÚs_fšished -; - -44 cÚˇ  -¬gp_ÝtiÚ - - g¬gp_commÚ_ÝtiÚs -[] = - -46 { -OPT_LONG_UNDERLYING -, -OPT_UNDERLYING -, 0, 0, - -48 { -OPT_LONG_WRITABLE -, -OPT_WRITABLE -, 0, 0, - -50 { -OPT_LONG_DEBUG -, -OPT_DEBUG -, 0, -OPTION_HIDDEN -, - -52 { -OPT_LONG_CACHE_SIZE -, -OPT_CACHE_SIZE -, "SIZE", 0, - -55 { -OPT_LONG_STOW -, -OPT_STOW -, "STOWDIR", 0, - -57 { -OPT_LONG_PRIORITY -, -OPT_PRIORITY -, "VALUE", 0, - -59 { -OPT_LONG_PATTERN -, -OPT_PATTERN -, "PATTERN", 0, - -61 { -OPT_LONG_REMOVE -, -OPT_REMOVE -, 0, 0, - -63 { -OPT_LONG_ADD -, -OPT_ADD -, 0, 0, - -69 cÚˇ  -¬gp_ÝtiÚ - - g¬gp_ˇ¬tup_ÝtiÚs -[] = - -75  -”rÜ_t - - -76 - $¬gp_·rŁ_commÚ_ÝtiÚs - ( -key -, * -¬g -,  -¬gp_ˇ©e - * -ˇ©e -) - -78  -ulfs_ćags - = 0, -ulfs_mode - = 0, -ulfs_modif›d - = 0, - -79 -ulfs_m©ch - = 0, -ulfs_´iÜ™y - = 0; - -80  -·‰”Ćiˇ - -ulfs_·‰”Ćiˇ - = - -82 . -lock - = -MUTEX_INITIALIZER -, - -83 . -h—d - = -NULL - - -85 -”rÜ_t - -”r - = 0; - -87  -key -) - -89  -OPT_WRITABLE -: - -90 -ulfs_ćags - |đ -FLAG_ULFS_WRITABLE -; - -93  -OPT_PRIORITY -: - -94 -ulfs_´iÜ™y - = - `ˇąŢ - ( -¬g -, -NULL -, 10); - -97  -OPT_DEBUG -: - -98 -uniÚfs_ćags - |đ -FLAG_UNIONFS_MODE_DEBUG -; - -101  -OPT_CACHE_SIZE -: - -102 -n˙che_size - = - `ˇąŢ - ( -¬g -, -NULL -, 10); - -105  -OPT_ADD -: - -106 -ulfs_mode - = -ULFS_MODE_ADD -; - -109  -OPT_REMOVE -: - -110 -ulfs_mode - = -ULFS_MODE_REMOVE -; - -113  -OPT_PATTERN -: - -114 -ulfs_m©ch - = 1; - -115 - `·‰”Ćiˇ_add - (& -ulfs_·‰”Ćiˇ -, -¬g -); - -118  -OPT_STOW -: - -119 -”r - = - `ˇow_dśadd - ( -¬g -, -ulfs_ćags -, & -ulfs_·‰”Ćiˇ -, -ulfs_´iÜ™y -); - -120 iŕ( -”r -) - -121 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "stow_diradd"); - -122 -ulfs_modif›d - = 1; - -123 -ulfs_ćags - = -ulfs_mode - = -ulfs_´iÜ™y - = 0; - -124 -ulfs_m©ch - = 0; - -127  -OPT_UNDERLYING -: - -128  -ARGP_KEY_ARG -: - -130 iŕ( -ulfs_mode - =đ -ULFS_MODE_REMOVE -) - -132 -”r - = - `ulfs_uÄegiˇ” - ( -¬g -); - -133 iŕ( -”r - =đ -ENOENT -) - -136 -”r - = 0; - -139 -”r - = - `ulfs_»giˇ” - ( -¬g -, -ulfs_ćags -, -ulfs_´iÜ™y -); - -140 iŕ( -”r -) - -141 - `”rÜ - ( -EXIT_FAILURE -, -”r -, "ulfs_register"); - -142 -ulfs_modif›d - = 1; - -143 -ulfs_ćags - = -ulfs_mode - = -ulfs_´iÜ™y - = 0; - -144 -ulfs_m©ch - = 0; - -147  -ARGP_KEY_END -: - -148 -ulfs_ćags - = -ulfs_mode - = 0; - -149 iŕ( -ulfs_modif›d - && -·rsšg_ˇ¬tup_ÝtiÚs_fšished -) - -151 - `roŮ_upd©e_scheduË - (); - -155 - `n˙che_»Łt - (); - -157 -ulfs_modif›d - = 0; - -159 iŕ(! -·rsšg_ˇ¬tup_ÝtiÚs_fšished -) - -160 -·rsšg_ˇ¬tup_ÝtiÚs_fšished - = 1; - -164 -”r - = -ARGP_ERR_UNKNOWN -; - -168  -”r -; - -169 - } -} - -172  -”rÜ_t - - -173 - $¬gp_·rŁ_ˇ¬tup_ÝtiÚs - ( -key -, * -¬g -,  -¬gp_ˇ©e - * -ˇ©e -) - -175 -”rÜ_t - -”r - = 0; - -177  -key -) - -180 -”r - = -ARGP_ERR_UNKNOWN -; - -184  -”r -; - -185 - } -} - -188 cÚˇ  -¬gp - - g¬gp_·rŁr_commÚ_ÝtiÚs - = - -189 { -¬gp_commÚ_ÝtiÚs -, -¬gp_·rŁ_commÚ_ÝtiÚs -, 0, 0, 0 }; - -192  -¬gp - - g¬gp_·rŁr_ˇ¬tup_ÝtiÚs - = - -193 { -¬gp_ˇ¬tup_ÝtiÚs -, -¬gp_·rŁ_ˇ¬tup_ÝtiÚs -, 0, 0, 0 }; - -196 cÚˇ  -¬gp_chžd - - g¬gp_chžd»n_ruÁime -[] = - -198 { & -¬gp_·rŁr_commÚ_ÝtiÚs - }, - -199 { & -Ătfs_ˇd_ruÁime_¬gp - }, - -204 cÚˇ  -¬gp_chžd - - g¬gp_chžd»n_ˇ¬tup -[] = - -206 { & -¬gp_·rŁr_ˇ¬tup_ÝtiÚs - }, - -207 { & -¬gp_·rŁr_commÚ_ÝtiÚs - }, - -208 { & -Ătfs_ˇd_ˇ¬tup_¬gp - }, - -212 cÚˇ * - g¬gp_´ogżm_v”siÚ - = -STANDARD_HURD_VERSION - ( -uniÚfs -); - -213 cÚˇ * - g¬gp_´ogżm_bug_add»ss - = - -216  - #ARGS_DOC - "FILESYSTEMS ..." - - ) - -217  - #DOC - "Hurd uniÚf Łrv”" - - ) - -220  -¬gp - - g¬gp_ruÁime - = - -221 { 0, 0, 0, 0, -¬gp_chžd»n_ruÁime - }; - -224  -¬gp - - g¬gp_ˇ¬tup - = - -225 { 0, 0, -ARGS_DOC -, -DOC -, -¬gp_chžd»n_ˇ¬tup - }; - - @options.h - -23  - #OPT_UNDERLYING - 'u' - - ) - -24  - #OPT_WRITABLE - 'w' - - ) - -25  - #OPT_DEBUG - 'd' - - ) - -26  - #OPT_CACHE_SIZE - 'c' - - ) - -27  - #OPT_REMOVE - 'r' - - ) - -28  - #OPT_ADD - 'a' - - ) - -29  - #OPT_PATTERN - 'm' - - ) - -30  - #OPT_PRIORITY - 'p' - - ) - -31  - #OPT_STOW - 's' - - ) - -34  - #OPT_LONG_UNDERLYING - "und”lyšg" - - ) - -35  - #OPT_LONG_WRITABLE - "wr™abË" - - ) - -36  - #OPT_LONG_DEBUG - "debug" - - ) - -37  - #OPT_LONG_CACHE_SIZE - "˙che-size" - - ) - -38  - #OPT_LONG_REMOVE - "»move" - - ) - -39  - #OPT_LONG_ADD - "add" - - ) - -40  - #OPT_LONG_PATTERN - "m©ch" - - ) - -41  - #OPT_LONG_PRIORITY - "´iÜ™y" - - ) - -42  - #OPT_LONG_STOW - "ˇow" - - ) - -44  - #OPT_LONG -( -o -č"--" - ) -o - -47  -¬gp - -¬gp_ˇ¬tup -; - -50  -¬gp - -¬gp_ruÁime -; - -52  - #ULFS_MODE_ADD - 0 - - ) - -53  - #ULFS_MODE_REMOVE - 1 - - ) - - @pattern.c - -22  - #_GNU_SOURCE - - - ) - -24  - ~ - -25  - ~<ˇdlib.h -> - -26  - ~<âm©ch.h -> - -27  - ~<”şo.h -> - -29  - ~"·‰”n.h -" - -32 -”rÜ_t - - -33 - $·‰”Ćiˇ_add - ( -·‰”Ćiˇ - * -liˇ -, * -·‰”n -) - -35 -”rÜ_t - -”r - = 0; - -36  -·‰”n - * -liˇ’Śy -; - -37 * -dup -; - -39 iŕ( -·‰”n - =đ -NULL -) - -40 -”r - = -EINVAL -; - -42 iŕ( -”r -) - -43  -”r -; - -45 -dup - = - `ˇrdup - ( -·‰”n -); - -46 iŕ( -dup - =đ -NULL -) - -47 -”r - = -ENOMEM -; - -49 iŕ( -”r -) - -50  -”r -; - -52 -liˇ’Śy - = - `m®loc - ( ( -·‰”n -)); - -53 iŕ( -liˇ’Śy - =đ -NULL -) - -54 -”r - = -ENOMEM -; - -56 iŕ( -”r -) - -57  -”r -; - -59 -liˇ’Śy --> -·‰”n - = -dup -; - -61 - `mu‹x_lock - (& ( -liˇ --> -lock -)); - -62 iŕ( -liˇ --> -h—d - =đ -NULL -) - -64 -liˇ --> -h—d - = -liˇ’Śy -; - -65 -liˇ’Śy --> -Ăxt - = -NULL -; - -69 -liˇ’Śy --> -Ăxt - = -liˇ --> -h—d -; - -70 -liˇ --> -h—d - = -liˇ’Śy -; - -72 - `mu‹x_uĆock - (& ( -liˇ --> -lock -)); - -74  -”r -; - -75 - } -} - -80 - $·‰”Ćiˇ_m©ch - ( -·‰”Ćiˇ - * -liˇ -, * -ˇršg -) - -82  -·‰”n - * -±r -; - -83 -”rÜ_t - -”r - = ~0; - -85 -±r - = -liˇ --> -h—d -; - -87 - `mu‹x_lock - (& -liˇ --> -lock -); - -88  -±r - !đ -NULL -) - -90 -”r - = - `âm©ch - ( -±r --> -·‰”n -, -ˇršg -, -FNM_FILE_NAME -); - -92 iŕ(! -”r -) - -95 -±r - =…Ś-> -Ăxt -; - -97 - `mu‹x_uĆock - (& -liˇ --> -lock -); - -99  -”r -; - -100 - } -} - -104 - $·‰”Ćiˇ_deˇroy - ( -·‰”Ćiˇ - * -liˇ -) - -106  -·‰”n - * -Ăxt -, * -±r - = -liˇ --> -h—d -; - -108 - `mu‹x_lock - (& ( -liˇ --> -lock -)); - -109  -±r - !đ -NULL -) - -111 -Ăxt - = -±r -->next; - -113 - `ä“ - ( -±r -); - -115 -±r - = -Ăxt -; - -117 - `mu‹x_uĆock - (& ( -liˇ --> -lock -)); - -118 - } -} - -122 - $·‰”Ćiˇ_iŁm±y - ( -·‰”Ćiˇ - * -liˇ -) - -124  -»t -; - -126 - `mu‹x_lock - (& ( -liˇ --> -lock -)); - -127 -»t - = ( -liˇ --> -h—d - =đ -NULL -); - -128 - `mu‹x_uĆock - (& ( -liˇ --> -lock -)); - -130  -»t -; - -131 - } -} - - @pattern.h - -22 #iâdeŕ -_PATTERN_H - - -23  - #_PATTERN_H - - - ) - -25  - ~ - -27  - s·‰”n - - -29 * - m·‰”n -; - -31  -·‰”n - * - mĂxt -; - -34  - s·‰”Ćiˇ - - -36  -mu‹x - - mlock -; - -37  -·‰”n - * - mh—d -; - -41 -”rÜ_t - -·‰”Ćiˇ_add - ( -·‰”Ćiˇ - * -liˇ -, * -·‰”n -); - -45  -·‰”Ćiˇ_m©ch - ( -·‰”Ćiˇ - * -liˇ -, * -ˇršg -); - -48  -·‰”Ćiˇ_deˇroy - ( -·‰”Ćiˇ - * -liˇ -); - -51  -·‰”Ćiˇ_iŁm±y - ( -·‰”Ćiˇ - * -liˇ -); - - @stow-mutations.h - -23  - #FS_NOTIFY_INTRAN - -ˇow_nŮify_t - - `begš_usšg_nŮify_pÜt - ( -fs_nŮify_t -) - - ) - -24  - #FS_NOTIFY_DESTRUCTOR - - `’d_usšg_nŮify_pÜt - ( -ˇow_nŮify_t -) - - ) - -26  - #FS_NOTIFY_IMPORTS - -impÜt - "ˇow-´iv.h"; - - ) - - @stow-priv.h - -20 #iâdeŕ -__STOW_PRIVDATA_H__ - - -21  - #__STOW_PRIVDATA_H__ - - - ) - -23  - ~ - -25  - sˇow_nŮify - - -27  -pÜt_šfo - - mpi -; - -29 * - mdś_Çme -; - -30  -ˇow_´ivd©a - * - m´iv -; - -32  -ˇow_nŮify - * - tˇow_nŮify_t -; - -37 -ˇow_nŮify_t - -begš_usšg_nŮify_pÜt - ( -fs_nŮify_t - -pÜt -); - -43  -’d_usšg_nŮify_pÜt - ( -ˇow_nŮify_t - -üed -); - - @stow.c - -23  - #_GNU_SOURCE - - - ) - -25  - ~<¬gp.h -> - -26  - ~<”rÜ.h -> - -28  - ~"ulfs.h -" - -29  - ~"lib.h -" - -30  - ~"·‰”n.h -" - -31  - ~"upd©e.h -" - -33  - sˇow_´ivd©a - - -35  -·‰”Ćiˇ - * - m·‰”Ćiˇ -; - -36  - mćags -; - -37  - m´iÜ™y -; - -38  -mu‹x - - mlock -; - -41  -”rÜ_t - - -42 - $_ˇow_»giˇ”m©chšgdśs - (* -¬g -, * -dś·th -, * -´iv -) - -44 -”rÜ_t - -”r - = 0; - -45 * -fž•©h -; - -47  -ˇow_´ivd©a - * -´ivd©a - = (ˇow_´ivd©¨*č -´iv - ; - -49 -”r - = - `·‰”Ćiˇ_m©ch - ( -´ivd©a --> -·‰”Ćiˇ -, -¬g -); - -50 iŕ( -”r -) - -53 -fž•©h - = - `make_fž•©h - ( -dś·th -, -¬g -); - -55 -”r - = - `ulfs_»giˇ” - ( -fž•©h -, -´ivd©a --> -ćags -,…rivd©a-> -´iÜ™y -); - -57 - `ä“ - ( -fž•©h -); - -59 iŕ( -”r -) - -60  -”r -; - -63 - } -} - -65  -”rÜ_t - - -66 - $_ˇow_s˙nˇow’Śy - (* -¬g -, * -dś·th -, * -´iv -) - -68 * -fž•©h - = -dś·th -; - -69 -”rÜ_t - -”r -; - -71  -ˇow_´ivd©a - * -´ivd©a - = (ˇow_´ivd©¨*č -´iv - ; - -73 iŕ( -dś·th -) - -75 * -tmp -; - -76 -tmp - = - `make_fž•©h - ( -dś·th -, -¬g -); - -77 -fž•©h - = - `make_fž•©h - ( -tmp -, "/"); - -78 - `ä“ - ( -tmp -); - -81 - `mu‹x_lock - (& -´ivd©a --> -lock -); - -83 iŕ( - `·‰”Ćiˇ_iŁm±y - ( -´ivd©a --> -·‰”Ćiˇ -)) - -86 -”r - = - `ulfs_»giˇ” - ( -fž•©h -, -´ivd©a --> -ćags -,…rivd©a-> -´iÜ™y -); - -87 iŕ( -”r -) - -89 - `mu‹x_uĆock - (& -´ivd©a --> -lock -); - -90  -”r -; - -96 -”r - = - `fÜ_—ch_subdś_´iv - ( -fž•©h -, -_ˇow_»giˇ”m©chšgdśs -, -´iv -); - -97 iŕ( -”r -) - -99 - `mu‹x_uĆock - (& -´ivd©a --> -lock -); - -100 - `ä“ - ( -fž•©h -); - -101  -”r -; - -105 - `ä“ - ( -fž•©h -); - -106 - `mu‹x_uĆock - (& -´ivd©a --> -lock -); - -107  -”r -; - -108 - } -} - -113  - ~<ůh»ads.h -> - -114  - ~ - -116  - ~"ˇow-´iv.h -" - -117  - ~"n˙che.h -" - -119  -pÜt_buck‘ - * - gˇow_pÜt_buck‘ -; - -120  -pÜt_ţass - * - gˇow_pÜt_ţass -; - -122  -”rÜ_t - - -123 - $_ˇow_nŮify_š™ -(* -dś_Çme -, * -´iv -) - -125 -”rÜ_t - -”r -; - -126 -fže_t - -dś_pÜt -; - -127 -mach_pÜt_t - -nŮify_pÜt -; - -128 -ˇow_nŮify_t - -ˇow_nŮify_pÜt -; - -130 -”r - = - `pÜts_ü—‹_pÜt - ( -ˇow_pÜt_ţass -, -ˇow_pÜt_buck‘ -, - -131  (* -ˇow_nŮify_pÜt -), - -132 & -ˇow_nŮify_pÜt -); - -133 iŕ( -”r -) - -134  -”r -; - -136 -ˇow_nŮify_pÜt --> -dś_Çme - = dir_name; - -137 -ˇow_nŮify_pÜt --> -´iv - =…riv; - -139 -dś_pÜt - = - `fže_Çme_lookup - ( -dś_Çme -, 0, 0); - -141 iŕ(! - `pÜt_v®id - ( -dś_pÜt -)) - -142  -ENOENT -; - -145 -nŮify_pÜt - = - `pÜts_g‘_right - ( -ˇow_nŮify_pÜt -); - -147 iŕ(! - `pÜt_v®id - ( -nŮify_pÜt -)) - -149 - `pÜt_d—Îoc - ( -dś_pÜt -); - -150  -EACCES -; - -153 -”r - = - `dś_nŮiű_chŞges - ( -dś_pÜt -, -nŮify_pÜt -, - -154 -MACH_MSG_TYPE_MAKE_SEND -); - -155 iŕ( -”r -) - -157 - `pÜt_d—Îoc - ( -dś_pÜt -); - -158 - `pÜt_d—Îoc - ( -nŮify_pÜt -); - -159  -”r -; - -162  -”r -; - -163 - } -} - -167 -ˇow_nŮify_t - - -168 - $begš_usšg_nŮify_pÜt - ( -fs_nŮify_t - -pÜt -) - -170  - `pÜts_lookup_pÜt - ( -ˇow_pÜt_buck‘ -, -pÜt -, -ˇow_pÜt_ţass -); - -171 - } -} - -177 - $’d_usšg_nŮify_pÜt - ( -ˇow_nŮify_t - -üed -) - -179 iŕ( -üed -) - -180 - `pÜts_pÜt_d”ef - ( -üed -); - -181 - } -} - -184 -k”n_»tuş_t - - -185 - $ˇow_S_fže_chŞged - ( -ˇow_nŮify_t - -nŮify -, -Çtużl_t - -tickno -, - -186 -fže_chŞged_tył_t - -chŞge -, -loff_t - -ˇ¬t -, - -187 -loff_t - -’d -) - -189  -EOPNOTSUPP -; - -190 - } -} - -193 -k”n_»tuş_t - - -194 - $ˇow_S_dś_chŞged - ( -ˇow_nŮify_t - -nŮify -, -Çtużl_t - -tickno -, - -195 -dś_chŞged_tył_t - -chŞge -, -ˇršg_t - -Çme -) - -197 -”rÜ_t - -”r -; - -199 iŕ(! -nŮify - || !nŮify-> -dś_Çme - || !nŮify-> -´iv -) - -200  -EOPNOTSUPP -; - -202  -chŞge -) - -204  -DIR_CHANGED_NULL -: - -206  -DIR_CHANGED_NEW -: - -207 - `roŮ_upd©e_di§bË - (); - -209 -”r - = - `_ˇow_s˙nˇow’Śy - ( -Çme -, -nŮify --> -dś_Çme -,‚Ůify-> -´iv -); - -210 iŕ( -”r -) - -211 - `debug_msg_Łnd - ("s˙nˇow’Śy: %s\n", - `ˇ»ĽÜ - ( -”r -)); - -213 - `roŮ_upd©e_scheduË - (); - -214 - `roŮ_upd©e_’abË - (); - -217  -DIR_CHANGED_UNLINK -: - -218 - `roŮ_upd©e_scheduË - (); - -222 - `debug_msg_Łnd - ("unsupported dir change‚otify"); - -223  -EINVAL -; - -227 - } -} - -231 - $_ˇow_nŮify_th»ad -() - -233  - `ˇow_demux” - ( -mach_msg_h—d”_t - * -šp -, mach_msg_h—d”_* -ouŤ -) - -235  - `ˇow_fs_nŮify_Łrv” - ( -mach_msg_h—d”_t - * -šp -, - -236 -mach_msg_h—d”_t - * -ouŤ -); - -238  ( - `ˇow_fs_nŮify_Łrv” - ( -šp -, -ouŤ -)); - -243 - `pÜts_mŞage_pÜt_Ý”©iÚs_muÉ™h»ad - ( -ˇow_pÜt_buck‘ -, - -244 -ˇow_demux” -, - -250 - } -} - -256 -”rÜ_t - - -257 - $ˇow_dśadd - (* -dś -,  -ćags -,  -·‰”Ćiˇ - *patternlist, - -258  -´iÜ™y -) - -261 -”rÜ_t - -”r -; - -262  -ˇow_´ivd©a - * -my´iv -; - -263  -dś_Ën -; - -265 -dś_Ën - = - `ˇľ’ -( -dś -); - -266 iŕ( -dś_Ën - == 0) - -268  -EOPNOTSUPP -; - -271 iŕ( -dś -[ -dś_Ën - - 1 ] != '/') - -273 * -tmp -; - -275 -tmp - = (*č - `m®loc - ( -dś_Ën - + 1); - -277 iŕ( -tmp - =đ -NULL -) - -278  -ENOMEM -; - -280 - `ˇşýy - ( -tmp -, -dś -, -dś_Ën -); - -282 -tmp -[ -dś_Ën -] = '/'; - -284 -dś - = -tmp -; - -287 -my´iv - = - `m®loc - ( ( -ˇow_´ivd©a -)); - -288 iŕ(! -my´iv -) - -290 - `ä“ - ( -dś -); - -291  -ENOMEM -; - -294 -my´iv --> -·‰”Ćiˇ - =…atternlist; - -295 -my´iv --> -ćags - = flags; - -296 -my´iv --> -´iÜ™y - =…riority; - -297 - `mu‹x_š™ - (& -my´iv --> -lock -); - -299 -”r - = - `fÜ_—ch_subdś_´iv - ( -dś -, -_ˇow_s˙nˇow’Śy -, (*) -my´iv -); - -300 iŕ( -”r -) - -303  -”r -; - -306 -”r - = - `_ˇow_nŮify_š™ - ( -dś -, -my´iv -); - -307 - `asŁą - (! -”r -); - -309  -”r -; - -310 - } -} - -312 -”rÜ_t - - -313 - $ˇow_š™ - () - -315 -”rÜ_t - -”r - = 0; - -317 -ˇow_pÜt_buck‘ - = - `pÜts_ü—‹_buck‘ - (); - -318 iŕ(! -ˇow_pÜt_buck‘ -) - -319  -”şo -; - -321 -ˇow_pÜt_ţass - = - `pÜts_ü—‹_ţass - ( -NULL -, NULL); - -322 iŕ(! -ˇow_pÜt_ţass -) - -323  -”şo -; - -325 - `ůh»ad_d‘ach - ( - `ůh»ad_fÜk - ( ( -ůh»ad_â_t -) -_ˇow_nŮify_th»ad -, 0)); - -327  -”r -; - -328 - } -} - - @stow.h - -22 #iâdeŕ -_STOW_H - - -23  - #_STOW_H - - - ) - -25  - ~"·‰”n.h -" - -27 -”rÜ_t - -ˇow_š™ - (); - -28 -”rÜ_t - -ˇow_dśadd - (*, ,  -·‰”Ćiˇ - *, ); - - @ulfs.c - -22  - #_GNU_SOURCE - - - ) - -24  - ~ - -25  - ~<ˇdlib.h -> - -26  - ~<”rÜ.h -> - -27  - ~<ˇršg.h -> - -29  - ~"uniÚfs.h -" - -30  - ~ - -32  - ~"lib.h -" - -33  - ~"ulfs.h -" - -36 -ulfs_t - * - gulfs_chaš_ˇ¬t -; - -40 -ulfs_t - * - gulfs_chaš_’d -; - -43  - gulfs_num -; - -46  -mu‹x - - gulfs_lock - = -MUTEX_INITIALIZER -; - -49  -”rÜ_t - - -50 - $ulfs_ü—‹ - (* -·th -, -ulfs_t - ** -ulfs -) - -52 -ulfs_t - * -ulfs_Ăw - = - `m®loc - ( (ulfs_t)); - -53 -”rÜ_t - -”r - = 0; - -55 iŕ(! -ulfs_Ăw -) - -56 -”r - = -ENOMEM -; - -59 * -·th_ý - = -·th - ? - `ˇrdup - (·thč: -NULL -; - -61 iŕ( -·th - && (! -·th_ý -)) - -63 -”r - = -ENOMEM -; - -64 - `ä“ - ( -ulfs_Ăw -); - -68 -ulfs_Ăw --> -·th - = -·th_ý -; - -69 -ulfs_Ăw --> -ćags - = 0; - -70 -ulfs_Ăw --> -Ăxt - = -NULL -; - -71 -ulfs_Ăw --> -´ev - = -NULL -; - -72 * -ulfs - = -ulfs_Ăw -; - -75  -”r -; - -76 - } -} - -80 - $ulfs_deˇroy - ( -ulfs_t - * -ulfs -) - -82 - `ä“ - ( -ulfs --> -·th -); - -83 - `ä“ - ( -ulfs -); - -84 - } -} - -89 - $ulfs_šˇ®l - ( -ulfs_t - * -ulfs -) - -91 -ulfs_t - * -u - = -ulfs_chaš_ˇ¬t -; - -92  -šŁą_©_’d - = 0; - -93 iŕ( -ulfs_num - == 0) - -95 -ulfs_chaš_ˇ¬t - = -ulfs -; - -100  -u --> -´iÜ™y - > -ulfs -->priority) - -102 iŕ( -u --> -Ăxt - =đ -NULL -) - -104 -šŁą_©_’d - = 1; - -107 -u - = u-> -Ăxt -; - -110 iŕ( -šŁą_©_’d -) - -112 -u --> -Ăxt - = -ulfs -; - -113 -ulfs --> -´ev - = -u -; - -117 iŕ( -u - =đ -ulfs_chaš_ˇ¬t -) - -119 -ulfs_chaš_ˇ¬t - = -ulfs -; - -120 -ulfs --> -Ăxt - = -u -; - -121 -ulfs --> -´ev - = -NULL -; - -122 -u --> -´ev - = -ulfs -; - -126 -ulfs --> -Ăxt - = -u -; - -127 -ulfs --> -´ev - = -u -->prev; - -128 -u --> -´ev --> -Ăxt - = -ulfs -; - -129 -u --> -´ev - = -ulfs -; - -134 - } -} - -138 - $ulfs_unšˇ®l - ( -ulfs_t - * -ulfs -) - -140 iŕ( -ulfs - =đ -ulfs_chaš_ˇ¬t -) - -141 -ulfs_chaš_ˇ¬t - = -ulfs --> -Ăxt -; - -143 iŕ( -ulfs --> -Ăxt -) - -144 -ulfs --> -Ăxt --> -´ev - = ulfs->prev; - -146 iŕ( -ulfs --> -´ev -) - -147 -ulfs --> -´ev --> -Ăxt - = ulfs->next; - -148 - } -} - -151 -”rÜ_t - - -152 - $ulfs_g‘_num - ( -num -, -ulfs_t - ** -ulfs -) - -154 -”rÜ_t - -”r - = -EINVAL -; - -155 -ulfs_t - * -u -; - -156  -i -; - -158  -u - = -ulfs_chaš_ˇ¬t -, -i - = 0; - -159 -u - && -i - < -num -; - -160 -u - = u-> -Ăxt -, -i -++); - -161 iŕ( -u -) - -163 -”r - = 0; - -164 * -ulfs - = -u -; - -167  -”r -; - -168 - } -} - -171  -”rÜ_t - - -172 - $ulfs_g‘_·th - (* -·th -, -ulfs_t - ** -ulfs -) - -174 -”rÜ_t - -”r - = -ENOENT -; - -175 -ulfs_t - * -u -; - -177  -u - = -ulfs_chaš_ˇ¬t -; - -178 -u - && (! (((! -·th -) &&…ath == u->path) - -179 || ( -·th - && -u -->·th && (! - `ˇrcmp - (path, u->path))))); - -180 -u - = u-> -Ăxt -); - -181 iŕ( -u -) - -183 -”r - = 0; - -184 * -ulfs - = -u -; - -186  -”r -; - -187 - } -} - -189 -”rÜ_t - - -190 -ulfs_fÜ_—ch_und”_´iv - (* -·th_und” -, - -191 - $”rÜ_t - (* -func -) (*, *, *), - -192 * -´iv -) - -194 -”rÜ_t - -”r - = 0; - -195 -ulfs_t - * -u -; - -196 -size_t - -Ëngth -; - -198 -Ëngth - = - `ˇľ’ - ( -·th_und” -); - -200  -u - = -ulfs_chaš_ˇ¬t -; u; u = u-> -Ăxt -) - -202 iŕ(! -u --> -·th -) - -205 iŕ( - `memcmp - ( -u --> -·th -, -·th_und” -, -Ëngth -)) - -209 - `func - ((*)( -u --> -·th - + -Ëngth -), -·th_und” -, -´iv -); - -212  -”r -; - -213 - } -} - -216 -”rÜ_t - - -217 - $ulfs_»giˇ” - (* -·th -,  -ćags -,  -´iÜ™y -) - -219 -ulfs_t - * -ulfs -; - -220 -”rÜ_t - -”r -; - -222 iŕ( -·th -) - -224 -”r - = - `check_dś - ( -·th -); - -225 iŕ( -”r -) - -226  -”r -; - -229 - `mu‹x_lock - (& -ulfs_lock -); - -230 -”r - = - `ulfs_ü—‹ - ( -·th -, & -ulfs -); - -231 iŕ(! -”r -) - -233 -ulfs --> -ćags - = flags; - -234 -ulfs --> -´iÜ™y - =…riority; - -235 - `ulfs_šˇ®l - ( -ulfs -); - -236 -ulfs_num -++; - -238 - `mu‹x_uĆock - (& -ulfs_lock -); - -239  -”r -; - -240 - } -} - -245 - $ulfs_check - () - -247 -ulfs_t - * -u -; - -248 -fže_t - -p -; - -250  - sulfs_deˇroy - - -252 -ulfs_t - * -ulfs -; - -254  -ulfs_deˇroy - * -Ăxt -; - -255 } * -ulfs_deˇroy_q - = -NULL -; - -257 - `mu‹x_lock - (& -ulfs_lock -); - -259 -u - = -ulfs_chaš_ˇ¬t -; - -260  -u -) - -263 iŕ( -u --> -·th -) - -264 -p - = - `fže_Çme_lookup - ( -u --> -·th -, -O_READ - | -O_DIRECTORY -, 0); - -266 -p - = -und”lyšg_node -; - -268 iŕ(! - `pÜt_v®id - ( -p -)) - -270  -ulfs_deˇroy - * -±r -; - -273 -±r - = - `m®loc - ( ( -ulfs_deˇroy -)); - -274 - `asŁą - ( -±r -); - -276 -±r --> -ulfs - = -u -; - -278 -±r --> -Ăxt - = -ulfs_deˇroy_q -; - -279 -ulfs_deˇroy_q - = -±r -; - -282 -u - = u-> -Ăxt -; - -285  -ulfs_deˇroy_q -) - -287  -ulfs_deˇroy - * -±r -; - -289 -±r - = -ulfs_deˇroy_q -; - -290 -ulfs_deˇroy_q - = -±r --> -Ăxt -; - -292 - `ulfs_unšˇ®l - ( -±r --> -ulfs -); - -293 - `ulfs_deˇroy - ( -±r --> -ulfs -); - -294 -ulfs_num ---; - -296 - `ä“ - ( -±r -); - -299 - `mu‹x_uĆock - (& -ulfs_lock -); - -301 - } -} - -304 -”rÜ_t - - -305 - $ulfs_uÄegiˇ” - (* -·th -) - -307 -ulfs_t - * -ulfs -; - -308 -”rÜ_t - -”r -; - -310 - `mu‹x_lock - (& -ulfs_lock -); - -311 -”r - = - `ulfs_g‘_·th - ( -·th -, & -ulfs -); - -312 iŕ(! -”r -) - -314 - `ulfs_unšˇ®l - ( -ulfs -); - -315 - `ulfs_deˇroy - ( -ulfs -); - -316 -ulfs_num ---; - -318 - `mu‹x_uĆock - (& -ulfs_lock -); - -320  -”r -; - -321 - } -} - - @ulfs.h - -22 #iâdeŕ -INCLUDED_ULFS_H - - -23  - #INCLUDED_ULFS_H - - - ) - -26  - sulfs - - -28 * - m·th -; - -29  - mćags -; - -30  - m´iÜ™y -; - -31  -ulfs - * - mĂxt -, * - m´ev -; - -32 } - tulfs_t -; - -37  - #FLAG_ULFS_WRITABLE - 0x00000001 - - ) - -40 -ulfs_t - * -ulfs_chaš_ˇ¬t -; - -44 -ulfs_t - * -ulfs_chaš_’d -; - -47  -ulfs_num -; - -50  -mu‹x - -ulfs_lock -; - -53 -”rÜ_t - -ulfs_»giˇ” - (* -·th -,  -ćags -,  -´iÜ™y -); - -56 -”rÜ_t - -ulfs_uÄegiˇ” - (* -·th -); - -59 -”rÜ_t - -ulfs_g‘_num - ( -num -, -ulfs_t - ** -ulfs -); - -62  -ulfs_check - (); - -64  - #ulfs_™”©e - \ - -65  -ulfs_t - * -ulfs - = ( - `mu‹x_lock - (& -ulfs_lock -), \ - -66 -ulfs_chaš_ˇ¬t -); \ - -67 -ulfs - || ( - `mu‹x_uĆock - (& -ulfs_lock -), 0); \ - -68 -ulfs - = ulfs-> -Ăxt -) - - ) - -70  - #ulfs_™”©e_uĆocked - \ - -71  -ulfs_t - * -ulfs - = -ulfs_chaš_ˇ¬t -; \ - -72 -ulfs -; \ - -73 -ulfs - = ulfs-> -Ăxt -) - - ) - - @unionfs.h - -44 #iâdeŕ -INCLUDED_UNIONFS_H - - -45  - #INCLUDED_UNIONFS_H - - - ) - -47  - ~ - -48  - ~ - -50  - ~"node.h -" - -51  - ~"lib.h -" - -54  - #NCACHE_SIZE - 256 - - ) - -57  - #UNIONFS_ROOT_INODE - 1 - - ) - -62  - #FLAG_UNIONFS_MODE_DEBUG - 0x00000001 - - ) - -64  - #FLAG_UNIONFS_MODE_COW - 0x00000002 - - ) - -67  -uniÚfs_ćags -; - -70 -pid_t - -fsid -; - -73 vŢ©ž -m­łd_time_v®ue - * -m­time -; - -76 -mach_pÜt_t - -und”lyšg_node -; - -79  -ˇ© - -und”lyšg_node_ˇ© -; - -82  - #debug_msg -( -fmt -, -¬gs -...) \ - -85 iŕ( -uniÚfs_ćags - & -FLAG_UNIONFS_MODE_DEBUG -) \ - -86 - `debug_msg_Łnd - ( -fmt - , ## -¬gs -); \ - -88 0) - - ) - - @update.c - -23  - #_GNU_SOURCE - - - ) - -25  - ~<”şo.h -> - -26  - ~<ˇršg.h -> - -27  - ~<ůh»ads.h -> - -28  - ~ - -30  - ~"n˙che.h -" - -31  - ~"node.h -" - -32  - ~"ulfs.h -" - -37  -rwlock - - gupd©e_rwlock -; - -38  -cÚd™iÚ - - gupd©e_wakeup -; - -39  -mu‹x - - gupd©e_lock -; - -42 - $_roŮ_upd©e_th»ad - () - -44 -”rÜ_t - -”r -; - -48 iŕ( - `hurd_cÚd™iÚ_wa™ - (& -upd©e_wakeup -, & -upd©e_lock -)) - -49 - `mu‹x_uĆock - (& -upd©e_lock -); - -51 - `rwlock_wr™”_lock - (& -upd©e_rwlock -); - -55 - `ulfs_check -(); - -56 -”r - = - `node_š™_roŮ - ( -Ătfs_roŮ_node -); - -58  -”r - =đ -ENOENT -); - -60 iŕ( -”r -) - -62 - `ĺrštf - ( -ˇd”r -, "upd©th»ad: gه %s\n", - `ˇ»ĽÜ - ( -”r -)); - -65 - `n˙che_»Łt - (); - -67 - `rwlock_wr™”_uĆock - (& -upd©e_rwlock -); - -69 - } -} - -72 - $roŮ_upd©e_scheduË - () - -74 - `cÚd™iÚ_sigÇl - (& -upd©e_wakeup -); - -75 - } -} - -78 - $roŮ_upd©e_di§bË - () - -80 - `rwlock_»ad”_lock - (& -upd©e_rwlock -); - -81 - } -} - -84 - $roŮ_upd©e_’abË - () - -86 - `rwlock_»ad”_uĆock - (& -upd©e_rwlock -); - -87 - } -} - -90 - $roŮ_upd©e_š™ -() - -92 - `mu‹x_š™ - (& -upd©e_lock -); - -93 - `rwlock_š™ - (& -upd©e_rwlock -); - -94 - `cÚd™iÚ_š™ - (& -upd©e_wakeup -); - -96 - `ůh»ad_d‘ach - ( - `ůh»ad_fÜk - ( ( -ůh»ad_â_t -) -_roŮ_upd©e_th»ad -, 0)); - -97 - } -} - - @update.h - -20 #iâdeŕ -_UDPATE_H - - -21  - #_UPDATE_H - - - ) - -23  -roŮ_upd©e_scheduË - (); - -24  -roŮ_upd©e_di§bË - (); - -25  -roŮ_upd©e_’abË - (); - -26  -roŮ_upd©e_š™ - (); - - @version.h - -21 #iâdeŕ -HURD_VERSION - - -22  - #HURD_VERSION - "0.3" - - ) - -26  - #STANDARD_HURD_VERSION -( -s -) \ - -27 # " (GNU Hurdč" -HURD_VERSION - - - ) - -28  - #STANDARD_HURD_VERSION_EXTRA -( -s -, -exŚa -) \ - -29 # " (GNU Hurd; " -exŚa - "č" -HURD_VERSION - - - ) - - @/usr/include/assert.h - -42  - ~ - -43 #ifdeŕ -__ýluĄlus - - -44  - ~<ˇdlib.h -> - -52 #undeŕ -asŁą - - -53 #undeŕ -__asŁą - - -55 #ifdeŕ -NDEBUG - - -56  - #asŁą -( -e -č(()0) - - ) - -59 #iâdeŕ -__GNUC__ - - -61 - g__BEGIN_DECLS - - -62 #iâdeŕ -__ýluĄlus - - -63  - $abÜt -(č -__d—d2 -; - -65  - `´štf -(cÚˇ * -__»ˇriů -, ...); - -66 -__END_DECLS - - -68  - #asŁą -( -e -) \ - -69 ((č(( -e -č? 0 : - `__asŁą - (#e, -__FILE__ -, -__LINE__ -))) - - ) - -70  - #__asŁą -( -e -, -fže -, -lše -) \ - -71 (() - `´štf - ("%s:%u: fažed‡sŁąiÚ `%s'\n", -fže -, -lše -, -e -), - `abÜt -()) - - ) - -75 -__BEGIN_DECLS - - -76  - $__asŁą_ąn -(cÚˇ *, cÚˇ *, , cÚˇ *č -__d—d2 -; - -77  - $__•rštf -(cÚˇ *, cÚˇ *, , cÚˇ *č -__d—d2 -; - -78 -__END_DECLS - - -80  - #__asŁą -( -e -, -fže -, -lše -) \ - -81 - `__•rštf - ("%s:%u: fažed‡sŁąiÚ `%s'\n", -fže -, -lše -, -e -) - - ) - -83 #iŕ -__DARWIN_UNIX03 - - -84  - #asŁą -( -e -) \ - -85 ( - `__bužtš_exłů -(!( -e -), 0č? - `__asŁą_ąn -( -__func__ -, -__FILE__ -, -__LINE__ -, #eč: ()0) - - ) - -87  - #asŁą -( -e -) \ - -88 ( - `__bužtš_exłů -(!( -e -), 0č? - `__asŁą - (#e, -__FILE__ -, -__LINE__ -č: ()0) - - ) - - @/usr/include/dirent.h - -58 #iâdeŕ -_DIRENT_H_ - - -59  - #_DIRENT_H_ - - - ) - -65  - ~<_tyłs.h -> - -66  - ~ - -68  - g_‹Îdś -; - -72  - m__dd_fd -; - -73  - m__dd_loc -; - -74  - m__dd_size -; - -75 * - m__dd_buf -; - -76  - m__dd_Ën -; - -77  - m__dd_Łek -; - -78  - m__dd_»wšd -; - -79  - m__dd_ćags -; - -80 -__d¬wš_±h»ad_mu‹x_t - - m__dd_lock -; - -81  -_‹Îdś - * - m__dd_td -; - -82 } - tDIR -; - -84 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -86  - #DIRBLKSIZ - 1024 - - ) - -88  - #dśfd -( -dśp -č((dśp)-> -__dd_fd -) - - ) - -91  - #DTF_HIDEW - 0x0001 - - ) - -92  - #DTF_NODUP - 0x0002 - - ) - -93  - #DTF_REWIND - 0x0004 - - ) - -94  - #__DTF_READALL - 0x0008 - - ) - -98 #iâdeŕ -KERNEL - - -100  - ~ - -102 - g__BEGIN_DECLS - - -103 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -104  - $®phasÜt -(cÚˇ *, cÚˇ *č - `__DARWIN_INODE64 -( -®phasÜt -); - -106  - $ţoŁdś -( -DIR - *č - `__DARWIN_ALIAS -( -ţoŁdś -); - -107 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -108  - `g‘dś’Ś›s -(, *, , *); - -110 -DIR - * - $Ý’dś -(cÚˇ *č - `__DARWIN_ALIAS_I -( -Ý’dś -); - -111 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -112 -DIR - * - $__Ý’dś2 -(cÚˇ *, č - `__DARWIN_ALIAS_I -( -__Ý’dś2 -); - -114  -dś’t - * - $»addś -( -DIR - *č - `__DARWIN_INODE64 -( -»addś -); - -115  - $»addś_r -( -DIR - *,  -dś’t - *, dś’**č - `__DARWIN_INODE64 -( -»addś_r -); - -116  - $»wšddś -( -DIR - *č - `__DARWIN_ALIAS_I -( -»wšddś -); - -117 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -118  - `s˙ndś -(cÚˇ *,  -dś’t - ***, - -119 (*)( -dś’t - *), (*)(cÚˇ *, cÚˇ *)č - `__DARWIN_INODE64 -( -s˙ndś -); - -121  - $Łekdś -( -DIR - *, č - `__DARWIN_ALIAS_I -( -Łekdś -); - -122  - $‹Îdś -( -DIR - *č - `__DARWIN_ALIAS_I -( -‹Îdś -); - -123 -__END_DECLS - - - @/usr/include/errno.h - -23  - ~ - - @/usr/include/fcntl.h - -23  - ~ - - @/usr/include/fnmatch.h - -58 #iâdef -_FNMATCH_H_ - - -59  - #_FNMATCH_H_ - - - ) - -61  - ~ - -63  - #FNM_NOMATCH - 1 - - ) - -65  - #FNM_NOESCAPE - 0x01 - - ) - -66  - #FNM_PATHNAME - 0x02 - - ) - -67  - #FNM_PERIOD - 0x04 - - ) - -69  - #FNM_NOSYS - (-1č - - ) - -71 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -72  - #FNM_LEADING_DIR - 0x08 - - ) - -73  - #FNM_CASEFOLD - 0x10 - - ) - -74  - #FNM_IGNORECASE - -FNM_CASEFOLD - - - ) - -75  - #FNM_FILE_NAME - -FNM_PATHNAME - - - ) - -78 -__BEGIN_DECLS - - -79  - $âm©ch -(cÚˇ *, cÚˇ *, č - `__DARWIN_ALIAS -( -âm©ch -); - -80 -__END_DECLS - - - @/usr/include/stddef.h - -61 #iŕ! -defšed -( -__STDDEF_H__ -) - -63 #iŕ! -defšed -( -__Ăed_wch¬_t -č&& !defšed( -__Ăed_size_t -) \ - -64 && ! -defšed -( -__Ăed_±rdiff_t -č&& !defšed( -__Ăed_NULL -) \ - -65 && ! - $defšed -( -__Ăed_wšt_t -) - -66  - #__STDDEF_H__ - - - ) - -69  - ~<_tyłs.h -> - -71 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_±rdiff_t -) - -72 #iâdeŕ -_PTRDIFF_T - - -73  - #_PTRDIFF_T - - - ) - -74  -__d¬wš_±rdiff_t - - t±rdiff_t -; - -78 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_size_t -) - -79 #iâdef -_SIZE_T - - -80  - #_SIZE_T - - - ) - -83  -__d¬wš_size_t - - tsize_t -; - -87 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_wch¬_t -) - -88 #iâdef -__ýluĄlus - - -89 #iâdef -_WCHAR_T - - -90  - #_WCHAR_T - - - ) - -91  -__d¬wš_wch¬_t - - twch¬_t -; - -96 #iŕ( - `defšed -( -__STDDEF_H__ -č&& !defšed( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -))) \ - -97 || - $defšed -( -__Ăed_wšt_t -) - -98 #iâdef -_WINT_T - - -99  - #_WINT_T - - - ) - -100  -__d¬wš_wšt_t - - twšt_t -; - -104 #iŕ - `defšed -( -__STDDEF_H__ -č|| defšed( -__Ăed_NULL -) - -105 #iâdeŕ -NULL - - -106  - #NULL - -__DARWIN_NULL - - - ) - -110 #ifdeŕ -__STDDEF_H__ - - -111 #iŕ - `defšed -( -__GNUC__ -č&& (__GNUC__ =đ3 && -__GNUC_MINOR__ - >= 5 || __GNUC__ > 3) - -112 #iâdeŕ -__offŁtof - - -113  - #__offŁtof -( -tył -, -f›ld -č - `__bužtš_offŁtof -Ńył, f›ld) - - ) - -115  - #offŁtof -( -tył -, -f›ld -č - `__bužtš_offŁtof -Ńył, f›ld) - - ) - -117 #iâdeŕ -__offŁtof - - -118  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - -120  - #offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - -126 #undeŕ -__Ăed_±rdiff_t - - -127 #undeŕ -__Ăed_size_t - - -128 #undeŕ -__Ăed_wch¬_t - - -129 #undeŕ -__Ăed_wšt_t - - -130 #undeŕ -__Ăed_NULL - - - @/usr/include/stdio.h - -61 #iâdef -_STDIO_H_ - - -62  - #_STDIO_H_ - - - ) - -64  - ~<_tyłs.h -> - -66 #iâdeŕ -_VA_LIST - - -67  - #_VA_LIST - - - ) - -70  -__d¬wš_va_liˇ - - tva_liˇ -; - -73 #iâdef -_OFF_T - - -74  - #_OFF_T - - - ) - -75  -__d¬wš_off_t - - toff_t -; - -78 #iâdef -_SIZE_T - - -79  - #_SIZE_T - - - ) - -80  -__d¬wš_size_t - - tsize_t -; - -83 #iâdeŕ -NULL - - -84  - #NULL - -__DARWIN_NULL - - - ) - -87  -__d¬wš_off_t - - tĺos_t -; - -89  - #_FSTDIO - - - ) - -98  - s__sbuf - { - -99 * - m_baŁ -; - -100  - m_size -; - -104  - g__sFILEX -; - -132  - s__sFILE - { - -133 * - m_p -; - -134  - m_r -; - -135  - m_w -; - -136  - m_ćags -; - -137  - m_fže -; - -138  -__sbuf - - m_bf -; - -139  - m_lbfsize -; - -142 * - m_cook› -; - -143 (* - m_ţoŁ -)(*); - -144 (* - m_»ad -) (*, *, ); - -145 -ĺos_t - (* -_Łek -č(*, - mĺos_t -, ); - -146 (* - m_wr™e -)(*, const *, ); - -149  -__sbuf - - m_ub -; - -150  -__sFILEX - * - m_exŚa -; - -151  - m_ur -; - -154  - m_ubuf -[3]; - -155  - m_nbuf -[1]; - -158  -__sbuf - - m_lb -; - -161  - m_blksize -; - -162 -ĺos_t - - m_offŁt -; - -163 } - tFILE -; - -165 - g__BEGIN_DECLS - - -166 #iŕ -__DARWIN_UNIX03 - - -167 -FILE - * -__ˇdšp -; - -168 -FILE - * -__ˇdouŤ -; - -169 -FILE - * -__ˇd”˝ -; - -171 -FILE - -__sF -[]; - -173 - g__END_DECLS - - -175  - #__SLBF - 0x0001 - - ) - -176  - #__SNBF - 0x0002 - - ) - -177  - #__SRD - 0x0004 - - ) - -178  - #__SWR - 0x0008 - - ) - -180  - #__SRW - 0x0010 - - ) - -181  - #__SEOF - 0x0020 - - ) - -182  - #__SERR - 0x0040 - - ) - -183  - #__SMBF - 0x0080 - - ) - -184  - #__SAPP - 0x0100 - - ) - -185  - #__SSTR - 0x0200 - - ) - -186  - #__SOPT - 0x0400 - - ) - -187  - #__SNPT - 0x0800 - - ) - -188  - #__SOFF - 0x1000 - - ) - -189  - #__SMOD - 0x2000 - - ) - -190  - #__SALC - 0x4000 - - ) - -191  - #__SIGN - 0x8000 - - ) - -202  - #_IOFBF - 0 - - ) - -203  - #_IOLBF - 1 - - ) - -204  - #_IONBF - 2 - - ) - -206  - #BUFSIZ - 1024 - - ) - -207  - #EOF - (-1) - - ) - -215  - #FOPEN_MAX - 20 - - ) - -216  - #FILENAME_MAX - 1024 - - ) - -219 #iâdeŕ -_ANSI_SOURCE - - -220  - #P_tmpdś - "/v¬/tmp/" - - ) - -222  - #L_tm˛am - 1024 - - ) - -223  - #TMP_MAX - 308915776 - - ) - -225 #iâdeŕ -SEEK_SET - - -226  - #SEEK_SET - 0 - - ) - -228 #iâdeŕ -SEEK_CUR - - -229  - #SEEK_CUR - 1 - - ) - -231 #iâdeŕ -SEEK_END - - -232  - #SEEK_END - 2 - - ) - -235 #iŕ -__DARWIN_UNIX03 - - -236  - #ˇdš - -__ˇdšp - - - ) - -237  - #ˇdout - -__ˇdouŤ - - - ) - -238  - #ˇd”r - -__ˇd”˝ - - - ) - -240  - #ˇdš - (& -__sF -[0]) - - ) - -241  - #ˇdout - (& -__sF -[1]) - - ) - -242  - #ˇd”r - (& -__sF -[2]) - - ) - -248 -__BEGIN_DECLS - - -249  -ţ—»Ľ -( -FILE - *); - -250  -fţoŁ -( -FILE - *); - -251  -ăof -( -FILE - *); - -252  -ăĽÜ -( -FILE - *); - -253  -fćush -( -FILE - *); - -254  -fg‘c -( -FILE - *); - -255  -fg‘pos -( -FILE - * -__»ˇriů -, -ĺos_t - *); - -256 * -fg‘s -(* -__»ˇriů -, , -FILE - *); - -257 -FILE - * -fÝ’ -(cÚˇ * -__»ˇriů -, const * __restrict); - -258  - $ĺrštf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -ĺrštf -); - -259  - `ĺutc -(, -FILE - *); - -260  - $ĺuts -(cÚˇ * -__»ˇriů -, -FILE - * __»ˇriůč - `__DARWIN_ALIAS -( -ĺuts -); - -261 -size_t - - `ä—d -(* -__»ˇriů -, size_t, size_t, -FILE - * __restrict); - -262 -FILE - * - $äeÝ’ -(cÚˇ * -__»ˇriů -, const * __restrict, - -263 -FILE - * -__»ˇriů -č - `__DARWIN_ALIAS -( -äeÝ’ -); - -264  - $fs˙nf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -fs˙nf -); - -265  - `fŁek -( -FILE - *, , ); - -266  - `fŁŤos -( -FILE - *, cÚˇ -ĺos_t - *); - -267  - `á–l -( -FILE - *); - -268 -size_t - - $fwr™e -(cÚˇ * -__»ˇriů -, -size_t -, size_t, -FILE - * __»ˇriůč - `__DARWIN_ALIAS -( -fwr™e -); - -269  - `g‘c -( -FILE - *); - -270  - `g‘ch¬ -(); - -271 * - `g‘s -(*); - -272 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -273 -__cÚˇ -  -sys_ĂĽ -; - -274 -__cÚˇ - *__cÚˇ -sys_”ľiˇ -[]; - -276  - `łĽÜ -(const *); - -277  - $´štf -(cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT -( -´štf -); - -278  - `putc -(, -FILE - *); - -279  - `putch¬ -(); - -280  - `puts -(const *); - -281  - `»move -(const *); - -282  - `»Çme - (const *, const *); - -283  - `»wšd -( -FILE - *); - -284  - $s˙nf -(cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT -( -s˙nf -); - -285  - `Łtbuf -( -FILE - * -__»ˇriů -, * __restrict); - -286  - `Łtvbuf -( -FILE - * -__»ˇriů -, * __»ˇriů, , -size_t -); - -287  - $Ąrštf -(* -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -Ąrštf -); - -288  - $ss˙nf -(cÚˇ * -__»ˇriů -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -ss˙nf -); - -289 -FILE - * - `tmpfže -(); - -290 * - `tm˛am -(*); - -291  - `ung‘c -(, -FILE - *); - -292  - $vĺrštf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vĺrštf -); - -293  - $v´štf -(cÚˇ * -__»ˇriů -, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -v´štf -); - -294  - $vĄrštf -(* -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vĄrštf -); - -295 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -296  - $aĄrštf -(**, cÚˇ *, ...č - `__DARWIN_LDBL_COMPAT -( -aĄrštf -); - -297  - $vaĄrštf -(**, cÚˇ *, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vaĄrštf -); - -299 -__END_DECLS - - -304 #iâdeŕ -_ANSI_SOURCE - - -305  - #L_ů”mid - 1024 - - ) - -307 -__BEGIN_DECLS - - -308 * - `ů”mid -(*); - -309 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -310 * - `ů”mid_r -(*); - -312 -FILE - * - `fdÝ’ -(, const *); - -313 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -314 * - `fg‘Ę -( -FILE - *, -size_t - *); - -316  - `fž’o -( -FILE - *); - -317  - `ćockfže -( -FILE - *); - -318 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -319 -__cÚˇ -  - -320 * - `fmtcheck -(const *, const *); - -321  - `ĺurge -( -FILE - *); - -323  - `fŁeko -( -FILE - *, -off_t -, ); - -324 -off_t - - `á–lo -( -FILE - *); - -325  - `árylockfže -( -FILE - *); - -326  - `fuĆockfže -( -FILE - *); - -327  - `g‘c_uĆocked -( -FILE - *); - -328  - `g‘ch¬_uĆocked -(); - -329 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -330  - `g‘w -( -FILE - *); - -332  - `pţoŁ -( -FILE - *); - -333 -FILE - * - `pÝ’ -(const *, const *); - -334  - `putc_uĆocked -(, -FILE - *); - -335  - `putch¬_uĆocked -(); - -336 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -337  - `putw -(, -FILE - *); - -338  - `Łtbufăr -( -FILE - *, *, ); - -339  - `ŁŽšebuf -( -FILE - *); - -341  - $˘´štf -(* -__»ˇriů -, -size_t -, cÚˇ * __»ˇriů, ...č - `__DARWIN_LDBL_COMPAT -( -˘´štf -); - -342 * - $‹m˛am -(cÚˇ *, cÚˇ *č - `__DARWIN_ALIAS -( -‹m˛am -); - -343  - $vfs˙nf -( -FILE - * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vfs˙nf -); - -344  - $vs˙nf -(cÚˇ * -__»ˇriů -, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vs˙nf -); - -345  - $v˘´štf -(* -__»ˇriů -, -size_t -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -v˘´štf -); - -346  - $vss˙nf -(cÚˇ * -__»ˇriů -, cÚˇ * __»ˇriů, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -vss˙nf -); - -347 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -348 -FILE - * - `zÝ’ -(const *, const *, ); - -350 -__END_DECLS - - -355 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -356 -__BEGIN_DECLS - - -357 -FILE - * - `funÝ’ -(const *, - -360 - $ĺos_t - (*)(*, -ĺos_t -, ), - -362 -__END_DECLS - - -363  - #äÝ’ -( -cook› -, -â -č - `funÝ’ -(cook›, fn, 0, 0, 0) - - ) - -364  - #fwÝ’ -( -cook› -, -â -č - `funÝ’ -(cook›, 0, fn, 0, 0) - - ) - -371 -__BEGIN_DECLS - - -372  - `__¤g‘ -( -FILE - *); - -373  - $__svfs˙nf -( -FILE - *, cÚˇ *, -va_liˇ -č - `__DARWIN_LDBL_COMPAT -( -__svfs˙nf -); - -374  - `__swbuf -(, -FILE - *); - -375 -__END_DECLS - - -381  - #__sg‘c -( -p -č(--Ő)-> -_r - < 0 ? - `__¤g‘ -Őč: ()(*Ő)-> -_p -++)) - - ) - -382 #iŕ - `defšed -( -__GNUC__ -č&& defšed( -__STDC__ -) - -383  -__šlše -  - $__Ąutc -( -_c -, -FILE - * -_p -) { - -384 iŕ(-- -_p --> -_w - >đ0 || (_p->_w >đ_p-> -_lbfsize - && () -_c - != '\n')) - -385  (* -_p -->_p++ = -_c -); - -387  ( - `__swbuf -( -_c -, -_p -)); - -388 - } -} - -393  - #__Ąutc -( -c -, -p -) \ - -394 (--( -p -)-> -_w - < 0 ? \ - -395 ( -p -)-> -_w - >đŐ)-> -_lbfsize - ? \ - -396 (*( -p -)-> -_p - = ( -c -)), *(p)->_p != '\n' ? \ - -397 ()*( -p -)-> -_p -++ : \ - -398 - `__swbuf -('\n', -p -) : \ - -399 - `__swbuf -(()( -c -), -p -) : \ - -400 (*( -p -)-> -_p - = ( -c -), ()*Ő)->_p++)) - - ) - -403  - #__săof -( -p -č((Ő)-> -_ćags - & -__SEOF -č!đ0) - - ) - -404  - #__săĽÜ -( -p -č((Ő)-> -_ćags - & -__SERR -č!đ0) - - ) - -405  - #__sţ—»Ľ -( -p -č(()(Ő)-> -_ćags - &đ~( -__SERR -| -__SEOF -))) - - ) - -406  - #__sfž’o -( -p -č(Ő)-> -_fže -) - - ) - -408 #iâdeŕ -_ANSI_SOURCE - - -409 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -410  - #ăof_uĆocked -( -p -č - `__săof -Ő) - - ) - -411  - #ăĽÜ_uĆocked -( -p -č - `__săĽÜ -Ő) - - ) - -412  - #ţ—»Ľ_uĆocked -( -p -č - `__sţ—»Ľ -Ő) - - ) - -413  - #fž’o_uĆocked -( -p -č - `__sfž’o -Ő) - - ) - -416 #iâdeŕ -lšt - - -417  - #g‘c_uĆocked -( -ĺ -č - `__sg‘c -(ĺ) - - ) - -418  - #putc_uĆocked -( -x -, -ĺ -č - `__Ąutc -(x, fp) - - ) - -421  - #g‘ch¬_uĆocked -(č - `g‘c_uĆocked -( -ˇdš -) - - ) - -422  - #putch¬_uĆocked -( -x -č - `putc_uĆocked -(x, -ˇdout -) - - ) - -425 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -426  - ~ - -429 #iŕ -defšed - ( -__GNUC__ -č&& -_FORTIFY_SOURCE - > 0 && !defšed ( -__ýluĄlus -) - -431  - ~<Łcu»/_ˇdio.h -> - - @/usr/include/stdlib.h - -58 #iâdeŕ -_STDLIB_H_ - - -59  - #_STDLIB_H_ - - - ) - -61  - ~ - -63  - ~<_tyłs.h -> - -64 #iŕ! -defšed -( -_ANSI_SOURCE -) - -65  - ~ - -66 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -67  - ~<®lo˙.h -> - -71 #iâdef -_SIZE_T - - -72  - #_SIZE_T - - - ) - -75  -__d¬wš_size_t - - tsize_t -; - -78 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -79 #iâdeŕ -_CT_RUNE_T - - -80  - #_CT_RUNE_T - - - ) - -81  -__d¬wš_ů_ruĂ_t - - tů_ruĂ_t -; - -84 #iâdeŕ -_RUNE_T - - -85  - #_RUNE_T - - - ) - -86  -__d¬wš_ruĂ_t - - truĂ_t -; - -90 #iâdef -__ýluĄlus - - -91 #iâdef -_WCHAR_T - - -92  - #_WCHAR_T - - - ) - -93  -__d¬wš_wch¬_t - - twch¬_t -; - -98  - mquŮ -; - -99  - m»m -; - -100 } - tdiv_t -; - -103  - mquŮ -; - -104  - m»m -; - -105 } - tldiv_t -; - -107 #iŕ! -__DARWIN_NO_LONG_LONG - - -109  - mquŮ -; - -110  - m»m -; - -111 } - tÎdiv_t -; - -114 #iâdeŕ -NULL - - -115  - #NULL - -__DARWIN_NULL - - - ) - -118  - #EXIT_FAILURE - 1 - - ) - -119  - #EXIT_SUCCESS - 0 - - ) - -121  - #RAND_MAX - 0x7fffffff - - ) - -123 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -124  - ~<_xlo˙Ë.h -> - -127 #iâdeŕ -MB_CUR_MAX - - -128 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -129  - #MB_CUR_MAX - ( - `___mb_cur_max -()) - - ) - -130 #iâdeŕ -MB_CUR_MAX_L - - -131  - #MB_CUR_MAX_L -( -x -č( - `___mb_cur_max_l -(x)) - - ) - -134  -__mb_cur_max -; - -135  - #MB_CUR_MAX - -__mb_cur_max - - - ) - -139 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) \ - -140 && -defšed -( -_USE_EXTENDED_LOCALES_ -č&& ! - $defšed -( -MB_CUR_MAX_L -) - -141  - #MB_CUR_MAX_L -( -x -č( - `___mb_cur_max_l -(x)) - - ) - -144 -__BEGIN_DECLS - - -145  - $abÜt -(č -__d—d2 -; - -146  - $abs -(č -__pu»2 -; - -147  - `©ex™ -((*)()); - -148  - `©of -(const *); - -149  - `©oi -(const *); - -150  - `©Ţ -(const *); - -151 #iŕ! -__DARWIN_NO_LONG_LONG - - -153 - `©Ţl -(const *); - -155 * - `b٬ch -(cÚˇ *, cÚˇ *, -size_t -, - -156 -size_t -, (*)(const *, const *)); - -157 * - `˙Îoc -( -size_t -, size_t); - -158 -div_t - - $div -(, č -__pu»2 -; - -159  - $ex™ -(č -__d—d2 -; - -160  - `ä“ -(*); - -161 * - `g‘’v -(const *); - -162  - $Ďbs -(č -__pu»2 -; - -163 -ldiv_t - - $ldiv -(, č -__pu»2 -; - -164 #iŕ! -__DARWIN_NO_LONG_LONG - - -166 - `Îabs -(); - -167 -Îdiv_t - - `Îdiv -(, ); - -169 * - `m®loc -( -size_t -); - -170  - `mbËn -(cÚˇ *, -size_t -); - -171 -size_t - - `mbˇowcs -( -wch¬_t - * -__»ˇriů - , const * __restrict, size_t); - -172  - `mbtowc -( -wch¬_t - * -__»ˇriů -, cÚˇ * __»ˇriů, -size_t -); - -173  - `qsÜt -(*, -size_t -, size_t, - -175  - `żnd -(); - -176 * - `»®loc -(*, -size_t -); - -177  - `¤Şd -(); - -178  - $ˇąod -(cÚˇ *, **č - `__DARWIN_ALIAS -( -ˇąod -); - -179  - $ˇąof -(cÚˇ *, **č - `__DARWIN_ALIAS -( -ˇąof -); - -180  - `ˇąŢ -(const *, **, ); - -182 - $ˇąŢd -(cÚˇ *, **č - `__DARWIN_LDBL_COMPAT -( -ˇąŢd -); - -183 #iŕ! -__DARWIN_NO_LONG_LONG - - -185 - `ˇąŢl -(const *, **, ); - -188 - `ˇąoul -(const *, **, ); - -189 #iŕ! -__DARWIN_NO_LONG_LONG - - -191 - `ˇąouÎ -(const *, **, ); - -193  - $syˇem -(cÚˇ *č - `__DARWIN_ALIAS_C -( -syˇem -); - -194 -size_t - - `wcˇombs -(* -__»ˇriů -, cÚˇ -wch¬_t - * __restrict, size_t); - -195  - `wůomb -(*, -wch¬_t -); - -197 #iâdeŕ -_ANSI_SOURCE - - -198  - $_Ex™ -(č -__d—d2 -; - -199  - `a64l -(const *); - -200  - `dżnd48 -(); - -201 * - `ecvt -(, , * -__»ˇriů -, *__restrict); - -202  - `”Şd48 -([3]); - -203 * - `fcvt -(, , * -__»ˇriů -, *__restrict); - -204 * - `gcvt -(, , *); - -205  - `g‘subÝt -(**, * const *, **); - -206  - `gżÁ± -(); - -207 #iŕ -__DARWIN_UNIX03 - - -208 * - `𙎩e -(, *, -size_t -); - -210 * - `𙎩e -(, *, ); - -212  - `jżnd48 -([3]); - -213 * - `l64a -(); - -214  - `lcÚg48 -([7]); - -215  - `ĚŞd48 -(); - -216 * - `mk‹mp -(*); - -217  - `mkˇemp -(*); - -218  - `mżnd48 -(); - -219  - `ÄŞd48 -([3]); - -220  - `posix_Ý’± -(); - -221 * - `±˘ame -(); - -222  - $pu‹nv -(*č - `__DARWIN_ALIAS -( -pu‹nv -); - -223  - `żndom -(); - -224  - `żnd_r -(*); - -225 #iŕ( -__DARWIN_UNIX03 - && ! - `defšed -( -_POSIX_C_SOURCE -)č|| defšed( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_BETTER_REALPATH -) - -226 * - $»®·th -(cÚˇ * -__»ˇriů -, * __»ˇriůč - `__DARWIN_EXTSN -( -»®·th -); - -228 * - $»®·th -(cÚˇ * -__»ˇriů -, * __»ˇriůč - `__DARWIN_ALIAS -( -»®·th -); - -231 * - `Łed48 -([3]); - -232  - $Ł‹nv -(cÚˇ *, cÚˇ *, č - `__DARWIN_ALIAS -( -Ł‹nv -); - -233 #iŕ -__DARWIN_UNIX03 - - -234  - $Łtkey -(cÚˇ *č - `__DARWIN_ALIAS -( -Łtkey -); - -236  - `Łtkey -(const *); - -238 * - `Łtˇ©e -(const *); - -239  - `¤Şd48 -(); - -240 #iŕ -__DARWIN_UNIX03 - - -241  - `¤Şdom -(); - -243  - `¤Şdom -(); - -245  - `uĆock± -(); - -246 #iŕ -__DARWIN_UNIX03 - - -247  - $unŁ‹nv -(cÚˇ *č - `__DARWIN_ALIAS -( -unŁ‹nv -); - -249  - `unŁ‹nv -(const *); - -253 #iŕ! - `defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -254  - ~ - -256 #iâdeŕ -_DEV_T - - -257  -__d¬wš_dev_t - - tdev_t -; - -258  - #_DEV_T - - - ) - -261 #iâdef -_MODE_T - - -262  -__d¬wš_mode_t - - tmode_t -; - -263  - #_MODE_T - - - ) - -266 -u_št32_t - - -267 - `¬c4żndom -(); - -268  - `¬c4żndom_addżndom -(* -d© -,  -d©Ën -); - -269  - `¬c4żndom_ˇś -(); - -272 * - `cg‘˙p -(*, const *, ); - -273  - `cg‘ţoŁ -(); - -274  - `cg‘’t -(**, **, const *); - -275  - `cg‘fśˇ -(**, **); - -276  - `cg‘m©ch -(const *, const *); - -277  - `cg‘Ăxt -(**, **); - -278  - `cg‘num -(*, const *, *); - -279  - `cg‘Łt -(const *); - -280  - `cg‘ˇr -(*, const *, **); - -281  - `cg‘uˇr -(*, const *, **); - -283  - $d«mÚ -(, č - $__DARWIN_1050 -( -d«mÚ -č -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 -; - -284 * - `devÇme -( -dev_t -, -mode_t -); - -285 * - `devÇme_r -( -dev_t -, -mode_t -, * -buf -,  -Ën -); - -286 * - `g‘bsize -(*, *); - -287  - `g‘lßdavg -([], ); - -289 * - `g‘´ogÇme -(); - -291  - `h—psÜt -(*, -size_t -, size_t, - -293  - `m”gesÜt -(*, -size_t -, size_t, - -295  - `qsÜt_r -(*, -size_t -, size_t, *, - -297  - `żdixsÜt -(const **, , const *, - -299  - `ŁŤrogÇme -(const *); - -300  - `¤adixsÜt -(const **, , const *, - -302  - `¤Şddev -(); - -303  - `¤Şdomdev -(); - -304 * - `»®locf -(*, -size_t -); - -305 #iŕ! -__DARWIN_NO_LONG_LONG - - -307 - `ˇąoq -(const *, **, ); - -309 - `ˇąouq -(const *, **, ); - -311 * -subÝŹrg -; - -312 * - `v®loc -( -size_t -); - -316 #iŕ! - `defšed -( -__ýluĄlus -č&& defšed( -__WCHAR_MAX__ -) && __WCHAR_MAX__ <= 0xffffU - -317 #´agm¨ -GCC - -poisÚ - -mbˇowcs - -mbtowc - -wcˇombs - -wůomb - - -319 -__END_DECLS - - -321 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -322  - ~ - - @/usr/include/string.h - -58 #iâdeŕ -_STRING_H_ - - -59  - #_STRING_H_ - - - ) - -60  - ~<_tyłs.h -> - -62 #iâdef -_SIZE_T - - -63  - #_SIZE_T - - - ) - -64  -__d¬wš_size_t - - tsize_t -; - -67 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -68 #iâdeŕ -_SSIZE_T - - -69  - #_SSIZE_T - - - ) - -70  -__d¬wš_ssize_t - - tssize_t -; - -74 #iâdeŕ -NULL - - -75  - #NULL - -__DARWIN_NULL - - - ) - -78  - ~ - -80 -__BEGIN_DECLS - - -81 * -memchr -(cÚˇ *, , -size_t -); - -82  -memcmp -(cÚˇ *, cÚˇ *, -size_t -); - -83 * -memýy -(*, cÚˇ *, -size_t -); - -84 * -memmove -(*, cÚˇ *, -size_t -); - -85 * -memŁt -(*, , -size_t -); - -86 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -87 * -ˇpýy -(*, const *); - -88 * -ˇr˙َr -(const *, const *); - -90 * -ˇr˙t -(*, const *); - -91 * -ˇrchr -(const *, ); - -92  -ˇrcmp -(const *, const *); - -93  -ˇrcŢl -(const *, const *); - -94 * -ˇrýy -(*, const *); - -95 -size_t - -ˇrcĄn -(const *, const *); - -96 * - $ˇ»ĽÜ -(č - `__DARWIN_ALIAS -( -ˇ»ĽÜ -); - -97  - `ˇ»ĽÜ_r -(, *, -size_t -); - -98 -size_t - - `ˇľ’ -(const *); - -99 * - `ˇş˙t -(*, cÚˇ *, -size_t -); - -100  - `ˇşcmp -(cÚˇ *, cÚˇ *, -size_t -); - -101 * - `ˇşýy -(*, cÚˇ *, -size_t -); - -102 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -103 * - `ˇşˇr -(cÚˇ *, cÚˇ *, -size_t -); - -105 * - `ˇ˝brk -(const *, const *); - -106 * - `ˇĽchr -(const *, ); - -107 -size_t - - `ˇrĄn -(const *, const *); - -108 * - `ˇrˇr -(const *, const *); - -109 * - `ˇąok -(*, const *); - -110 -size_t - - `ˇrxäm -(*, const *, size_t); - -113 #iâdeŕ -_ANSI_SOURCE - - -114 * - `memcýy -(*, cÚˇ *, , -size_t -); - -115 * - `ˇąok_r -(*, const *, **); - -116 * - `ˇrdup -(const *); - -117 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -118  - `bcmp -(cÚˇ *, cÚˇ *, -size_t -); - -119  - `bcÝy -(cÚˇ *, *, -size_t -); - -120  - `bz”o -(*, -size_t -); - -121  - `ffs -(); - -122  - `ff¦ -(); - -123  - `ćs -(); - -124  - `㦠-(); - -125 * - `šdex -(const *, ); - -126  - `memŁt_·‰”n4 -(*, cÚˇ *, -size_t -); - -127  - `memŁt_·‰”n8 -(*, cÚˇ *, -size_t -); - -128  - `memŁt_·‰”n16 -(*, cÚˇ *, -size_t -); - -129 * - `ršdex -(const *, ); - -130  - `ˇr˙Łcmp -(const *, const *); - -131 -size_t - - `ˇľ˙t -(*, const *, size_t); - -132 -size_t - - `ˇľýy -(*, const *, size_t); - -133  - `ˇrmode -(, *); - -134  - `ˇş˙Łcmp -(cÚˇ *, cÚˇ *, -size_t -); - -135 * - `ˇrŁp -(**, const *); - -136 * - `ˇrsigÇl -( -sig -); - -137  - `swab -(cÚˇ * -__»ˇriů -, * __»ˇriů, -ssize_t -); - -140 -__END_DECLS - - -142 #ifdeŕ -_USE_EXTENDED_LOCALES_ - - -143  - ~ - -146 #iŕ - `defšed - ( -__GNUC__ -č&& -_FORTIFY_SOURCE - > 0 && !defšed ( -__ýluĄlus -) - -148  - ~<Łcu»/_ˇršg.h -> - - @/usr/include/sys/mman.h - -76 #iâdef -_SYS_MMAN_H_ - - -77  - #_SYS_MMAN_H_ - - - ) - -79  - ~ - -80  - ~ - -82  - ~ - -88 #iâdef -_MODE_T - - -89  -__d¬wš_mode_t - - tmode_t -; - -90  - #_MODE_T - - - ) - -93 #iâdeŕ -_OFF_T - - -94  -__d¬wš_off_t - - toff_t -; - -95  - #_OFF_T - - - ) - -98 #iâdeŕ -_SIZE_T - - -99  - #_SIZE_T - - - ) - -100  -__d¬wš_size_t - - tsize_t -; - -107  - #PROT_NONE - 0x00 - - ) - -108  - #PROT_READ - 0x01 - - ) - -109  - #PROT_WRITE - 0x02 - - ) - -110  - #PROT_EXEC - 0x04 - - ) - -116  - #MAP_SHARED - 0x0001 - - ) - -117  - #MAP_PRIVATE - 0x0002 - - ) - -118 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -119  - #MAP_COPY - -MAP_PRIVATE - - - ) - -125  - #MAP_FIXED - 0x0010 - - ) - -126 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -127  - #MAP_RENAME - 0x0020 - - ) - -128  - #MAP_NORESERVE - 0x0040 - - ) - -129  - #MAP_RESERVED0080 - 0x0080 - - ) - -130  - #MAP_NOEXTEND - 0x0100 - - ) - -131  - #MAP_HASSEMAPHORE - 0x0200 - - ) - -132  - #MAP_NOCACHE - 0x0400 - - ) - -138  - #MCL_CURRENT - 0x0001 - - ) - -139  - #MCL_FUTURE - 0x0002 - - ) - -144  - #MAP_FAILED - ((*)-1č - - ) - -149  - #MS_ASYNC - 0x0001 - - ) - -150  - #MS_INVALIDATE - 0x0002 - - ) - -151  - #MS_SYNC - 0x0010 - - ) - -153 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -154  - #MS_KILLPAGES - 0x0004 - - ) - -155  - #MS_DEACTIVATE - 0x0008 - - ) - -160  - #MAP_FILE - 0x0000 - - ) - -161  - #MAP_ANON - 0x1000 - - ) - -168  - #POSIX_MADV_NORMAL - 0 - - ) - -169  - #POSIX_MADV_RANDOM - 1 - - ) - -170  - #POSIX_MADV_SEQUENTIAL - 2 - - ) - -171  - #POSIX_MADV_WILLNEED - 3 - - ) - -172  - #POSIX_MADV_DONTNEED - 4 - - ) - -174 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -175  - #MADV_NORMAL - -POSIX_MADV_NORMAL - - - ) - -176  - #MADV_RANDOM - -POSIX_MADV_RANDOM - - - ) - -177  - #MADV_SEQUENTIAL - -POSIX_MADV_SEQUENTIAL - - - ) - -178  - #MADV_WILLNEED - -POSIX_MADV_WILLNEED - - - ) - -179  - #MADV_DONTNEED - -POSIX_MADV_DONTNEED - - - ) - -180  - #MADV_FREE - 5 - - ) - -185  - #MINCORE_INCORE - 0x1 - - ) - -186  - #MINCORE_REFERENCED - 0x2 - - ) - -187  - #MINCORE_MODIFIED - 0x4 - - ) - -188  - #MINCORE_REFERENCED_OTHER - 0x8 - - ) - -189  - #MINCORE_MODIFIED_OTHER - 0x10 - - ) - -194 -__BEGIN_DECLS - - -196  -mlock®l -(); - -197  -muĆock®l -(); - -199  -mlock -(cÚˇ *, -size_t -); - -200 #iâdeŕ -_MMAP - - -201  - #_MMAP - - - ) - -203 * - $mm­ -(*, -size_t -, , , , -off_t -č - `__DARWIN_ALIAS -( -mm­ -); - -206  - $m´Ůeů -(*, -size_t -, č - `__DARWIN_ALIAS -( -m´Ůeů -); - -208  - $msync -(*, -size_t -, č - `__DARWIN_ALIAS_C -( -msync -); - -210  - `muĆock -(cÚˇ *, -size_t -); - -212  - $munm­ -(*, -size_t -č - `__DARWIN_ALIAS -( -munm­ -); - -214  - `shm_Ý’ -(const *, , ...); - -215  - `shm_uĆšk -(const *); - -217  - `posix_madviŁ -(*, -size_t -, ); - -219 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -220  - `madviŁ -(*, -size_t -, ); - -221  - `mšcÜe -(cÚˇ *, -size_t -, *); - -222  - `mšh”™ -(*, -size_t -, ); - -224 -__END_DECLS - - - @/usr/include/sys/stat.h - -70 #iâdeŕ -_SYS_STAT_H_ - - -71  - #_SYS_STAT_H_ - - - ) - -73  - ~ - -74  - ~ - -77  - #__Ăed_ˇruů_timeĄec - - - ) - -78  - ~ - -85 #iâdeŕ -_BLKCNT_T - - -86  -__d¬wš_blkút_t - - tblkút_t -; - -87  - #_BLKCNT_T - - - ) - -90 #iâdeŕ -_BLKSIZE_T - - -91  -__d¬wš_blksize_t - - tblksize_t -; - -92  - #_BLKSIZE_T - - - ) - -95 #iâdeŕ -_DEV_T - - -96  -__d¬wš_dev_t - - tdev_t -; - -97  - #_DEV_T - - - ) - -100 #iâdef -_INO_T - - -101  -__d¬wš_šo_t - - tšo_t -; - -102  - #_INO_T - - - ) - -105 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -106 #iâdef -_INO64_T - - -107  -__d¬wš_šo64_t - - tšo64_t -; - -108  - #_INO64_T - - - ) - -112 #iâdef -_MODE_T - - -113  -__d¬wš_mode_t - - tmode_t -; - -114  - #_MODE_T - - - ) - -117 #iâdeŕ -_NLINK_T - - -118  -__ušt16_t - - tĆšk_t -; - -119  - #_NLINK_T - - - ) - -122 #iâdeŕ -_UID_T - - -123  -__d¬wš_uid_t - - tuid_t -; - -124  - #_UID_T - - - ) - -127 #iâdeŕ -_GID_T - - -128  -__d¬wš_gid_t - - tgid_t -; - -129  - #_GID_T - - - ) - -132 #iâdeŕ -_OFF_T - - -133  -__d¬wš_off_t - - toff_t -; - -134  - #_OFF_T - - - ) - -137 #iâdef -_TIME_T - - -138  - #_TIME_T - - - ) - -139  -__d¬wš_time_t - - ttime_t -; - -143 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -152  - soˇ© - { - -153 -__ušt16_t - - mˇ_dev -; - -154 -šo_t - - mˇ_šo -; - -155 -mode_t - - mˇ_mode -; - -156 -Ćšk_t - - mˇ_Ćšk -; - -157 -__ušt16_t - - mˇ_uid -; - -158 -__ušt16_t - - mˇ_gid -; - -159 -__ušt16_t - - mˇ_rdev -; - -160 -__št32_t - - mˇ_size -; - -161  -timeĄec - - mˇ_©imeĄec -; - -162  -timeĄec - - mˇ_mtimeĄec -; - -163  -timeĄec - - mˇ_ůimeĄec -; - -164 -__št32_t - - mˇ_blksize -; - -165 -__št32_t - - mˇ_blocks -; - -166 -__ušt32_t - - mˇ_ćags -; - -167 -__ušt32_t - - mˇ_g’ -; - -170  - #__DARWIN_STRUCT_STAT64_TIMES - \ - -171  -timeĄec - -ˇ_©imeĄec -; \ - -172  -timeĄec - -ˇ_mtimeĄec -; \ - -173  -timeĄec - -ˇ_ůimeĄec -; \ - -174  -timeĄec - -ˇ_bśthtimeĄec -; - - ) - -178  - #__DARWIN_STRUCT_STAT64_TIMES - \ - -179 -time_t - -ˇ_©ime -; \ - -180  -ˇ_©im’Łc -; \ - -181 -time_t - -ˇ_mtime -; \ - -182  -ˇ_mtim’Łc -; \ - -183 -time_t - -ˇ_ůime -; \ - -184  -ˇ_ůim’Łc -; \ - -185 -time_t - -ˇ_bśthtime -; \ - -186  -ˇ_bśthtim’Łc -; - - ) - -200  - #__DARWIN_STRUCT_STAT64 - { \ - -201 -dev_t - -ˇ_dev -; \ - -202 -mode_t - -ˇ_mode -; \ - -203 -Ćšk_t - -ˇ_Ćšk -; \ - -204 -__d¬wš_šo64_t - -ˇ_šo -; \ - -205 -uid_t - -ˇ_uid -; \ - -206 -gid_t - -ˇ_gid -; \ - -207 -dev_t - -ˇ_rdev -; \ - -208 -__DARWIN_STRUCT_STAT64_TIMES - \ - -209 -off_t - -ˇ_size -; \ - -210 -blkút_t - -ˇ_blocks -; \ - -211 -blksize_t - -ˇ_blksize -; \ - -212 -__ušt32_t - -ˇ_ćags -; \ - -213 -__ušt32_t - -ˇ_g’ -; \ - -214 -__št32_t - -ˇ_lĄ¬e -; \ - -215 -__št64_t - -ˇ_qĄ¬e -[2]; \ - -216 } - - ) - -222 #iŕ -__DARWIN_64_BIT_INO_T - - -224  -ˇ© - - g__DARWIN_STRUCT_STAT64 -; - -228  - sˇ© - { - -229 -dev_t - - mˇ_dev -; - -230 -šo_t - - mˇ_šo -; - -231 -mode_t - - mˇ_mode -; - -232 -Ćšk_t - - mˇ_Ćšk -; - -233 -uid_t - - mˇ_uid -; - -234 -gid_t - - mˇ_gid -; - -235 -dev_t - - mˇ_rdev -; - -236 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -237  -timeĄec - - mˇ_©imeĄec -; - -238  -timeĄec - - mˇ_mtimeĄec -; - -239  -timeĄec - - mˇ_ůimeĄec -; - -241 -time_t - - mˇ_©ime -; - -242  - mˇ_©im’Łc -; - -243 -time_t - - mˇ_mtime -; - -244  - mˇ_mtim’Łc -; - -245 -time_t - - mˇ_ůime -; - -246  - mˇ_ůim’Łc -; - -248 -off_t - - mˇ_size -; - -249 -blkút_t - - mˇ_blocks -; - -250 -blksize_t - - mˇ_blksize -; - -251 -__ušt32_t - - mˇ_ćags -; - -252 -__ušt32_t - - mˇ_g’ -; - -253 -__št32_t - - mˇ_lĄ¬e -; - -254 -__št64_t - - mˇ_qĄ¬e -[2]; - -259 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -261  -ˇ©64 - - g__DARWIN_STRUCT_STAT64 -; - -268 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -269  - #ˇ_©ime - -ˇ_©imeĄec -. -tv_Łc - - - ) - -270  - #ˇ_mtime - -ˇ_mtimeĄec -. -tv_Łc - - - ) - -271  - #ˇ_ůime - -ˇ_ůimeĄec -. -tv_Łc - - - ) - -272  - #ˇ_bśthtime - -ˇ_bśthtimeĄec -. -tv_Łc - - - ) - -279 #iâdeŕ -S_IFMT - - -281  - #S_IFMT - 0170000 - - ) - -282  - #S_IFIFO - 0010000 - - ) - -283  - #S_IFCHR - 0020000 - - ) - -284  - #S_IFDIR - 0040000 - - ) - -285  - #S_IFBLK - 0060000 - - ) - -286  - #S_IFREG - 0100000 - - ) - -287  - #S_IFLNK - 0120000 - - ) - -288  - #S_IFSOCK - 0140000 - - ) - -289 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -290  - #S_IFWHT - 0160000 - - ) - -291  - #S_IFXATTR - 0200000 - - ) - -296  - #S_IRWXU - 0000700 - - ) - -297  - #S_IRUSR - 0000400 - - ) - -298  - #S_IWUSR - 0000200 - - ) - -299  - #S_IXUSR - 0000100 - - ) - -301  - #S_IRWXG - 0000070 - - ) - -302  - #S_IRGRP - 0000040 - - ) - -303  - #S_IWGRP - 0000020 - - ) - -304  - #S_IXGRP - 0000010 - - ) - -306  - #S_IRWXO - 0000007 - - ) - -307  - #S_IROTH - 0000004 - - ) - -308  - #S_IWOTH - 0000002 - - ) - -309  - #S_IXOTH - 0000001 - - ) - -311  - #S_ISUID - 0004000 - - ) - -312  - #S_ISGID - 0002000 - - ) - -313  - #S_ISVTX - 0001000 - - ) - -315 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -316  - #S_ISTXT - -S_ISVTX - - - ) - -317  - #S_IREAD - -S_IRUSR - - - ) - -318  - #S_IWRITE - -S_IWUSR - - - ) - -319  - #S_IEXEC - -S_IXUSR - - - ) - -329  - #S_ISBLK -( -m -č(((mč& 0170000č=đ0060000č - - ) - -330  - #S_ISCHR -( -m -č(((mč& 0170000č=đ0020000č - - ) - -331  - #S_ISDIR -( -m -č(((mč& 0170000č=đ0040000č - - ) - -332  - #S_ISFIFO -( -m -č(((mč& 0170000č=đ0010000č - - ) - -333  - #S_ISREG -( -m -č(((mč& 0170000č=đ0100000č - - ) - -334  - #S_ISLNK -( -m -č(((mč& 0170000č=đ0120000č - - ) - -335  - #S_ISSOCK -( -m -č(((mč& 0170000č=đ0140000č - - ) - -336 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -337  - #S_ISWHT -( -m -č(((mč& 0170000č=đ0160000č - - ) - -338  - #S_ISXATTR -( -m -č(((mč& 0200000č=đ0200000č - - ) - -356  - #S_TYPEISMQ -( -buf -č(0č - - ) - -357  - #S_TYPEISSEM -( -buf -č(0č - - ) - -358  - #S_TYPEISSHM -( -buf -č(0č - - ) - -374  - #S_TYPEISTMO -( -buf -č(0č - - ) - -377 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -378  - #ACCESSPERMS - ( -S_IRWXU -| -S_IRWXG -| -S_IRWXO -č - - ) - -380  - #ALLPERMS - ( -S_ISUID -| -S_ISGID -| -S_ISTXT -| -S_IRWXU -| -S_IRWXG -| -S_IRWXO -) - - ) - -382  - #DEFFILEMODE - ( -S_IRUSR -| -S_IWUSR -| -S_IRGRP -| -S_IWGRP -| -S_IROTH -| -S_IWOTH -) - - ) - -384  - #S_BLKSIZE - 512 - - ) - -391  - #UF_SETTABLE - 0x0000fffŕ - - ) - -392  - #UF_NODUMP - 0x00000001 - - ) - -393  - #UF_IMMUTABLE - 0x00000002 - - ) - -394  - #UF_APPEND - 0x00000004 - - ) - -395  - #UF_OPAQUE - 0x00000008 - - ) - -402  - #UF_HIDDEN - 0x00008000 - - ) - -407  - #SF_SETTABLE - 0xffff0000 - - ) - -408  - #SF_ARCHIVED - 0x00010000 - - ) - -409  - #SF_IMMUTABLE - 0x00020000 - - ) - -410  - #SF_APPEND - 0x00040000 - - ) - -422 -__BEGIN_DECLS - - -424  - $chmod -(cÚˇ *, -mode_t -č - `__DARWIN_ALIAS -( -chmod -); - -425  - $fchmod -(, -mode_t -č - `__DARWIN_ALIAS -( -fchmod -); - -426  - $fˇ© -(,  -ˇ© - *č - `__DARWIN_INODE64 -( -fˇ© -); - -427  - $lˇ© -(cÚˇ *,  -ˇ© - *č - `__DARWIN_INODE64 -( -lˇ© -); - -428  - `mkdś -(cÚˇ *, -mode_t -); - -429  - `mkfifo -(cÚˇ *, -mode_t -); - -430  - $ˇ© -(cÚˇ *,  -ˇ© - *č - `__DARWIN_INODE64 -(stat); - -431  - `mknod -(cÚˇ *, -mode_t -, -dev_t -); - -432 -mode_t - - `umask -(mode_t); - -434 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -435 #iâdeŕ -_FILESEC_T - - -436  -_fžeŁc -; - -437  -_fžeŁc - * - tfžeŁc_t -; - -438  - #_FILESEC_T - - - ) - -440  - `chćags -(cÚˇ *, -__ušt32_t -); - -441  - `chmodx_Ĺ -(cÚˇ *, -fžeŁc_t -); - -442  - `fchćags -(, -__ušt32_t -); - -443  - `fchmodx_Ĺ -(, -fžeŁc_t -); - -444  - $fˇ©x_Ĺ -(,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -fˇ©x_Ĺ -); - -445  - `lchćags -(cÚˇ *, -__ušt32_t -); - -446  - `lchmod -(cÚˇ *, -mode_t -); - -447  - $lˇ©x_Ĺ -(cÚˇ *,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -lˇ©x_Ĺ -); - -448  - `mkdśx_Ĺ -(cÚˇ *, -fžeŁc_t -); - -449  - `mkfifox_Ĺ -(cÚˇ *, -fžeŁc_t -); - -450  - $ˇ©x_Ĺ -(cÚˇ *,  -ˇ© - *, -fžeŁc_t -č - `__DARWIN_INODE64 -( -ˇ©x_Ĺ -); - -451  - `umaskx_Ĺ -( -fžeŁc_t -); - -453  - `fˇ©x64_Ĺ -(,  -ˇ©64 - *, -fžeŁc_t -); - -454  - `lˇ©x64_Ĺ -(cÚˇ *,  -ˇ©64 - *, -fžeŁc_t -); - -455  - `ˇ©x64_Ĺ -(cÚˇ *,  -ˇ©64 - *, -fžeŁc_t -); - -456  - `fˇ©64 -(,  -ˇ©64 - *); - -457  - `lˇ©64 -(cÚˇ *,  -ˇ©64 - *); - -458  - `ˇ©64 -(cÚˇ *,  -ˇ©64 - *); - -461 -__END_DECLS - - - @/usr/include/sys/types.h - -69 #iâdeŕ -_SYS_TYPES_H_ - - -70  - #_SYS_TYPES_H_ - - - ) - -72  - ~ - -74 #iâdeŕ -__ASSEMBLER__ - - -75  - ~ - -78  - ~ - -79  - ~ - -81  - ~ - -83 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -84  - tu_ch¬ -; - -85  - tu_shÜt -; - -86  - tu_št -; - -87 #iâdeŕ -_U_LONG - - -88  - tu_lÚg -; - -89  - #_U_LONG - - - ) - -91  - tushÜt -; - -92  - tušt -; - -95  -u_št64_t - - tu_quad_t -; - -96  -št64_t - - tquad_t -; - -97  -quad_t - * - tqaddr_t -; - -99 * - t˙ddr_t -; - -100  -št32_t - - tdaddr_t -; - -102 #iâdeŕ -_DEV_T - - -103  -__d¬wš_dev_t - - tdev_t -; - -104  - #_DEV_T - - - ) - -107  -u_št32_t - - tfix±_t -; - -109 #iâdeŕ -_BLKCNT_T - - -110  -__d¬wš_blkút_t - - tblkút_t -; - -111  - #_BLKCNT_T - - - ) - -114 #iâdeŕ -_BLKSIZE_T - - -115  -__d¬wš_blksize_t - - tblksize_t -; - -116  - #_BLKSIZE_T - - - ) - -119 #iâdeŕ -_GID_T - - -120  -__d¬wš_gid_t - - tgid_t -; - -121  - #_GID_T - - - ) - -124 #iâdeŕ -_IN_ADDR_T - - -125  - #_IN_ADDR_T - - - ) - -126  -__ušt32_t - - tš_addr_t -; - -129 #iâdeŕ -_IN_PORT_T - - -130  - #_IN_PORT_T - - - ) - -131  -__ušt16_t - - tš_pÜt_t -; - -134 #iâdef -_INO_T - - -135  -__d¬wš_šo_t - - tšo_t -; - -136  - #_INO_T - - - ) - -139 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -140 #iâdef -_INO64_T - - -141  -__d¬wš_šo64_t - - tšo64_t -; - -142  - #_INO64_T - - - ) - -146 #iâdeŕ -_KEY_T - - -147  - #_KEY_T - - - ) - -148  -__št32_t - - tkey_t -; - -151 #iâdef -_MODE_T - - -152  -__d¬wš_mode_t - - tmode_t -; - -153  - #_MODE_T - - - ) - -156 #iâdeŕ -_NLINK_T - - -157  -__ušt16_t - - tĆšk_t -; - -158  - #_NLINK_T - - - ) - -161 #iâdeŕ -_ID_T - - -162  - #_ID_T - - - ) - -163  -__d¬wš_id_t - - tid_t -; - -166 #iâdeŕ -_PID_T - - -167  -__d¬wš_pid_t - - tpid_t -; - -168  - #_PID_T - - - ) - -171 #iâdeŕ -_OFF_T - - -172  -__d¬wš_off_t - - toff_t -; - -173  - #_OFF_T - - - ) - -176  -št32_t - - tŁgsz_t -; - -177  -št32_t - - tswblk_t -; - -179 #iâdeŕ -_UID_T - - -180  -__d¬wš_uid_t - - tuid_t -; - -181  - #_UID_T - - - ) - -184 #iâdeŕ -_ID_T - - -185  -__d¬wš_id_t - - tid_t -; - -186  - #_ID_T - - - ) - -189 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -191 #iŕ -defšed -( -__ýluĄlus -) - -197  -šlše - -__št32_t - - $majÜ -( -__ušt32_t - -_x -) - -199  ( -__št32_t -)((( -__ušt32_t -) -_x - >> 24) & 0xff); - -200 - } -} - -202  -šlše - -__št32_t - - $mšÜ -( -__ušt32_t - -_x -) - -204  ( -__št32_t -)(( -_x -) & 0xffffff); - -205 - } -} - -207  -šlše - -dev_t - - $makedev -( -__ušt32_t - -_majÜ -, __ušt32_ -_mšÜ -) - -209  ( -dev_t -)((( -_majÜ -č<< 24č| ( -_mšÜ -)); - -210 - } -} - -214  - #majÜ -( -x -č(( -št32_t -)((( -u_št32_t -)(xč>> 24č& 0xff)) - - ) - -215  - #mšÜ -( -x -č(( -št32_t -)((xč& 0xffffff)) - - ) - -216  - #makedev -( -x -, -y -č(( -dev_t -)(((xč<< 24č| (y))) - - ) - -221 #iâdef -_CLOCK_T - - -222  - #_CLOCK_T - - - ) - -223  -__d¬wš_ţock_t - - tţock_t -; - -226 #iâdeŕ -_SIZE_T - - -227  - #_SIZE_T - - - ) - -230  -__d¬wš_size_t - - tsize_t -; - -233 #iâdef -_SSIZE_T - - -234  - #_SSIZE_T - - - ) - -235  -__d¬wš_ssize_t - - tssize_t -; - -238 #iâdef -_TIME_T - - -239  - #_TIME_T - - - ) - -240  -__d¬wš_time_t - - ttime_t -; - -243 #iâdeŕ -_USECONDS_T - - -244  - #_USECONDS_T - - - ) - -245  -__d¬wš_uŁcÚds_t - - tuŁcÚds_t -; - -248 #iâdeŕ -_SUSECONDS_T - - -249  - #_SUSECONDS_T - - - ) - -250  -__d¬wš_suŁcÚds_t - - tsuŁcÚds_t -; - -253 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -259  - #__Ăed_fd_Łt - - - ) - -260  - ~ - -262  - #NBBY - -__DARWIN_NBBY - - - ) - -263  - #NFDBITS - -__DARWIN_NFDBITS - - - ) - -264  - #howmŞy -( -x -, -y -č - `__DARWIN_howmŞy -(x, yč - - ) - -265  -__št32_t - - tfd_mask -; - -273 #iâdef -FD_SETSIZE - - -274  - #FD_SETSIZE - -__DARWIN_FD_SETSIZE - - - ) - -276 #iâdeŕ -FD_SET - - -277  - #FD_SET -( -n -, -p -č - `__DARWIN_FD_SET -Ň,…) - - ) - -279 #iâdeŕ -FD_CLR - - -280  - #FD_CLR -( -n -, -p -č - `__DARWIN_FD_CLR -Ň,…) - - ) - -282 #iâdeŕ -FD_ISSET - - -283  - #FD_ISSET -( -n -, -p -č - `__DARWIN_FD_ISSET -Ň,…) - - ) - -285 #iâdeŕ -FD_ZERO - - -286  - #FD_ZERO -( -p -č - `__DARWIN_FD_ZERO -Ő) - - ) - -288 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -289 #iâdeŕ -FD_COPY - - -290  - #FD_COPY -( -f -, -t -č - `__DARWIN_FD_COPY -(f,) - - ) - -295 #iŕ -defšed -( -__STDC__ -č&& defšed( -KERNEL -) - -301  - g´oc -; - -302  - gpg˝ -; - -303  - guüed -; - -304  - gru§ge -; - -305  - gfže -; - -306  - gbuf -; - -307  - g‰y -; - -308  - guio -; - -314 #iâdeŕ -__POSIX_LIB__ - - -316 #iâdeŕ -_PTHREAD_ATTR_T - - -317  - #_PTHREAD_ATTR_T - - - ) - -318  -__d¬wš_±h»ad_©Ś_t - - t±h»ad_©Ś_t -; - -320 #iâdeŕ -_PTHREAD_COND_T - - -321  - #_PTHREAD_COND_T - - - ) - -322  -__d¬wš_±h»ad_cÚd_t - - t±h»ad_cÚd_t -; - -324 #iâdeŕ -_PTHREAD_CONDATTR_T - - -325  - #_PTHREAD_CONDATTR_T - - - ) - -326  -__d¬wš_±h»ad_cÚd©Ś_t - - t±h»ad_cÚd©Ś_t -; - -328 #iâdeŕ -_PTHREAD_MUTEX_T - - -329  - #_PTHREAD_MUTEX_T - - - ) - -330  -__d¬wš_±h»ad_mu‹x_t - - t±h»ad_mu‹x_t -; - -332 #iâdeŕ -_PTHREAD_MUTEXATTR_T - - -333  - #_PTHREAD_MUTEXATTR_T - - - ) - -334  -__d¬wš_±h»ad_mu‹x©Ś_t - - t±h»ad_mu‹x©Ś_t -; - -336 #iâdeŕ -_PTHREAD_ONCE_T - - -337  - #_PTHREAD_ONCE_T - - - ) - -338  -__d¬wš_±h»ad_Úű_t - - t±h»ad_Úű_t -; - -340 #iâdeŕ -_PTHREAD_RWLOCK_T - - -341  - #_PTHREAD_RWLOCK_T - - - ) - -342  -__d¬wš_±h»ad_rwlock_t - - t±h»ad_rwlock_t -; - -344 #iâdeŕ -_PTHREAD_RWLOCKATTR_T - - -345  - #_PTHREAD_RWLOCKATTR_T - - - ) - -346  -__d¬wš_±h»ad_rwlock©Ś_t - - t±h»ad_rwlock©Ś_t -; - -348 #iâdeŕ -_PTHREAD_T - - -349  - #_PTHREAD_T - - - ) - -350  -__d¬wš_±h»ad_t - - t±h»ad_t -; - -355 #iâdeŕ -_PTHREAD_KEY_T - - -356  - #_PTHREAD_KEY_T - - - ) - -357  -__d¬wš_±h»ad_key_t - - t±h»ad_key_t -; - -361 #iâdeŕ -_FSBLKCNT_T - - -362  - #_FSBLKCNT_T - - - ) - -363  -__d¬wš_fsblkút_t - - tfsblkút_t -; - -366 #iâdeŕ -_FSFILCNT_T - - -367  - #_FSFILCNT_T - - - ) - -368  -__d¬wš_fsfžút_t - - tfsfžút_t -; - - @/usr/include/unistd.h - -68 #iâdeŕ -_UNISTD_H_ - - -69  - #_UNISTD_H_ - - - ) - -71  - ~<_tyłs.h -> - -72  - ~ - -74 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -75 #iâdeŕ -_DEV_T - - -76  - #_DEV_T - - - ) - -77  -__d¬wš_dev_t - - tdev_t -; - -81 #iâdeŕ -_GID_T - - -82  - #_GID_T - - - ) - -83  -__d¬wš_gid_t - - tgid_t -; - -86 #iâdeŕ -_INTPTR_T - - -87  - #_INTPTR_T - - - ) - -88  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -91 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -92 #iâdeŕ -_MODE_T - - -93  - #_MODE_T - - - ) - -94  -__d¬wš_mode_t - - tmode_t -; - -98 #iâdeŕ -_OFF_T - - -99  - #_OFF_T - - - ) - -100  -__d¬wš_off_t - - toff_t -; - -103 #iâdeŕ -_PID_T - - -104  - #_PID_T - - - ) - -105  -__d¬wš_pid_t - - tpid_t -; - -108 #iâdeŕ -_SIZE_T - - -109  - #_SIZE_T - - - ) - -112  -__d¬wš_size_t - - tsize_t -; - -115 #iâdef -_SSIZE_T - - -116  - #_SSIZE_T - - - ) - -117  -__d¬wš_ssize_t - - tssize_t -; - -120 #iâdeŕ -_UID_T - - -121  - #_UID_T - - - ) - -122  -__d¬wš_uid_t - - tuid_t -; - -125 #iâdeŕ -_USECONDS_T - - -126  - #_USECONDS_T - - - ) - -127  -__d¬wš_uŁcÚds_t - - tuŁcÚds_t -; - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -131 #iâdeŕ -_UUID_T - - -132  - #_UUID_T - - - ) - -133  -__d¬wš_uuid_t - - tuuid_t -; - -137  - #STDIN_FILENO - 0 - - ) - -138  - #STDOUT_FILENO - 1 - - ) - -139  - #STDERR_FILENO - 2 - - ) - -141 #iâdeŕ -NULL - - -142  - #NULL - -__DARWIN_NULL - - - ) - -147  - #_XOPEN_VERSION - 600 - - ) - -148  - #_XOPEN_XCU_VERSION - 4 - - ) - -152  - #_POSIX_ADVISORY_INFO - (-1č - - ) - -153  - #_POSIX_ASYNCHRONOUS_IO - (-1č - - ) - -154  - #_POSIX_BARRIERS - (-1č - - ) - -155  - #_POSIX_CHOWN_RESTRICTED - 200112L - - ) - -156  - #_POSIX_CLOCK_SELECTION - (-1č - - ) - -157  - #_POSIX_CPUTIME - (-1č - - ) - -158  - #_POSIX_FSYNC - 200112L - - ) - -159  - #_POSIX_IPV6 - 200112L - - ) - -160  - #_POSIX_JOB_CONTROL - 200112L - - ) - -161  - #_POSIX_MAPPED_FILES - 200112L - - ) - -162  - #_POSIX_MEMLOCK - (-1č - - ) - -163  - #_POSIX_MEMLOCK_RANGE - (-1č - - ) - -164  - #_POSIX_MEMORY_PROTECTION - 200112L - - ) - -165  - #_POSIX_MESSAGE_PASSING - (-1č - - ) - -166  - #_POSIX_MONOTONIC_CLOCK - (-1č - - ) - -167  - #_POSIX_NO_TRUNC - 200112L - - ) - -168  - #_POSIX_PRIORITIZED_IO - (-1č - - ) - -169  - #_POSIX_PRIORITY_SCHEDULING - (-1č - - ) - -170  - #_POSIX_RAW_SOCKETS - (-1č - - ) - -171  - #_POSIX_READER_WRITER_LOCKS - 200112L - - ) - -172  - #_POSIX_REALTIME_SIGNALS - (-1č - - ) - -173  - #_POSIX_REGEXP - 200112L - - ) - -174  - #_POSIX_SAVED_IDS - 200112L - - ) - -175  - #_POSIX_SEMAPHORES - (-1č - - ) - -176  - #_POSIX_SHARED_MEMORY_OBJECTS - (-1č - - ) - -177  - #_POSIX_SHELL - 200112L - - ) - -178  - #_POSIX_SPAWN - (-1č - - ) - -179  - #_POSIX_SPIN_LOCKS - (-1č - - ) - -180  - #_POSIX_SPORADIC_SERVER - (-1č - - ) - -181  - #_POSIX_SYNCHRONIZED_IO - (-1č - - ) - -182  - #_POSIX_THREAD_ATTR_STACKADDR - 200112L - - ) - -183  - #_POSIX_THREAD_ATTR_STACKSIZE - 200112L - - ) - -184  - #_POSIX_THREAD_CPUTIME - (-1č - - ) - -185  - #_POSIX_THREAD_PRIO_INHERIT - (-1č - - ) - -186  - #_POSIX_THREAD_PRIO_PROTECT - (-1č - - ) - -187  - #_POSIX_THREAD_PRIORITY_SCHEDULING - (-1č - - ) - -188  - #_POSIX_THREAD_PROCESS_SHARED - 200112L - - ) - -189  - #_POSIX_THREAD_SAFE_FUNCTIONS - 200112L - - ) - -190  - #_POSIX_THREAD_SPORADIC_SERVER - (-1č - - ) - -191  - #_POSIX_THREADS - 200112L - - ) - -192  - #_POSIX_TIMEOUTS - (-1č - - ) - -193  - #_POSIX_TIMERS - (-1č - - ) - -194  - #_POSIX_TRACE - (-1č - - ) - -195  - #_POSIX_TRACE_EVENT_FILTER - (-1č - - ) - -196  - #_POSIX_TRACE_INHERIT - (-1č - - ) - -197  - #_POSIX_TRACE_LOG - (-1č - - ) - -198  - #_POSIX_TYPED_MEMORY_OBJECTS - (-1č - - ) - -199 #iâdeŕ -_POSIX_VDISABLE - - -200  - #_POSIX_VDISABLE - 0xfŕ - - ) - -203  - #_POSIX2_C_BIND - 200112L - - ) - -204  - #_POSIX2_C_DEV - 200112L - - ) - -205  - #_POSIX2_CHAR_TERM - 200112L - - ) - -206  - #_POSIX2_FORT_DEV - (-1č - - ) - -207  - #_POSIX2_FORT_RUN - 200112L - - ) - -208  - #_POSIX2_LOCALEDEF - 200112L - - ) - -209  - #_POSIX2_PBS - (-1) - - ) - -210  - #_POSIX2_PBS_ACCOUNTING - (-1) - - ) - -211  - #_POSIX2_PBS_CHECKPOINT - (-1) - - ) - -212  - #_POSIX2_PBS_LOCATE - (-1) - - ) - -213  - #_POSIX2_PBS_MESSAGE - (-1) - - ) - -214  - #_POSIX2_PBS_TRACK - (-1) - - ) - -215  - #_POSIX2_SW_DEV - 200112L - - ) - -216  - #_POSIX2_UPE - 200112L - - ) - -218  - #_V6_ILP32_OFF32 - (-1) - - ) - -219  - #_V6_ILP32_OFFBIG - (1) - - ) - -220  - #_V6_LP64_OFF64 - (-1) - - ) - -221  - #_V6_LPBIG_OFFBIG - (-1) - - ) - -223  - #_XBS5_ILP32_OFF32 - -_V6_ILP32_OFF32 - - - ) - -224  - #_XBS5_ILP32_OFFBIG - -_V6_ILP32_OFFBIG - - - ) - -225  - #_XBS5_LP64_OFF64 - -_V6_LP64_OFF64 - - - ) - -226  - #_XBS5_LPBIG_OFFBIG - -_V6_LPBIG_OFFBIG - - - ) - -228  - #_XOPEN_CRYPT - (1) - - ) - -229  - #_XOPEN_ENH_I18N - (1č - - ) - -230  - #_XOPEN_LEGACY - (-1č - - ) - -231  - #_XOPEN_REALTIME - (-1č - - ) - -232  - #_XOPEN_REALTIME_THREADS - (-1č - - ) - -233  - #_XOPEN_SHM - (1) - - ) - -234  - #_XOPEN_STREAMS - (-1) - - ) - -235  - #_XOPEN_UNIX - (1) - - ) - -238  - #F_ULOCK - 0 - - ) - -239  - #F_LOCK - 1 - - ) - -240  - #F_TLOCK - 2 - - ) - -241  - #F_TEST - 3 - - ) - -244  - #_SC_ARG_MAX - 1 - - ) - -245  - #_SC_CHILD_MAX - 2 - - ) - -246  - #_SC_CLK_TCK - 3 - - ) - -247  - #_SC_NGROUPS_MAX - 4 - - ) - -248  - #_SC_OPEN_MAX - 5 - - ) - -249  - #_SC_JOB_CONTROL - 6 - - ) - -250  - #_SC_SAVED_IDS - 7 - - ) - -251  - #_SC_VERSION - 8 - - ) - -252  - #_SC_BC_BASE_MAX - 9 - - ) - -253  - #_SC_BC_DIM_MAX - 10 - - ) - -254  - #_SC_BC_SCALE_MAX - 11 - - ) - -255  - #_SC_BC_STRING_MAX - 12 - - ) - -256  - #_SC_COLL_WEIGHTS_MAX - 13 - - ) - -257  - #_SC_EXPR_NEST_MAX - 14 - - ) - -258  - #_SC_LINE_MAX - 15 - - ) - -259  - #_SC_RE_DUP_MAX - 16 - - ) - -260  - #_SC_2_VERSION - 17 - - ) - -261  - #_SC_2_C_BIND - 18 - - ) - -262  - #_SC_2_C_DEV - 19 - - ) - -263  - #_SC_2_CHAR_TERM - 20 - - ) - -264  - #_SC_2_FORT_DEV - 21 - - ) - -265  - #_SC_2_FORT_RUN - 22 - - ) - -266  - #_SC_2_LOCALEDEF - 23 - - ) - -267  - #_SC_2_SW_DEV - 24 - - ) - -268  - #_SC_2_UPE - 25 - - ) - -269  - #_SC_STREAM_MAX - 26 - - ) - -270  - #_SC_TZNAME_MAX - 27 - - ) - -271  - #_SC_ASYNCHRONOUS_IO - 28 - - ) - -272  - #_SC_PAGESIZE - 29 - - ) - -273  - #_SC_MEMLOCK - 30 - - ) - -274  - #_SC_MEMLOCK_RANGE - 31 - - ) - -275  - #_SC_MEMORY_PROTECTION - 32 - - ) - -276  - #_SC_MESSAGE_PASSING - 33 - - ) - -277  - #_SC_PRIORITIZED_IO - 34 - - ) - -278  - #_SC_PRIORITY_SCHEDULING - 35 - - ) - -279  - #_SC_REALTIME_SIGNALS - 36 - - ) - -280  - #_SC_SEMAPHORES - 37 - - ) - -281  - #_SC_FSYNC - 38 - - ) - -282  - #_SC_SHARED_MEMORY_OBJECTS - 39 - - ) - -283  - #_SC_SYNCHRONIZED_IO - 40 - - ) - -284  - #_SC_TIMERS - 41 - - ) - -285  - #_SC_AIO_LISTIO_MAX - 42 - - ) - -286  - #_SC_AIO_MAX - 43 - - ) - -287  - #_SC_AIO_PRIO_DELTA_MAX - 44 - - ) - -288  - #_SC_DELAYTIMER_MAX - 45 - - ) - -289  - #_SC_MQ_OPEN_MAX - 46 - - ) - -290  - #_SC_MAPPED_FILES - 47 - - ) - -291  - #_SC_RTSIG_MAX - 48 - - ) - -292  - #_SC_SEM_NSEMS_MAX - 49 - - ) - -293  - #_SC_SEM_VALUE_MAX - 50 - - ) - -294  - #_SC_SIGQUEUE_MAX - 51 - - ) - -295  - #_SC_TIMER_MAX - 52 - - ) - -296 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -297  - #_SC_NPROCESSORS_CONF - 57 - - ) - -298  - #_SC_NPROCESSORS_ONLN - 58 - - ) - -300  - #_SC_2_PBS - 59 - - ) - -301  - #_SC_2_PBS_ACCOUNTING - 60 - - ) - -302  - #_SC_2_PBS_CHECKPOINT - 61 - - ) - -303  - #_SC_2_PBS_LOCATE - 62 - - ) - -304  - #_SC_2_PBS_MESSAGE - 63 - - ) - -305  - #_SC_2_PBS_TRACK - 64 - - ) - -306  - #_SC_ADVISORY_INFO - 65 - - ) - -307  - #_SC_BARRIERS - 66 - - ) - -308  - #_SC_CLOCK_SELECTION - 67 - - ) - -309  - #_SC_CPUTIME - 68 - - ) - -310  - #_SC_FILE_LOCKING - 69 - - ) - -311  - #_SC_GETGR_R_SIZE_MAX - 70 - - ) - -312  - #_SC_GETPW_R_SIZE_MAX - 71 - - ) - -313  - #_SC_HOST_NAME_MAX - 72 - - ) - -314  - #_SC_LOGIN_NAME_MAX - 73 - - ) - -315  - #_SC_MONOTONIC_CLOCK - 74 - - ) - -316  - #_SC_MQ_PRIO_MAX - 75 - - ) - -317  - #_SC_READER_WRITER_LOCKS - 76 - - ) - -318  - #_SC_REGEXP - 77 - - ) - -319  - #_SC_SHELL - 78 - - ) - -320  - #_SC_SPAWN - 79 - - ) - -321  - #_SC_SPIN_LOCKS - 80 - - ) - -322  - #_SC_SPORADIC_SERVER - 81 - - ) - -323  - #_SC_THREAD_ATTR_STACKADDR - 82 - - ) - -324  - #_SC_THREAD_ATTR_STACKSIZE - 83 - - ) - -325  - #_SC_THREAD_CPUTIME - 84 - - ) - -326  - #_SC_THREAD_DESTRUCTOR_ITERATIONS - 85 - - ) - -327  - #_SC_THREAD_KEYS_MAX - 86 - - ) - -328  - #_SC_THREAD_PRIO_INHERIT - 87 - - ) - -329  - #_SC_THREAD_PRIO_PROTECT - 88 - - ) - -330  - #_SC_THREAD_PRIORITY_SCHEDULING - 89 - - ) - -331  - #_SC_THREAD_PROCESS_SHARED - 90 - - ) - -332  - #_SC_THREAD_SAFE_FUNCTIONS - 91 - - ) - -333  - #_SC_THREAD_SPORADIC_SERVER - 92 - - ) - -334  - #_SC_THREAD_STACK_MIN - 93 - - ) - -335  - #_SC_THREAD_THREADS_MAX - 94 - - ) - -336  - #_SC_TIMEOUTS - 95 - - ) - -337  - #_SC_THREADS - 96 - - ) - -338  - #_SC_TRACE - 97 - - ) - -339  - #_SC_TRACE_EVENT_FILTER - 98 - - ) - -340  - #_SC_TRACE_INHERIT - 99 - - ) - -341  - #_SC_TRACE_LOG - 100 - - ) - -342  - #_SC_TTY_NAME_MAX - 101 - - ) - -343  - #_SC_TYPED_MEMORY_OBJECTS - 102 - - ) - -344  - #_SC_V6_ILP32_OFF32 - 103 - - ) - -345  - #_SC_V6_ILP32_OFFBIG - 104 - - ) - -346  - #_SC_V6_LP64_OFF64 - 105 - - ) - -347  - #_SC_V6_LPBIG_OFFBIG - 106 - - ) - -348  - #_SC_IPV6 - 118 - - ) - -349  - #_SC_RAW_SOCKETS - 119 - - ) - -350  - #_SC_SYMLOOP_MAX - 120 - - ) - -351  - #_SC_ATEXIT_MAX - 107 - - ) - -352  - #_SC_IOV_MAX - 56 - - ) - -353  - #_SC_PAGE_SIZE - -_SC_PAGESIZE - - - ) - -354  - #_SC_XOPEN_CRYPT - 108 - - ) - -355  - #_SC_XOPEN_ENH_I18N - 109 - - ) - -356  - #_SC_XOPEN_LEGACY - 110 - - ) - -357  - #_SC_XOPEN_REALTIME - 111 - - ) - -358  - #_SC_XOPEN_REALTIME_THREADS - 112 - - ) - -359  - #_SC_XOPEN_SHM - 113 - - ) - -360  - #_SC_XOPEN_STREAMS - 114 - - ) - -361  - #_SC_XOPEN_UNIX - 115 - - ) - -362  - #_SC_XOPEN_VERSION - 116 - - ) - -363  - #_SC_XOPEN_XCU_VERSION - 121 - - ) - -364  - #_SC_XBS5_ILP32_OFF32 - 122 - - ) - -365  - #_SC_XBS5_ILP32_OFFBIG - 123 - - ) - -366  - #_SC_XBS5_LP64_OFF64 - 124 - - ) - -367  - #_SC_XBS5_LPBIG_OFFBIG - 125 - - ) - -368  - #_SC_SS_REPL_MAX - 126 - - ) - -369  - #_SC_TRACE_EVENT_NAME_MAX - 127 - - ) - -370  - #_SC_TRACE_NAME_MAX - 128 - - ) - -371  - #_SC_TRACE_SYS_MAX - 129 - - ) - -372  - #_SC_TRACE_USER_EVENT_MAX - 130 - - ) - -373  - #_SC_PASS_MAX - 131 - - ) - -375 #iâdeŕ -_CS_PATH - - -376  - #_CS_PATH - 1 - - ) - -378  - #_CS_POSIX_V6_ILP32_OFF32_CFLAGS - 2 - - ) - -379  - #_CS_POSIX_V6_ILP32_OFF32_LDFLAGS - 3 - - ) - -380  - #_CS_POSIX_V6_ILP32_OFF32_LIBS - 4 - - ) - -381  - #_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS - 5 - - ) - -382  - #_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS - 6 - - ) - -383  - #_CS_POSIX_V6_ILP32_OFFBIG_LIBS - 7 - - ) - -384  - #_CS_POSIX_V6_LP64_OFF64_CFLAGS - 8 - - ) - -385  - #_CS_POSIX_V6_LP64_OFF64_LDFLAGS - 9 - - ) - -386  - #_CS_POSIX_V6_LP64_OFF64_LIBS - 10 - - ) - -387  - #_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS - 11 - - ) - -388  - #_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS - 12 - - ) - -389  - #_CS_POSIX_V6_LPBIG_OFFBIG_LIBS - 13 - - ) - -390  - #_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS - 14 - - ) - -393  - #_CS_XBS5_ILP32_OFF32_CFLAGS - 20 - - ) - -394  - #_CS_XBS5_ILP32_OFF32_LDFLAGS - 21 - - ) - -395  - #_CS_XBS5_ILP32_OFF32_LIBS - 22 - - ) - -396  - #_CS_XBS5_ILP32_OFF32_LINTFLAGS - 23 - - ) - -397  - #_CS_XBS5_ILP32_OFFBIG_CFLAGS - 24 - - ) - -398  - #_CS_XBS5_ILP32_OFFBIG_LDFLAGS - 25 - - ) - -399  - #_CS_XBS5_ILP32_OFFBIG_LIBS - 26 - - ) - -400  - #_CS_XBS5_ILP32_OFFBIG_LINTFLAGS - 27 - - ) - -401  - #_CS_XBS5_LP64_OFF64_CFLAGS - 28 - - ) - -402  - #_CS_XBS5_LP64_OFF64_LDFLAGS - 29 - - ) - -403  - #_CS_XBS5_LP64_OFF64_LIBS - 30 - - ) - -404  - #_CS_XBS5_LP64_OFF64_LINTFLAGS - 31 - - ) - -405  - #_CS_XBS5_LPBIG_OFFBIG_CFLAGS - 32 - - ) - -406  - #_CS_XBS5_LPBIG_OFFBIG_LDFLAGS - 33 - - ) - -407  - #_CS_XBS5_LPBIG_OFFBIG_LIBS - 34 - - ) - -408  - #_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS - 35 - - ) - -410  - #_CS_DARWIN_USER_DIR - 65536 - - ) - -411  - #_CS_DARWIN_USER_TEMP_DIR - 65537 - - ) - -412  - #_CS_DARWIN_USER_CACHE_DIR - 65538 - - ) - -414 -__BEGIN_DECLS - - -416  - $_ex™ -(č -__d—d2 -; - -417  - `acűss -(const *, ); - -419 - `®¬m -(); - -420  - `chdś -(const *); - -421  - `chown -(cÚˇ *, -uid_t -, -gid_t -); - -422  - $ţoŁ -(č - `__DARWIN_ALIAS_C -( -ţoŁ -); - -423 -size_t - - $cÚfˇr -(, *, -size_t -č - `__DARWIN_ALIAS -( -cÚfˇr -); - -424 * - `üy± -(const *, const *); - -425 * - `ů”mid -(*); - -426  - `dup -(); - -427  - `dup2 -(, ); - -428 #iŕ -__DARWIN_UNIX03 - - -429  - $’üy± -(*, č - `__DARWIN_ALIAS -( -’üy± -); - -431  - `’üy± -(*, ); - -433  - `exeţ -(const *, const *, ...); - -434  - `exeţe -(const *, const *, ...); - -435  - `exeţp -(const *, const *, ...); - -436  - `execv -(const *, * const *); - -437  - `execve -(const *, * const *, * const *); - -438  - `execvp -(const *, * const *); - -439  - `fchown -(, -uid_t -, -gid_t -); - -440  - `fchdś -(); - -441 -pid_t - - `fÜk -(); - -442  - `ĺ©hcÚf -(, ); - -443  - $fsync -(č - `__DARWIN_ALIAS_C -( -fsync -); - -444  - `árun˙‹ -(, -off_t -); - -445 * - `g‘cwd -(*, -size_t -); - -446 -gid_t - - `g‘egid -(); - -447 -uid_t - - `g‘euid -(); - -448 -gid_t - - `g‘gid -(); - -449  - `g‘groups -(, -gid_t - []); - -450  - `g‘hoˇid -(); - -451  - `g‘hoˇÇme -(*, -size_t -); - -452 * - `g‘logš -(); - -453  - `g‘logš_r -(*, -size_t -); - -454  - $g‘Ýt -(, * cÚˇ [], cÚˇ *č - `__DARWIN_ALIAS -( -g‘Ýt -); - -455 -pid_t - - `g‘pgid -(pid_t); - -456 -pid_t - - `g‘pg˝ -(); - -457 -pid_t - - `g‘pid -(); - -458 -pid_t - - `g‘µid -(); - -459 -pid_t - - `g‘sid -(pid_t); - -460 -uid_t - - `g‘uid -(); - -461 * - `g‘wd -(*); - -462  - `i§‰y -(); - -463  - $lchown -(cÚˇ *, -uid_t -, -gid_t -č - `__DARWIN_ALIAS -( -lchown -); - -464  - `lšk -(const *, const *); - -465  - $lockf -(, , -off_t -č - `__DARWIN_ALIAS_C -( -lockf -); - -466 -off_t - - `lŁek -(, off_t, ); - -467  - $niű -(č - `__DARWIN_ALIAS -( -niű -); - -468  - `·thcÚf -(const *, ); - -469  - $·uŁ -(č - `__DARWIN_ALIAS_C -( -·uŁ -); - -470  - `pťe -([2]); - -471 -ssize_t - - $´—d -(, *, -size_t -, -off_t -č - `__DARWIN_ALIAS_C -( -´—d -); - -472 -ssize_t - - $pwr™e -(, cÚˇ *, -size_t -, -off_t -č - `__DARWIN_ALIAS_C -( -pwr™e -); - -473 -ssize_t - - $»ad -(, *, -size_t -č - `__DARWIN_ALIAS_C -( -»ad -); - -474 -ssize_t - - `»adlšk -(cÚˇ * -__»ˇriů -, * __»ˇriů, -size_t -); - -475  - `rmdś -(const *); - -476  - `Ł‹gid -( -gid_t -); - -477  - `Ł‹uid -( -uid_t -); - -478  - `Łtgid -( -gid_t -); - -479  - `ŁŤgid -( -pid_t -,…id_t); - -480 #iŕ -__DARWIN_UNIX03 - - -481 -pid_t - - $ŁŤg˝ -(č - `__DARWIN_ALIAS -( -ŁŤg˝ -); - -483  - `ŁŤg˝ -( -pid_t - -pid -,…id_ -pg˝ -); - -485  - $ŁŚegid -( -gid_t -, gid_tč - `__DARWIN_ALIAS -( -ŁŚegid -); - -486  - $ŁŚeuid -( -uid_t -, uid_tč - `__DARWIN_ALIAS -( -ŁŚeuid -); - -487 -pid_t - - `Łtsid -(); - -488  - `Łtuid -( -uid_t -); - -490 - $¦“p -(č - `__DARWIN_ALIAS_C -( -¦“p -); - -491  - `swab -(cÚˇ * -__»ˇriů -, * __»ˇriů, -ssize_t -); - -492  - `symlšk -(const *, const *); - -493  - `sync -(); - -494  - `syscÚf -(); - -495 -pid_t - - `tcg‘pg˝ -(); - -496  - `tcŁŤg˝ -(, -pid_t -); - -497  - `Śun˙‹ -(cÚˇ *, -off_t -); - -498 * - `‰yÇme -(); - -499 #iŕ -__DARWIN_UNIX03 - - -500  - $‰yÇme_r -(, *, -size_t -č - `__DARWIN_ALIAS -( -‰yÇme_r -); - -502 * - `‰yÇme_r -(, *, -size_t -); - -504 -uŁcÚds_t - - -505 - `u®¬m -( -uŁcÚds_t -, useconds_t); - -506  - `uĆšk -(const *); - -507  - $u¦“p -( -uŁcÚds_t -č - `__DARWIN_ALIAS_C -( -u¦“p -); - -508 -pid_t - - `vfÜk -(); - -509 -ssize_t - - $wr™e -(, cÚˇ *, -size_t -č - `__DARWIN_ALIAS_C -( -wr™e -); - -511 * -ÝŹrg -; - -512  -Ýtšd -, -Ý‹Ľ -, -ÝtÝt -; - -514 #if ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -515  - ~ - -517  - $_Ex™ -(č -__d—d2 -; - -518  - `acűssx_Ĺ -(cÚˇ  -acűssx_desüťtÜ - *, -size_t -, *, -uid_t -); - -519  - `aců -(const *); - -520  - `add_´ofž -(*, -size_t -, , ); - -521 * - `brk -(const *); - -522  - `chroŮ -(const *); - -523  - `’duŁrsh–l -(); - -524  - `execvP -(const *, const *, * const *); - -525 * - `fćagˇoˇr -(); - -526  - `g‘dŹbËsize -(); - -527  - `g‘domašÇme -(*, ); - -528  - `g‘grou¶iˇ -(const *, , *, *); - -529 -mode_t - - `g‘mode -(const *, mode_t); - -530  - $g‘·gesize -(č -__pu»2 -; - -531 * - `g‘·ss -(const *); - -532  - `g‘ł”eid -(, -uid_t - *, -gid_t - *); - -533  - `g‘pgid -( -pid_t - -_pid -); - -534  - `g‘sgroups_Ĺ -(*, -uuid_t -); - -535  - `g‘sid -( -pid_t - -_pid -); - -536 * - `g‘uŁrsh–l -(); - -537  - `g‘wgroups_Ĺ -(*, -uuid_t -); - -538  - `š™groups -(const *, ); - -539  - `śuŁrok -(, , const *, const *); - -540  - `śuŁrok_§ -(const *, , , const *, const *); - -541  - `isŁtugid -(); - -542 * - `mkd‹mp -(*); - -543  - `mknod -(cÚˇ *, -mode_t -, -dev_t -); - -544  - `mkˇemp -(*); - -545  - `mkˇemps -(*, ); - -546 * - `mk‹mp -(*); - -547  - `nfssvc -(, *); - -548  - `´ofž -(*, -size_t -, , ); - -549  - `±h»ad_Łtugid_Ĺ -( -uid_t -, -gid_t -); - -550  - `±h»ad_g‘ugid_Ĺ -Đ -uid_t - *, -gid_t - *); - -551  - `rcmd -(**, , const *, const *, const *, *); - -552  - `rcmd_af -(**, , const *, const *, const *, *, - -554  - `»boŮ -(); - -555  - `»voke -(const *); - -556  - `ĽesvpÜt -(*); - -557  - `ĽesvpÜt_af -(*, ); - -558  - `ruŁrok -(const *, , const *, const *); - -559 * - `sbrk -(); - -560  - `ŁtdomašÇme -(const *, ); - -561  - `Łtgroups -(, cÚˇ -gid_t - *); - -562  - `Łthoˇid -(); - -563  - `ŁthoˇÇme -(const *, ); - -564 #iŕ -__DARWIN_UNIX03 - - -565  - $Łtkey -(cÚˇ *č - `__DARWIN_ALIAS -( -Łtkey -); - -567  - `Łtkey -(const *); - -569  - `ŁŽogš -(const *); - -570 * - `Łtmode -(const *); - -571  - `ŁŚgid -( -gid_t -); - -572  - `ŁŚuid -( -uid_t -); - -573  - `Łtsgroups_Ĺ -(, cÚˇ -uuid_t -); - -574  - `ŁtuŁrsh–l -(); - -575  - `Łtwgroups_Ĺ -(, cÚˇ -uuid_t -); - -576  - `ˇąofćags -(**, *, *); - -577  - `sw­Ú -(const *); - -578  - `sys˙Î -(, ...); - -579  - `‰y¦Ů -(); - -580  - `und–‘e -(const *); - -581  - `unwh™eout -(const *); - -582 * - `v®loc -( -size_t -); - -584 * -subÝŹrg -; - -585  - `g‘subÝt -(**, * const *, **); - -588 #ifdeŕ -__LP64__ - - -589  - $g‘©Śliˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -g‘©Śliˇ -); - -590  - $ŁŹ‰ľiˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -ŁŹ‰ľiˇ -); - -591  - `exchŞged©a -(const *,const *,); - -592  - `g‘dś’Ś›§‰r -(,*,*, -size_t -,*,*,*,); - -593  - `٬chfs -(const *,*,*,,,*); - -595  - `fsůl -(const *,,*,); - -597  - $g‘©Śliˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -g‘©Śliˇ -); - -598  - $ŁŹ‰ľiˇ -(cÚˇ *,*,*, -size_t -,č - `__DARWIN_ALIAS -( -ŁŹ‰ľiˇ -); - -599  - `exchŞged©a -(const *,const *,); - -600  - `g‘dś’Ś›§‰r -(,*,*, -size_t -,*,*,*,); - -601  - `٬chfs -(const *,*,*,,,*); - -603  - `fsůl -(const *,,*,); - -606  -ÝŚeŁt -; - -609 -__END_DECLS - - - @/usr/include/_types.h - -24 #iâdeŕ -__TYPES_H_ - - -25  - #__TYPES_H_ - - - ) - -27  - ~ - -29  - t__d¬wš_Ć_™em -; - -30  - t__d¬wš_wůżns_t -; - -31 #ifdeŕ -__LP64__ - - -32  -__ušt32_t - - t__d¬wš_wůył_t -; - -34  - t__d¬wš_wůył_t -; - -37 #ifdeŕ -__WCHAR_MAX__ - - -38  - #__DARWIN_WCHAR_MAX - -__WCHAR_MAX__ - - - ) - -40  - #__DARWIN_WCHAR_MAX - 0x7fffffff - - ) - -43 #iŕ -__DARWIN_WCHAR_MAX - > 0xffffU - -44  - #__DARWIN_WCHAR_MIN - (-0x7ffffffŕ- 1) - - ) - -46  - #__DARWIN_WCHAR_MIN - 0 - - ) - -48  - #__DARWIN_WEOF - (( -__d¬wš_wšt_t -)-1) - - ) - - @/usr/include/_xlocale.h - -24 #iâdeŕ -__XLOCALE_H_ - - -25  - #__XLOCALE_H_ - - - ) - -27  - ~ - -29 -__BEGIN_DECLS - - -30  -___mb_cur_max -(); - -31  -___mb_cur_max_l -( -lo˙Ë_t -); - -32 - g__END_DECLS - - - @/usr/include/alloca.h - -24 #iâdeŕ -_ALLOCA_H_ - - -25  - #_ALLOCA_H_ - - - ) - -27  - ~ - -28  - ~<_tyłs.h -> - -30 #iâdef -_SIZE_T - - -31  - #_SIZE_T - - - ) - -32  -__d¬wš_size_t - - tsize_t -; - -35 -__BEGIN_DECLS - - -36 * -®lo˙ -( -size_t -); - -37 - g__END_DECLS - - -39 #iŕ -defšed -( -__GNUC__ -) && __GNUC__ >= 3 - -41 #undeŕ -®lo˙ - - -42 #undeŕ -__®lo˙ - - -43  - #®lo˙ -( -size -č - `__®lo˙ -(size) - - ) - -44  - #__®lo˙ -( -size -č - `__bužtš_®lo˙ -(size) - - ) - - @/usr/include/available.h - -65 #iâdeŕ -_AVAILABLE_H_ - - -66  - #_AVAILABLE_H_ - - - ) - -72  - #__MAC_OS_X_VERSION_10_0 - 1000 - - ) - -73  - #__MAC_OS_X_VERSION_10_1 - 1010 - - ) - -74  - #__MAC_OS_X_VERSION_10_2 - 1020 - - ) - -75  - #__MAC_OS_X_VERSION_10_3 - 1030 - - ) - -76  - #__MAC_OS_X_VERSION_10_4 - 1040 - - ) - -77  - #__MAC_OS_X_VERSION_10_5 - 1050 - - ) - -84 #iâdeŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - - -85 #ifdeŕ -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - - -86  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - - - ) - -88 #iŕ -__µc64__ - || -__i386__ - || -__x86_64__ - - -89  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__MAC_OS_X_VERSION_10_4 - - - ) - -91  - #__MAC_OS_X_VERSION_MIN_REQUIRED - -__MAC_OS_X_VERSION_10_1 - - - ) - -99 #iâdeŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - - -100 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - > -__MAC_OS_X_VERSION_10_5 - - -101  - #__MAC_OS_X_VERSION_MAX_ALLOWED - -__MAC_OS_X_VERSION_MIN_REQUIRED - - - ) - -103  - #__MAC_OS_X_VERSION_MAX_ALLOWED - -__MAC_OS_X_VERSION_10_5 - - - ) - -110 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_MIN_REQUIRED - - -111 #”rÜ -__MAC_OS_X_VERSION_MAX_ALLOWED - -muˇ - -be - >đ -__MAC_OS_X_VERSION_MIN_REQUIRED - - -113 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_0 - - -114 #”rÜ -__MAC_OS_X_VERSION_MIN_REQUIRED - -muˇ - -be - >đ -__MAC_OS_X_VERSION_10_0 - - -120 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >đ1))č&& ( -__MAC_OS_X_VERSION_MIN_REQUIRED - >= 1020) - -121  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - `__©Śibu‹__ -(( -w—k_impÜt -)) - - ) - -122 #–iŕ -defšed -( -__MWERKS__ -č&& (__MWERKS__ >đ0x3205č&& ( -__MAC_OS_X_VERSION_MIN_REQUIRED - >= 1020) - -123  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - `__©Śibu‹__ -(( -w—k_impÜt -)) - - ) - -125  - #__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -131 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >= 1))) - -132  - #__DARWIN_DEPRECATED_ATTRIBUTE - - `__©Śibu‹__ -(( -d•»˙‹d -)) - - ) - -134  - #__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -140 #iŕ -defšed -( -__GNUC__ -č&& ((__GNUC__ >đ4č|| ((__GNUC__ =đ3č&& ( -__GNUC_MINOR__ - >= 1))) - -141  - #__DARWIN_UNAVAILABLE_ATTRIBUTE - - `__©Śibu‹__ -(( -uÇvažabË -)) - - ) - -143  - #__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -153  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -161  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -168  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -180 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_1 - - -181  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -182 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_1 - - -183  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -185  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -194 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -195  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -197  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -206 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -207  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -209  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -217 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_1 - - -218  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -220  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -234 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_2 - - -235  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -236 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_2 - - -237  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -239  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -248 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -249  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -251  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -260 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -261  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -263  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -272 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -273  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -275  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -283 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_2 - - -284  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -286  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -298 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_3 - - -299  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -300 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_3 - - -301  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -303  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -312 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -313  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -315  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -324 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -325  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -327  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -336 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -337  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -339  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -348 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -349  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -351  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -359 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_3 - - -360  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -362  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -375 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_4 - - -376  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -377 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_4 - - -378  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -380  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -389 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -390  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -392  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -401 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -402  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -404  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -413 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -414  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -416  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -425 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -426  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -428  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -437 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -438  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -440  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -448 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_4 - - -449  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -451  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -463 #iŕ -__MAC_OS_X_VERSION_MAX_ALLOWED - < -__MAC_OS_X_VERSION_10_5 - - -464  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_UNAVAILABLE_ATTRIBUTE - - - ) - -465 #–iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - < -__MAC_OS_X_VERSION_10_5 - - -466  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_WEAK_IMPORT_ATTRIBUTE - - - ) - -468  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - -477 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -478  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -480  - #__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED - -__AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - -489 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -490  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -492  - #__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER - - - ) - -501 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -502  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -504  - #__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER - - - ) - -513 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -514  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -516  - #__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER - - - ) - -525 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -526  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -528  - #__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER - - - ) - -537 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -538  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -540  - #__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 - -__AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER - - - ) - -548 #iŕ -__MAC_OS_X_VERSION_MIN_REQUIRED - >đ -__MAC_OS_X_VERSION_10_5 - - -549  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER - -__DARWIN_DEPRECATED_ATTRIBUTE - - - ) - -551  - #__DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER - - - ) - - @/usr/include/machine/endian.h - -31 #iâdeŕ -_BSD_MACHINE_ENDIAN_H_ - - -32  - #_BSD_MACHINE_ENDIAN_H_ - - - ) - -34 #iŕ -defšed - ( -__µc__ -č|| defšed( -__µc64__ -) - -35  - ~"µc/’dźn.h -" - -36 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -37  - ~"i386/’dźn.h -" - -38 #–iŕ -defšed - ( -__¬m__ -) - -39  - ~"¬m/’dźn.h -" - -41 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/machine/types.h - -31 #iâdeŕ -_BSD_MACHINE_TYPES_H_ - - -32  - #_BSD_MACHINE_TYPES_H_ - - - ) - -34 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -35  - ~"µc/tyłs.h -" - -36 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -37  - ~"i386/tyłs.h -" - -38 #–iŕ -defšed - ( -__¬m__ -) - -39  - ~"¬m/tyłs.h -" - -41 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/secure/_stdio.h - -24 #iâdeŕ -_STDIO_H_ - - -25 #”rÜ -”rÜ - "Never use directly; include instead." - -28 #iâdeŕ -_SECURE__STDIO_H_ - - -29  - #_SECURE__STDIO_H_ - - - ) - -31  - ~<Łcu»/_commÚ.h -> - -33 #iŕ -_USE_FORTIFY_LEVEL - > 0 - -35 #undeŕ -Ąrštf - - -36 #undeŕ -vĄrštf - - -37 #undeŕ -˘´štf - - -38 #undeŕ -v˘´štf - - -42  - $__Ąrštf_chk - (* -__»ˇriů -, , -size_t -, - -43 cÚˇ * -__»ˇriů -, ...) - -44 - `__DARWIN_LDBL_COMPAT - ( -__Ąrštf_chk -); - -46  - #Ąrštf -( -ˇr -, ...) \ - -47 - `__bužtš___Ąrštf_chk - ( -ˇr -, 0, - `__d¬wš_obsz -(ˇr), -__VA_ARGS__ -) - - ) - -49  - $__˘´štf_chk - (* -__»ˇriů -, -size_t -, , size_t, - -50 cÚˇ * -__»ˇriů -, ...) - -51 - `__DARWIN_LDBL_COMPAT - ( -__˘´štf_chk -); - -53  - #˘´štf -( -ˇr -, -Ën -, ...) \ - -54 - `__bužtš___˘´štf_chk - ( -ˇr -, -Ën -, 0, - `__d¬wš_obsz -(ˇr), -__VA_ARGS__ -) - - ) - -56  - $__vĄrštf_chk - (* -__»ˇriů -, , -size_t -, - -57 cÚˇ * -__»ˇriů -, -va_liˇ - -¬g -) - -58 - `__DARWIN_LDBL_COMPAT - ( -__vĄrštf_chk -); - -60  - #vĄrštf -( -ˇr -, -fÜm© -, -­ -) \ - -61 - `__bužtš___vĄrštf_chk - ( -ˇr -, 0, - `__d¬wš_obsz -(ˇr), -fÜm© -, -­ -) - - ) - -63  - $__v˘´štf_chk - (* -__»ˇriů -, -size_t -, , size_t, - -64 cÚˇ * -__»ˇriů -, -va_liˇ - -¬g -) - -65 - `__DARWIN_LDBL_COMPAT - ( -__v˘´štf_chk -); - -67  - #v˘´štf -( -ˇr -, -Ën -, -fÜm© -, -­ -) \ - -68 - `__bužtš___v˘´štf_chk - ( -ˇr -, -Ën -, 0, - `__d¬wš_obsz -(ˇr), -fÜm© -, -­ -) - - ) - - @/usr/include/secure/_string.h - -24 #iâdeŕ -_STRING_H_ - - -28 #iâdeŕ -_SECURE__STRING_H_ - - -29  - #_SECURE__STRING_H_ - - - ) - -31  - ~<Łcu»/_commÚ.h -> - -33 #iŕ -_USE_FORTIFY_LEVEL - > 0 - -38 #undeŕ -memýy - - -39 #undeŕ -memmove - - -40 #undeŕ -memŁt - - -41 #undeŕ -ˇrýy - - -42 #undeŕ -ˇpýy - - -43 #undeŕ -ˇşýy - - -44 #undeŕ -ˇr˙t - - -45 #undeŕ -ˇş˙t - - -47  - #memýy -( -deˇ -, -¤c -, -Ën -) \ - -48 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -49 ? - `__bužtš___memýy_chk - ( -deˇ -, -¤c -, -Ën -, - `__d¬wš_obsz0 - (dest)) \ - -50 : - `__šlše_memýy_chk - ( -deˇ -, -¤c -, -Ën -)) - - ) - -52  -šlše - * - -53 - $__šlše_memýy_chk - (* -__deˇ -, cÚˇ * -__¤c -, -size_t - -__Ën -) - -55  - `__bužtš___memýy_chk - ( -__deˇ -, -__¤c -, -__Ën -, - `__d¬wš_obsz0 -(__dest)); - -56 - } -} - -58  - #memmove -( -deˇ -, -¤c -, -Ën -) \ - -59 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -60 ? - `__bužtš___memmove_chk - ( -deˇ -, -¤c -, -Ën -, - `__d¬wš_obsz0 - (dest)) \ - -61 : - `__šlše_memmove_chk - ( -deˇ -, -¤c -, -Ën -)) - - ) - -63  -šlše - * - -64 - $__šlše_memmove_chk - (* -__deˇ -, cÚˇ * -__¤c -, -size_t - -__Ën -) - -66  - `__bužtš___memmove_chk - ( -__deˇ -, -__¤c -, -__Ën -, - `__d¬wš_obsz0 -(__dest)); - -67 - } -} - -69  - #memŁt -( -deˇ -, -v® -, -Ën -) \ - -70 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -71 ? - `__bužtš___memŁt_chk - ( -deˇ -, -v® -, -Ën -, - `__d¬wš_obsz0 - (dest)) \ - -72 : - `__šlše_memŁt_chk - ( -deˇ -, -v® -, -Ën -)) - - ) - -74  -šlše - * - -75 - $__šlše_memŁt_chk - (* -__deˇ -,  -__v® -, -size_t - -__Ën -) - -77  - `__bužtš___memŁt_chk - ( -__deˇ -, -__v® -, -__Ën -, - `__d¬wš_obsz0 -(__dest)); - -78 - } -} - -80  - #ˇrýy -( -deˇ -, -¤c -) \ - -81 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -82 ? - `__bužtš___ˇrýy_chk - ( -deˇ -, -¤c -, - `__d¬wš_obsz - (dest)) \ - -83 : - `__šlše_ˇrýy_chk - ( -deˇ -, -¤c -)) - - ) - -85  -šlše - * - -86 - $__šlše_ˇrýy_chk - (* -__»ˇriů - -__deˇ -, cÚˇ *__»ˇriů -__¤c -) - -88  - `__bužtš___ˇrýy_chk - ( -__deˇ -, -__¤c -, - `__d¬wš_obsz -(__dest)); - -89 - } -} - -91  - #ˇpýy -( -deˇ -, -¤c -) \ - -92 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -93 ? - `__bužtš___ˇpýy_chk - ( -deˇ -, -¤c -, - `__d¬wš_obsz - (dest)) \ - -94 : - `__šlše_ˇpýy_chk - ( -deˇ -, -¤c -)) - - ) - -96  -šlše - * - -97 - $__šlše_ˇpýy_chk - (* -__deˇ -, cÚˇ * -__¤c -) - -99  - `__bužtš___ˇpýy_chk - ( -__deˇ -, -__¤c -, - `__d¬wš_obsz -(__dest)); - -100 - } -} - -102  - #ˇşýy -( -deˇ -, -¤c -, -Ën -) \ - -103 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -104 ? - `__bužtš___ˇşýy_chk - ( -deˇ -, -¤c -, -Ën -, - `__d¬wš_obsz - (dest)) \ - -105 : - `__šlše_ˇşýy_chk - ( -deˇ -, -¤c -, -Ën -)) - - ) - -107  -šlše - * - -108 - $__šlše_ˇşýy_chk - (* -__»ˇriů - -__deˇ -, cÚˇ *__»ˇriů -__¤c -, - -109 -size_t - -__Ën -) - -111  - `__bužtš___ˇşýy_chk - ( -__deˇ -, -__¤c -, -__Ën -, - `__d¬wš_obsz -(__dest)); - -112 - } -} - -114  - #ˇr˙t -( -deˇ -, -¤c -) \ - -115 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -116 ? - `__bužtš___ˇr˙t_chk - ( -deˇ -, -¤c -, - `__d¬wš_obsz - (dest)) \ - -117 : - `__šlše_ˇr˙t_chk - ( -deˇ -, -¤c -)) - - ) - -119  -šlše - * - -120 - $__šlše_ˇr˙t_chk - (* -__»ˇriů - -__deˇ -, cÚˇ *__»ˇriů -__¤c -) - -122  - `__bužtš___ˇr˙t_chk - ( -__deˇ -, -__¤c -, - `__d¬wš_obsz -(__dest)); - -123 - } -} - -125  - #ˇş˙t -( -deˇ -, -¤c -, -Ën -) \ - -126 (( - `__d¬wš_obsz0 - ( -deˇ -č!đ( -size_t -) -1) \ - -127 ? - `__bužtš___ˇr˙t_chk - ( -deˇ -, -¤c -, - `__d¬wš_obsz - (dest)) \ - -128 : - `__šlše_ˇş˙t_chk - ( -deˇ -, -¤c -, -Ën -)) - - ) - -130  -šlše - * - -131 - $__šlše_ˇş˙t_chk - (* -__»ˇriů - -__deˇ -, cÚˇ *__»ˇriů -__¤c -, - -132 -size_t - -__Ën -) - -134  - `__bužtš___ˇş˙t_chk - ( -__deˇ -, -__¤c -, -__Ën -, - `__d¬wš_obsz -(__dest)); - -135 - } -} - - @/usr/include/sys/_structs.h - -29  - ~ - -30  - ~ - -32 #ifdeŕ -__Ăed_ucÚ‹xt_t - - -33 #iâdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -34  - #__Ăed_ˇruů_ucÚ‹xt - - - ) - -38 #ifdeŕ -__Ăed_ucÚ‹xt64_t - - -39 #iâdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -40  - #__Ăed_ˇruů_ucÚ‹xt64 - - - ) - -44 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -45 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -46  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -50 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -51 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -52  - #__Ăed_ˇruů_mcÚ‹xt64 - - - ) - -56 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -č|| defšed( -__Ăed_ˇruů_mcÚ‹xt64 -) - -57  - ~ - -60 #iŕ -defšed -( -__Ăed_ˇack_t -č|| defšed( -__Ăed_ˇruů_ucÚ‹xt -č|| defšed( -__Ăed_ˇruů_ucÚ‹xt64 -) - -61 #iâdeŕ -__Ăed_ˇruů_sig®tˇack - - -62  - #__Ăed_ˇruů_sig®tˇack - - - ) - -66 #ifdeŕ -__Ăed_ˇruů_sig®tˇack - - -67 #undeŕ -__Ăed_ˇruů_sig®tˇack - - -69 #iâdeŕ -_STRUCT_SIGALTSTACK - - -70 #iŕ -__DARWIN_UNIX03 - - -71  - #_STRUCT_SIGALTSTACK -  -__d¬wš_sig®tˇack - - - ) - -73  - #_STRUCT_SIGALTSTACK -  -sig®tˇack - - - ) - -75 - g_STRUCT_SIGALTSTACK - - -77 * - gss_Ą -; - -78 -__d¬wš_size_t - - gss_size -; - -79  - gss_ćags -; - -84 #ifdeŕ -__Ăed_ˇruů_timeĄec - - -85 #undeŕ -__Ăed_ˇruů_timeĄec - - -86 #iâdeŕ -_STRUCT_TIMESPEC - - -87  - #_STRUCT_TIMESPEC -  -timeĄec - - - ) - -88 - g_STRUCT_TIMESPEC - - -90 -__d¬wš_time_t - - gtv_Łc -; - -91  - gtv_nŁc -; - -96 #ifdeŕ -__Ăed_ˇruů_timev® - - -97 #undeŕ -__Ăed_ˇruů_timev® - - -98 #iâdeŕ -_STRUCT_TIMEVAL - - -99  - #_STRUCT_TIMEVAL -  -timev® - - - ) - -100 - g_STRUCT_TIMEVAL - - -102 -__d¬wš_time_t - - gtv_Łc -; - -103 -__d¬wš_suŁcÚds_t - - gtv_uŁc -; - -108 #ifdeŕ -__Ăed_ˇruů_timev®32 - - -109 #undeŕ -__Ăed_ˇruů_timev®32 - - -110 #iâdeŕ -_STRUCT_TIMEVAL32 - - -111  - #_STRUCT_TIMEVAL32 -  -timev®32 - - - ) - -112 - g_STRUCT_TIMEVAL32 - - -114 -__št32_t - - gtv_Łc -; - -115 -__št32_t - - gtv_uŁc -; - -120 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt - - -121 #undeŕ -__Ăed_ˇruů_ucÚ‹xt - - -122 #iâdeŕ -_STRUCT_UCONTEXT - - -123 #iŕ -__DARWIN_UNIX03 - - -124  - #_STRUCT_UCONTEXT -  -__d¬wš_ucÚ‹xt - - - ) - -126  - #_STRUCT_UCONTEXT -  -ucÚ‹xt - - - ) - -128 - g_STRUCT_UCONTEXT - - -130  - guc_Úˇack -; - -131 -__d¬wš_sigŁt_t - - guc_sigmask -; - -132 -_STRUCT_SIGALTSTACK - - guc_ˇack -; - -133 -_STRUCT_UCONTEXT - * - guc_lšk -; - -134 -__d¬wš_size_t - - guc_mcsize -; - -135 -_STRUCT_MCONTEXT - * - guc_mcÚ‹xt -; - -136 #ifdeŕ -_XOPEN_SOURCE - - -137 -_STRUCT_MCONTEXT - - g__mcÚ‹xt_d©a -; - -143 #ifdeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -144 #undeŕ -__Ăed_ˇruů_ucÚ‹xt64 - - -145 #iâdeŕ -_STRUCT_UCONTEXT64 - - -146 #iŕ -__DARWIN_UNIX03 - - -147  - #_STRUCT_UCONTEXT64 -  -__d¬wš_ucÚ‹xt64 - - - ) - -149  - #_STRUCT_UCONTEXT64 -  -ucÚ‹xt64 - - - ) - -151 - g_STRUCT_UCONTEXT64 - - -153  - guc_Úˇack -; - -154 -__d¬wš_sigŁt_t - - guc_sigmask -; - -155 -_STRUCT_SIGALTSTACK - - guc_ˇack -; - -156 -_STRUCT_UCONTEXT64 - * - guc_lšk -; - -157 -__d¬wš_size_t - - guc_mcsize -; - -158 -_STRUCT_MCONTEXT64 - * - guc_mcÚ‹xt64 -; - -164 #ifdeŕ -__Ăed_fd_Łt - - -165 #undeŕ -__Ăed_fd_Łt - - -166 #iâdeŕ -_FD_SET - - -167  - #_FD_SET - - - ) - -174 #ifdeŕ -FD_SETSIZE - - -175  - #__DARWIN_FD_SETSIZE - -FD_SETSIZE - - - ) - -177  - #__DARWIN_FD_SETSIZE - 1024 - - ) - -179  - #__DARWIN_NBBY - 8 - - ) - -180  - #__DARWIN_NFDBITS - (( -__št32_t -č* -__DARWIN_NBBY -č - - ) - -181  - #__DARWIN_howmŞy -( -x -, -y -č(((xč+ ((yč- 1)č/ (y)č - - ) - -183 -__BEGIN_DECLS - - -184  - sfd_Łt - { - -185 -__št32_t - - mfds_b™s -[ -__DARWIN_howmŞy -( -__DARWIN_FD_SETSIZE -, -__DARWIN_NFDBITS -)]; - -186 } - tfd_Łt -; - -187 -__END_DECLS - - -190  -__šlše -  - -191 - $__d¬wš_fd_isŁt -( -_n -,  -fd_Łt - * -_p -) - -193  ( -_p --> -fds_b™s -[ -_n -/ -__DARWIN_NFDBITS -] & (1<<(_n % __DARWIN_NFDBITS))); - -194 - } -} - -196  - #__DARWIN_FD_SET -( -n -, -p -čdŘ{  -__fd - = (n); (Ő)-> -fds_b™s -[__fd/ -__DARWIN_NFDBITS -] |đ(1<<(__fd % __DARWIN_NFDBITS))); } 0) - - ) - -197  - #__DARWIN_FD_CLR -( -n -, -p -čdŘ{  -__fd - = (n); (Ő)-> -fds_b™s -[__fd/ -__DARWIN_NFDBITS -] &đ~(1<<(__fd % __DARWIN_NFDBITS))); } 0) - - ) - -198  - #__DARWIN_FD_ISSET -( -n -, -p -č - `__d¬wš_fd_isŁt -(Ň), (p)) - - ) - -200 #iŕ -__GNUC__ - > 3 || __GNUC__ =đ3 && -__GNUC_MINOR__ - >= 3 - -205  - #__DARWIN_FD_ZERO -( -p -č - `__bužtš_bz”o -Ő, (*Ő))) - - ) - -207  - #__DARWIN_FD_ZERO -( -p -č - `bz”o -Ő, (*Ő))) - - ) - -210  - #__DARWIN_FD_COPY -( -f -, -t -č - `bcÝy -(f,, (*(f))) - - ) - -214 #ifdeŕ -__Ăed_ˇack_t - - -215 #undeŕ -__Ăed_ˇack_t - - -216 #iâdeŕ -_STACK_T - - -217  - #_STACK_T - - - ) - -218  -_STRUCT_SIGALTSTACK - - tˇack_t -; - -222 #ifdeŕ -__Ăed_ucÚ‹xt_t - - -223 #undeŕ -__Ăed_ucÚ‹xt_t - - -225 #iâdeŕ -_UCONTEXT_T - - -226  - #_UCONTEXT_T - - - ) - -227  -_STRUCT_UCONTEXT - - tucÚ‹xt_t -; - -231 #ifdeŕ -__Ăed_ucÚ‹xt64_t - - -232 #undeŕ -__Ăed_ucÚ‹xt64_t - - -233 #iâdeŕ -_UCONTEXT64_T - - -234  - #_UCONTEXT64_T - - - ) - -235  -_STRUCT_UCONTEXT64 - - tucÚ‹xt64_t -; - - @/usr/include/sys/_types.h - -29 #iâdeŕ -_SYS__TYPES_H_ - - -30  - #_SYS__TYPES_H_ - - - ) - -32  - ~ - -33  - ~ - -36 #iŕ -defšed -( -__LP64__ -) - -37  - #__PTHREAD_SIZE__ - 1168 - - ) - -38  - #__PTHREAD_ATTR_SIZE__ - 56 - - ) - -39  - #__PTHREAD_MUTEXATTR_SIZE__ - 8 - - ) - -40  - #__PTHREAD_MUTEX_SIZE__ - 56 - - ) - -41  - #__PTHREAD_CONDATTR_SIZE__ - 8 - - ) - -42  - #__PTHREAD_COND_SIZE__ - 40 - - ) - -43  - #__PTHREAD_ONCE_SIZE__ - 8 - - ) - -44  - #__PTHREAD_RWLOCK_SIZE__ - 192 - - ) - -45  - #__PTHREAD_RWLOCKATTR_SIZE__ - 16 - - ) - -47  - #__PTHREAD_SIZE__ - 596 - - ) - -48  - #__PTHREAD_ATTR_SIZE__ - 36 - - ) - -49  - #__PTHREAD_MUTEXATTR_SIZE__ - 8 - - ) - -50  - #__PTHREAD_MUTEX_SIZE__ - 40 - - ) - -51  - #__PTHREAD_CONDATTR_SIZE__ - 4 - - ) - -52  - #__PTHREAD_COND_SIZE__ - 24 - - ) - -53  - #__PTHREAD_ONCE_SIZE__ - 4 - - ) - -54  - #__PTHREAD_RWLOCK_SIZE__ - 124 - - ) - -55  - #__PTHREAD_RWLOCKATTR_SIZE__ - 12 - - ) - -58  - s__d¬wš_±h»ad_hŞdËr_»c - - -60 (* - m__routše -)(*); - -61 * - m__¬g -; - -62  -__d¬wš_±h»ad_hŞdËr_»c - * - m__Ăxt -; - -64  - s_Ýaque_±h»ad_©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_ATTR_SIZE__ -]; }; - -65  - s_Ýaque_±h»ad_cÚd_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_COND_SIZE__ -]; }; - -66  - s_Ýaque_±h»ad_cÚd©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_CONDATTR_SIZE__ -]; }; - -67  - s_Ýaque_±h»ad_mu‹x_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_MUTEX_SIZE__ -]; }; - -68  - s_Ýaque_±h»ad_mu‹x©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_MUTEXATTR_SIZE__ -]; }; - -69  - s_Ýaque_±h»ad_Úű_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_ONCE_SIZE__ -]; }; - -70  - s_Ýaque_±h»ad_rwlock_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_RWLOCK_SIZE__ -]; }; - -71  - s_Ýaque_±h»ad_rwlock©Ś_t - {  - m__sig -;  - m__Ýaque -[ -__PTHREAD_RWLOCKATTR_SIZE__ -]; }; - -72  - s_Ýaque_±h»ad_t - {  - m__sig -;  -__d¬wš_±h»ad_hŞdËr_»c - * - m__ţ—nup_ˇack -;  - m__Ýaque -[ -__PTHREAD_SIZE__ -]; }; - -80 #ifdeŕ -__ýluĄlus - - -81 #ifdeŕ -__GNUG__ - - -82  - #__DARWIN_NULL - -__nuÎ - - - ) - -84 #ifdeŕ -__LP64__ - - -85  - #__DARWIN_NULL - (0L) - - ) - -87  - #__DARWIN_NULL - 0 - - ) - -91  - #__DARWIN_NULL - ((*)0) - - ) - -94  -__št64_t - - t__d¬wš_blkút_t -; - -95  -__št32_t - - t__d¬wš_blksize_t -; - -96  -__št32_t - - t__d¬wš_dev_t -; - -97  - t__d¬wš_fsblkút_t -; - -98  - t__d¬wš_fsfžút_t -; - -99  -__ušt32_t - - t__d¬wš_gid_t -; - -100  -__ušt32_t - - t__d¬wš_id_t -; - -101  -__ušt64_t - - t__d¬wš_šo64_t -; - -102 #iŕ -__DARWIN_64_BIT_INO_T - - -103  -__d¬wš_šo64_t - - t__d¬wš_šo_t -; - -105  -__ušt32_t - - t__d¬wš_šo_t -; - -107  -__d¬wš_Çtużl_t - - t__d¬wš_mach_pÜt_Çme_t -; - -108  -__d¬wš_mach_pÜt_Çme_t - - t__d¬wš_mach_pÜt_t -; - -109  -__ušt16_t - - t__d¬wš_mode_t -; - -110  -__št64_t - - t__d¬wš_off_t -; - -111  -__št32_t - - t__d¬wš_pid_t -; - -112  -_Ýaque_±h»ad_©Ś_t - - -113 - t__d¬wš_±h»ad_©Ś_t -; - -114  -_Ýaque_±h»ad_cÚd_t - - -115 - t__d¬wš_±h»ad_cÚd_t -; - -116  -_Ýaque_±h»ad_cÚd©Ś_t - - -117 - t__d¬wš_±h»ad_cÚd©Ś_t -; - -118  - t__d¬wš_±h»ad_key_t -; - -119  -_Ýaque_±h»ad_mu‹x_t - - -120 - t__d¬wš_±h»ad_mu‹x_t -; - -121  -_Ýaque_±h»ad_mu‹x©Ś_t - - -122 - t__d¬wš_±h»ad_mu‹x©Ś_t -; - -123  -_Ýaque_±h»ad_Úű_t - - -124 - t__d¬wš_±h»ad_Úű_t -; - -125  -_Ýaque_±h»ad_rwlock_t - - -126 - t__d¬wš_±h»ad_rwlock_t -; - -127  -_Ýaque_±h»ad_rwlock©Ś_t - - -128 - t__d¬wš_±h»ad_rwlock©Ś_t -; - -129  -_Ýaque_±h»ad_t - - -130 * - t__d¬wš_±h»ad_t -; - -131  -__ušt32_t - - t__d¬wš_sigŁt_t -; - -132  -__št32_t - - t__d¬wš_suŁcÚds_t -; - -133  -__ušt32_t - - t__d¬wš_uid_t -; - -134  -__ušt32_t - - t__d¬wš_uŁcÚds_t -; - -135  - t__d¬wš_uuid_t -[16]; - - @/usr/include/sys/appleapiopts.h - -29 #iâdeŕ -__SYS_APPLEAPIOPTS_H__ - - -30  - #__SYS_APPLEAPIOPTS_H__ - - - ) - -33 #iâdeŕ -__APPLE_API_STANDARD - - -34  - #__APPLE_API_STANDARD - - - ) - -37 #iâdeŕ -__APPLE_API_STABLE - - -38  - #__APPLE_API_STABLE - - - ) - -41 #iâdeŕ -__APPLE_API_STRICT_CONFORMANCE - - -43 #iâdeŕ -__APPLE_API_EVOLVING - - -44  - #__APPLE_API_EVOLVING - - - ) - -47 #iâdeŕ -__APPLE_API_UNSTABLE - - -48  - #__APPLE_API_UNSTABLE - - - ) - -51 #iâdeŕ -__APPLE_API_PRIVATE - - -52  - #__APPLE_API_PRIVATE - - - ) - -55 #iâdeŕ -__APPLE_API_OBSOLETE - - -56  - #__APPLE_API_OBSOLETE - - - ) - - @/usr/include/sys/cdefs.h - -67 #iâdef -_CDEFS_H_ - - -68  - #_CDEFS_H_ - - - ) - -70 #iŕ -defšed -( -__ýluĄlus -) - -71  - #__BEGIN_DECLS - "C" { - - ) - -72  - #__END_DECLS - } - - ) - -74  - #__BEGIN_DECLS - - - ) - -75  - #__END_DECLS - - - ) - -85 #iŕ -defšed -( -__STDC__ -č|| defšed( -__ýluĄlus -) - -86  - #__P -( -´Ůos -č´Ůo  - - ) - -87  - #__CONCAT -( -x -, -y -čx ## - ) -y - -88  - #__STRING -( -x -č#x - - ) - -90  - #__cÚˇ - cÚˇ - - ) - -91  - #__sigĂd - sigĂd - - ) - -92  - #__vŢ©že - vŢ©že - - ) - -93 #iŕ -defšed -( -__ýluĄlus -) - -94  - #__šlše - -šlše - - - ) - -96 #iâdeŕ -__GNUC__ - - -97  - #__šlše - - - ) - -102  - #__P -( -´Ůos -č(č - - ) - -103  - #__CONCAT -( -x -, -y -čx - ) -y - -104  - #__STRING -( -x -č"x" - - ) - -106 #iâdeŕ -__GNUC__ - - -107  - #__cÚˇ - - - ) - -108  - #__šlše - - - ) - -109  - #__sigĂd - - - ) - -110  - #__vŢ©že - - - ) - -121 #iâdef -NO_ANSI_KEYWORDS - - -122 cÚˇ -__cÚˇ - - - ) - -123  - #šlše - -__šlše - - - ) - -124 sigĂd -__sigĂd - - - ) - -125 vŢ©ž -__vŢ©že - - - ) - -137 #iŕ -defšed -( -__MWERKS__ -) && (__MWERKS__ > 0x2400) - -139 #–iŕ -__GNUC__ - > 2 || __GNUC__ =đ2 && -__GNUC_MINOR__ - >= 5 - -140  - #__d—d2 - - `__©Śibu‹__ -(( -__nÜ‘uş__ -)) - - ) - -141  - #__pu»2 - - `__©Śibu‹__ -(( -__cÚˇ__ -)) - - ) - -142 #iŕ -__GNUC__ - =đ2 && -__GNUC_MINOR__ - >= 5 && __GNUC_MINOR__ < 7 - -143  - #__unuŁd - - - ) - -145  - #__unuŁd - - `__©Śibu‹__ -(( -__unuŁd__ -)) - - ) - -148  - #__©Śibu‹__ -( -x -č - - ) - -149 #iŕ -defšed -( -__GNUC__ -č&& !defšed( -__STRICT_ANSI__ -) - -151  - #__d—d - -__vŢ©že - - - ) - -152  - #__pu» - -__cÚˇ - - - ) - -157 #iâdeŕ -__d—d - - -158  - #__d—d - - - ) - -159  - #__pu» - - - ) - -161 #iâdeŕ -__d—d2 - - -162  - #__d—d2 - - - ) - -163  - #__pu»2 - - - ) - -164  - #__unuŁd - - - ) - -173 #iŕ!( -__GNUC__ - =đ2 && -__GNUC_MINOR__ - == 95) - -174 #iŕ -__STDC_VERSION__ - < 199901 - -175  - #__»ˇriů - - - ) - -177  - #__»ˇriů - -»ˇriů - - - ) - -189 #iŕ -__GNUC__ - > 2 || __GNUC__ =đ2 && -__GNUC_MINOR__ - >= 7 - -190  - #__´štćike -( -fmŹrg -, -fśˇv¬¬g -) \ - -191 - `__©Śibu‹__ -(( - `__fÜm©__ - ( -__´štf__ -, -fmŹrg -, -fśˇv¬¬g -))) - - ) - -192  - #__s˙nćike -( -fmŹrg -, -fśˇv¬¬g -) \ - -193 - `__©Śibu‹__ -(( - `__fÜm©__ - ( -__s˙nf__ -, -fmŹrg -, -fśˇv¬¬g -))) - - ) - -195  - #__´štćike -( -fmŹrg -, -fśˇv¬¬g -) - - ) - -196  - #__s˙nćike -( -fmŹrg -, -fśˇv¬¬g -) - - ) - -199  - #__IDSTRING -( -Çme -, -ˇršg -čcÚˇ Çme[] -__unuŁd - = - ) -string - -201 #iâdeŕ -__COPYRIGHT - - -202  - #__COPYRIGHT -( -s -č - `__IDSTRING -( -cÝyright -,s) - - ) - -205 #iâdeŕ -__RCSID - - -206  - #__RCSID -( -s -č - `__IDSTRING -( -rcsid -,s) - - ) - -209 #iâdeŕ -__SCCSID - - -210  - #__SCCSID -( -s -č - `__IDSTRING -( -sccsid -,s) - - ) - -213 #iâdeŕ -__PROJECT_VERSION - - -214  - #__PROJECT_VERSION -( -s -č - `__IDSTRING -( -´ojeů_v”siÚ -,s) - - ) - -272 #iŕ! -defšed -( -__DARWIN_UNIX03 -) - -273 #iŕ -defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_XOPEN_SOURCE -č|| defšed( -_POSIX_C_SOURCE -č|| defšed( -__LP64__ -č|| (defšed( -__¬m__ -č&& !defšed( -KERNEL -)) - -274 #iŕ -defšed -( -_NONSTD_SOURCE -) - -277  - #__DARWIN_UNIX03 - 1 - - ) - -278 #–iŕ -defšed -( -_NONSTD_SOURCE -č|| defšed( -KERNEL -) - -279  - #__DARWIN_UNIX03 - 0 - - ) - -281 #iŕ -defšed -( -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ -) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) < 1050) - -282  - #__DARWIN_UNIX03 - 0 - - ) - -284  - #__DARWIN_UNIX03 - 1 - - ) - -289 #iŕ! -defšed -( -__DARWIN_64_BIT_INO_T -) - -290 #iŕ -defšed -( -_DARWIN_USE_64_BIT_INODE -) - -291  - #__DARWIN_64_BIT_INO_T - 1 - - ) - -292 #–iŕ -defšed -( -_DARWIN_NO_64_BIT_INODE -č|| defšed( -KERNEL -) - -293  - #__DARWIN_64_BIT_INO_T - 0 - - ) - -295  - #__DARWIN_64_BIT_INO_T - 0 - - ) - -299 #iŕ! -defšed -( -__DARWIN_NON_CANCELABLE -) - -300  - #__DARWIN_NON_CANCELABLE - 0 - - ) - -303 #iŕ! -defšed -( -__DARWIN_VERS_1050 -) - -304 #iŕ! -defšed -( -KERNEL -č&& defšed( -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ -) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__-0) >= 1050) - -305  - #__DARWIN_VERS_1050 - 1 - - ) - -307  - #__DARWIN_VERS_1050 - 0 - - ) - -314 #iŕ -__DARWIN_UNIX03 - - -315 #iŕ! -defšed -( -__LP64__ -č&& !defšed( -__¬m__ -) - -316  - #__DARWIN_SUF_UNIX03 - "$UNIX2003" - - ) - -317  - #__DARWIN_SUF_UNIX03_SET - 1 - - ) - -319  - #__DARWIN_SUF_UNIX03 - - - ) - -320  - #__DARWIN_SUF_UNIX03_SET - 0 - - ) - -323 #iŕ -__DARWIN_64_BIT_INO_T - - -324  - #__DARWIN_SUF_64_BIT_INO_T - "$INODE64" - - ) - -326  - #__DARWIN_SUF_64_BIT_INO_T - - - ) - -329 #iŕ -__DARWIN_NON_CANCELABLE - - -330  - #__DARWIN_SUF_NON_CANCELABLE - "$NOCANCEL" - - ) - -332  - #__DARWIN_SUF_NON_CANCELABLE - - - ) - -335 #iŕ -__DARWIN_VERS_1050 - - -336  - #__DARWIN_SUF_1050 - "$1050" - - ) - -338  - #__DARWIN_SUF_1050 - - - ) - -342  - #__DARWIN_SUF_UNIX03 - - - ) - -343  - #__DARWIN_SUF_UNIX03_SET - 0 - - ) - -344  - #__DARWIN_SUF_64_BIT_INO_T - - - ) - -345  - #__DARWIN_SUF_NON_CANCELABLE - - - ) - -346  - #__DARWIN_SUF_1050 - - - ) - -349  - #__DARWIN_SUF_EXTSN - "$DARWIN_EXTSN" - - ) - -354  - #__DARWIN_ALIAS -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_UNIX03 -) - - ) - -355  - #__DARWIN_ALIAS_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_NON_CANCELABLE - -__DARWIN_SUF_UNIX03 -) - - ) - -356  - #__DARWIN_ALIAS_I -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_64_BIT_INO_T - -__DARWIN_SUF_UNIX03 -) - - ) - -357  - #__DARWIN_INODE64 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_64_BIT_INO_T -) - - ) - -359  - #__DARWIN_1050 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 -) - - ) - -360  - #__DARWIN_1050ALIAS -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_UNIX03 -) - - ) - -361  - #__DARWIN_1050ALIAS_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_NON_CANCELABLE - -__DARWIN_SUF_UNIX03 -) - - ) - -362  - #__DARWIN_1050ALIAS_I -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_64_BIT_INO_T - -__DARWIN_SUF_UNIX03 -) - - ) - -363  - #__DARWIN_1050INODE64 -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_1050 - -__DARWIN_SUF_64_BIT_INO_T -) - - ) - -365  - #__DARWIN_EXTSN -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_EXTSN -) - - ) - -366  - #__DARWIN_EXTSN_C -( -sym -č - `__asm -("_" - `__STRING -(symč -__DARWIN_SUF_EXTSN - -__DARWIN_SUF_NON_CANCELABLE -) - - ) - -389 #iŕ -defšed -( -_POSIX_C_SOURCE -) && _POSIX_C_SOURCE == 1L - -390 #undeŕ -_POSIX_C_SOURCE - - -391  - #_POSIX_C_SOURCE - 199009L - - ) - -395 #iŕ -defšed -( -_POSIX_C_SOURCE -) && _POSIX_C_SOURCE == 2L - -396 #undeŕ -_POSIX_C_SOURCE - - -397  - #_POSIX_C_SOURCE - 199209L - - ) - -401 #ifdeŕ -_XOPEN_SOURCE - - -402 #iŕ -_XOPEN_SOURCE - - 0L >= 600L - -403 #undeŕ -_POSIX_C_SOURCE - - -404  - #_POSIX_C_SOURCE - 200112L - - ) - -405 #–iŕ -_XOPEN_SOURCE - - 0L >= 500L - -406 #undeŕ -_POSIX_C_SOURCE - - -407  - #_POSIX_C_SOURCE - 199506L - - ) - -415 #iŕ -defšed -( -_POSIX_SOURCE -č&& !defšed( -_POSIX_C_SOURCE -) - -416  - #_POSIX_C_SOURCE - 198808L - - ) - -424  - #__DARWIN_NO_LONG_LONG - ( - `defšed -( -__STRICT_ANSI__ -) \ - -425 && ( -__STDC_VERSION__ --0 < 199901L) \ - -426 && ! - `defšed -( -__GNUG__ -)) - - ) - -434 #iŕ -defšed -( -__µc__ -) - -435 #iŕ -defšed -( -__LDBL_MANT_DIG__ -č&& defšed( -__DBL_MANT_DIG__ -) && \ - -436 -__LDBL_MANT_DIG__ - > -__DBL_MANT_DIG__ - - -437 #iŕ -__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ --0 < 1040 - -438  - #__DARWIN_LDBL_COMPAT -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBLStub") - - ) - -440  - #__DARWIN_LDBL_COMPAT -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBL128") - - ) - -442  - #__DARWIN_LDBL_COMPAT2 -( -x -č - `__asm -("_" - `__STRING -(xč"$LDBL128") - - ) - -443  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 0 - - ) - -445  - #__DARWIN_LDBL_COMPAT -( -x -č - - ) - -446  - #__DARWIN_LDBL_COMPAT2 -( -x -č - - ) - -447  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 1 - - ) - -449 #–iŕ -defšed -( -__i386__ -č|| defšed( -__µc64__ -č|| defšed( -__x86_64__ -č|| defšed ( -__¬m__ -) - -450  - #__DARWIN_LDBL_COMPAT -( -x -č - - ) - -451  - #__DARWIN_LDBL_COMPAT2 -( -x -č - - ) - -452  - #__DARWIN_LONG_DOUBLE_IS_DOUBLE - 0 - - ) - -454 #”rÜ -Unknown - -¬ch™eůu» - - -460 #iŕ -__GNUC__ - >= 3 - -461  - #__d•»˙‹d - - `__©Śibu‹__ -(( -d•»˙‹d -)) - - ) - -463  - #__d•»˙‹d - - - ) - -474 #iŕ -__DARWIN_LONG_DOUBLE_IS_DOUBLE - - -475  - #_DARWIN_FEATURE_LONG_DOUBLE_IS_DOUBLE - 1 - - ) - -482 #iŕ -__DARWIN_UNIX03 - - -483  - #_DARWIN_FEATURE_UNIX_CONFORMANCE - 3 - - ) - -490 #iŕ -__DARWIN_64_BIT_INO_T - - -491  - #_DARWIN_FEATURE_64_BIT_INODE - 1 - - ) - - @/usr/include/sys/dirent.h - -75 #iâdeŕ -_SYS_DIRENT_H - - -76  - #_SYS_DIRENT_H - - - ) - -78  - ~ - -79  - ~ - -81 #iâdef -_INO_T - - -82  -__d¬wš_šo_t - - tšo_t -; - -83  - #_INO_T - - - ) - -87  - #__DARWIN_MAXNAMLEN - 255 - - ) - -89 #´agm¨ -·ck -(4) - -91 #iŕ! -__DARWIN_64_BIT_INO_T - - -92  - sdś’t - { - -93 -šo_t - - md_šo -; - -94 -__ušt16_t - - md_»ţ’ -; - -95 -__ušt8_t - - md_tył -; - -96 -__ušt8_t - - md_ÇmËn -; - -97  - md_Çme -[ -__DARWIN_MAXNAMLEN - + 1]; - -101 #´agm¨ -·ck -() - -103  - #__DARWIN_MAXPATHLEN - 1024 - - ) - -105  - #__DARWIN_STRUCT_DIRENTRY - { \ - -106 -__ušt64_t - -d_šo -; \ - -107 -__ušt64_t - -d_Łekoff -; \ - -108 -__ušt16_t - -d_»ţ’ -; \ - -109 -__ušt16_t - -d_ÇmËn -; \ - -110 -__ušt8_t - -d_tył -; \ - -111  -d_Çme -[ -__DARWIN_MAXPATHLEN -]; \ - -112 } - - ) - -114 #iŕ -__DARWIN_64_BIT_INO_T - - -115  -dś’t - - g__DARWIN_STRUCT_DIRENTRY -; - -120 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -121  - #d_fž’o - -d_šo - - - ) - -122  - #MAXNAMLEN - -__DARWIN_MAXNAMLEN - - - ) - -126  - #DT_UNKNOWN - 0 - - ) - -127  - #DT_FIFO - 1 - - ) - -128  - #DT_CHR - 2 - - ) - -129  - #DT_DIR - 4 - - ) - -130  - #DT_BLK - 6 - - ) - -131  - #DT_REG - 8 - - ) - -132  - #DT_LNK - 10 - - ) - -133  - #DT_SOCK - 12 - - ) - -134  - #DT_WHT - 14 - - ) - -139  - #IFTODT -( -mode -č(((modeč& 0170000č>> 12) - - ) - -140  - #DTTOIF -( -dśtył -č((dśtyłč<< 12) - - ) - - @/usr/include/sys/errno.h - -69 #iâdef -_SYS_ERRNO_H_ - - -70  - #_SYS_ERRNO_H_ - - - ) - -72  - ~ - -73 -__BEGIN_DECLS - - -74 * -__”rÜ -(); - -75  - #”şo - (* - `__”rÜ -()) - - ) - -76 - g__END_DECLS - - -82  - #EPERM - 1 - - ) - -83  - #ENOENT - 2 - - ) - -84  - #ESRCH - 3 - - ) - -85  - #EINTR - 4 - - ) - -86  - #EIO - 5 - - ) - -87  - #ENXIO - 6 - - ) - -88  - #E2BIG - 7 - - ) - -89  - #ENOEXEC - 8 - - ) - -90  - #EBADF - 9 - - ) - -91  - #ECHILD - 10 - - ) - -92  - #EDEADLK - 11 - - ) - -94  - #ENOMEM - 12 - - ) - -95  - #EACCES - 13 - - ) - -96  - #EFAULT - 14 - - ) - -97 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -98  - #ENOTBLK - 15 - - ) - -100  - #EBUSY - 16 - - ) - -101  - #EEXIST - 17 - - ) - -102  - #EXDEV - 18 - - ) - -103  - #ENODEV - 19 - - ) - -104  - #ENOTDIR - 20 - - ) - -105  - #EISDIR - 21 - - ) - -106  - #EINVAL - 22 - - ) - -107  - #ENFILE - 23 - - ) - -108  - #EMFILE - 24 - - ) - -109  - #ENOTTY - 25 - - ) - -110  - #ETXTBSY - 26 - - ) - -111  - #EFBIG - 27 - - ) - -112  - #ENOSPC - 28 - - ) - -113  - #ESPIPE - 29 - - ) - -114  - #EROFS - 30 - - ) - -115  - #EMLINK - 31 - - ) - -116  - #EPIPE - 32 - - ) - -119  - #EDOM - 33 - - ) - -120  - #ERANGE - 34 - - ) - -123  - #EAGAIN - 35 - - ) - -124  - #EWOULDBLOCK - -EAGAIN - - - ) - -125  - #EINPROGRESS - 36 - - ) - -126  - #EALREADY - 37 - - ) - -129  - #ENOTSOCK - 38 - - ) - -130  - #EDESTADDRREQ - 39 - - ) - -131  - #EMSGSIZE - 40 - - ) - -132  - #EPROTOTYPE - 41 - - ) - -133  - #ENOPROTOOPT - 42 - - ) - -134  - #EPROTONOSUPPORT - 43 - - ) - -135 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -136  - #ESOCKTNOSUPPORT - 44 - - ) - -138  - #ENOTSUP - 45 - - ) - -139 #iŕ! -__DARWIN_UNIX03 - && ! -defšed -( -KERNEL -) - -148  - #EOPNOTSUPP - -ENOTSUP - - - ) - -151 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -152  - #EPFNOSUPPORT - 46 - - ) - -154  - #EAFNOSUPPORT - 47 - - ) - -155  - #EADDRINUSE - 48 - - ) - -156  - #EADDRNOTAVAIL - 49 - - ) - -159  - #ENETDOWN - 50 - - ) - -160  - #ENETUNREACH - 51 - - ) - -161  - #ENETRESET - 52 - - ) - -162  - #ECONNABORTED - 53 - - ) - -163  - #ECONNRESET - 54 - - ) - -164  - #ENOBUFS - 55 - - ) - -165  - #EISCONN - 56 - - ) - -166  - #ENOTCONN - 57 - - ) - -167 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -168  - #ESHUTDOWN - 58 - - ) - -169  - #ETOOMANYREFS - 59 - - ) - -171  - #ETIMEDOUT - 60 - - ) - -172  - #ECONNREFUSED - 61 - - ) - -174  - #ELOOP - 62 - - ) - -175  - #ENAMETOOLONG - 63 - - ) - -178 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -179  - #EHOSTDOWN - 64 - - ) - -181  - #EHOSTUNREACH - 65 - - ) - -182  - #ENOTEMPTY - 66 - - ) - -185 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -186  - #EPROCLIM - 67 - - ) - -187  - #EUSERS - 68 - - ) - -189  - #EDQUOT - 69 - - ) - -192  - #ESTALE - 70 - - ) - -193 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -194  - #EREMOTE - 71 - - ) - -195  - #EBADRPC - 72 - - ) - -196  - #ERPCMISMATCH - 73 - - ) - -197  - #EPROGUNAVAIL - 74 - - ) - -198  - #EPROGMISMATCH - 75 - - ) - -199  - #EPROCUNAVAIL - 76 - - ) - -202  - #ENOLCK - 77 - - ) - -203  - #ENOSYS - 78 - - ) - -205 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -206  - #EFTYPE - 79 - - ) - -207  - #EAUTH - 80 - - ) - -208  - #ENEEDAUTH - 81 - - ) - -211  - #EPWROFF - 82 - - ) - -212  - #EDEVERR - 83 - - ) - -215  - #EOVERFLOW - 84 - - ) - -218 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -219  - #EBADEXEC - 85 - - ) - -220  - #EBADARCH - 86 - - ) - -221  - #ESHLIBVERS - 87 - - ) - -222  - #EBADMACHO - 88 - - ) - -225  - #ECANCELED - 89 - - ) - -227  - #EIDRM - 90 - - ) - -228  - #ENOMSG - 91 - - ) - -229  - #EILSEQ - 92 - - ) - -230 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -231  - #ENOATTR - 93 - - ) - -234  - #EBADMSG - 94 - - ) - -235  - #EMULTIHOP - 95 - - ) - -236  - #ENODATA - 96 - - ) - -237  - #ENOLINK - 97 - - ) - -238  - #ENOSR - 98 - - ) - -239  - #ENOSTR - 99 - - ) - -240  - #EPROTO - 100 - - ) - -241  - #ETIME - 101 - - ) - -243 #iŕ -__DARWIN_UNIX03 - || -defšed -( -KERNEL -) - -245  - #EOPNOTSUPP - 102 - - ) - -248  - #ENOPOLICY - 103 - - ) - -250 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -251  - #ELAST - 103 - - ) - - @/usr/include/sys/fcntl.h - -70 #iâdeŕ -_SYS_FCNTL_H_ - - -71  - #_SYS_FCNTL_H_ - - - ) - -78  - ~ - -79  - ~ - -82 #iâdeŕ -_SIZE_T - - -83  - #_SIZE_T - - - ) - -84  -__d¬wš_size_t - - tsize_t -; - -87 #iâdef -_MODE_T - - -88  -__d¬wš_mode_t - - tmode_t -; - -89  - #_MODE_T - - - ) - -92 #iâdeŕ -_OFF_T - - -93  -__d¬wš_off_t - - toff_t -; - -94  - #_OFF_T - - - ) - -97 #iâdeŕ -_PID_T - - -98  -__d¬wš_pid_t - - tpid_t -; - -99  - #_PID_T - - - ) - -110  - #O_RDONLY - 0x0000 - - ) - -111  - #O_WRONLY - 0x0001 - - ) - -112  - #O_RDWR - 0x0002 - - ) - -113  - #O_ACCMODE - 0x0003 - - ) - -123 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -124  - #FREAD - 0x0001 - - ) - -125  - #FWRITE - 0x0002 - - ) - -127  - #O_NONBLOCK - 0x0004 - - ) - -128  - #O_APPEND - 0x0008 - - ) - -129  - #O_SYNC - 0x0080 - - ) - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -131  - #O_SHLOCK - 0x0010 - - ) - -132  - #O_EXLOCK - 0x0020 - - ) - -133  - #O_ASYNC - 0x0040 - - ) - -134  - #O_FSYNC - -O_SYNC - - - ) - -135  - #O_NOFOLLOW - 0x0100 - - ) - -137  - #O_CREAT - 0x0200 - - ) - -138  - #O_TRUNC - 0x0400 - - ) - -139  - #O_EXCL - 0x0800 - - ) - -140 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -141  - #O_EVTONLY - 0x8000 - - ) - -145  - #O_NOCTTY - 0x20000 - - ) - -148 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -149  - #O_DIRECTORY - 0x100000 - - ) - -150  - #O_SYMLINK - 0x200000 - - ) - -161 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -162  - #FAPPEND - -O_APPEND - - - ) - -163  - #FASYNC - -O_ASYNC - - - ) - -164  - #FFSYNC - -O_FSYNC - - - ) - -165  - #FNONBLOCK - -O_NONBLOCK - - - ) - -166  - #FNDELAY - -O_NONBLOCK - - - ) - -167  - #O_NDELAY - -O_NONBLOCK - - - ) - -174 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -175  - #CPF_OVERWRITE - 1 - - ) - -176  - #CPF_IGNORE_MODE - 2 - - ) - -177  - #CPF_MASK - ( -CPF_OVERWRITE -| -CPF_IGNORE_MODE -) - - ) - -185  - #F_DUPFD - 0 - - ) - -186  - #F_GETFD - 1 - - ) - -187  - #F_SETFD - 2 - - ) - -188  - #F_GETFL - 3 - - ) - -189  - #F_SETFL - 4 - - ) - -190  - #F_GETOWN - 5 - - ) - -191  - #F_SETOWN - 6 - - ) - -192  - #F_GETLK - 7 - - ) - -193  - #F_SETLK - 8 - - ) - -194  - #F_SETLKW - 9 - - ) - -195 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -196  - #F_CHKCLEAN - 41 - - ) - -197  - #F_PREALLOCATE - 42 - - ) - -198  - #F_SETSIZE - 43 - - ) - -199  - #F_RDADVISE - 44 - - ) - -200  - #F_RDAHEAD - 45 - - ) - -201  - #F_READBOOTSTRAP - 46 - - ) - -202  - #F_WRITEBOOTSTRAP - 47 - - ) - -203  - #F_NOCACHE - 48 - - ) - -204  - #F_LOG2PHYS - 49 - - ) - -205  - #F_GETPATH - 50 - - ) - -206  - #F_FULLFSYNC - 51 - - ) - -207  - #F_PATHPKG_CHECK - 52 - - ) - -208  - #F_FREEZE_FS - 53 - - ) - -209  - #F_THAW_FS - 54 - - ) - -210  - #F_GLOBAL_NOCACHE - 55 - - ) - -213  - #F_ADDSIGS - 59 - - ) - -215  - #F_MARKDEPENDENCY - 60 - - ) - -218  - #FCNTL_FS_SPECIFIC_BASE - 0x00010000 - - ) - -223  - #FD_CLOEXEC - 1 - - ) - -226  - #F_RDLCK - 1 - - ) - -227  - #F_UNLCK - 2 - - ) - -228  - #F_WRLCK - 3 - - ) - -234 #iâdeŕ -SEEK_SET - - -235  - #SEEK_SET - 0 - - ) - -236  - #SEEK_CUR - 1 - - ) - -237  - #SEEK_END - 2 - - ) - -244 #iâdeŕ -S_IFMT - - -246  - #S_IFMT - 0170000 - - ) - -247  - #S_IFIFO - 0010000 - - ) - -248  - #S_IFCHR - 0020000 - - ) - -249  - #S_IFDIR - 0040000 - - ) - -250  - #S_IFBLK - 0060000 - - ) - -251  - #S_IFREG - 0100000 - - ) - -252  - #S_IFLNK - 0120000 - - ) - -253  - #S_IFSOCK - 0140000 - - ) - -254 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -255  - #S_IFWHT - 0160000 - - ) - -256  - #S_IFXATTR - 0200000 - - ) - -261  - #S_IRWXU - 0000700 - - ) - -262  - #S_IRUSR - 0000400 - - ) - -263  - #S_IWUSR - 0000200 - - ) - -264  - #S_IXUSR - 0000100 - - ) - -266  - #S_IRWXG - 0000070 - - ) - -267  - #S_IRGRP - 0000040 - - ) - -268  - #S_IWGRP - 0000020 - - ) - -269  - #S_IXGRP - 0000010 - - ) - -271  - #S_IRWXO - 0000007 - - ) - -272  - #S_IROTH - 0000004 - - ) - -273  - #S_IWOTH - 0000002 - - ) - -274  - #S_IXOTH - 0000001 - - ) - -276  - #S_ISUID - 0004000 - - ) - -277  - #S_ISGID - 0002000 - - ) - -278  - #S_ISVTX - 0001000 - - ) - -280 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -281  - #S_ISTXT - -S_ISVTX - - - ) - -282  - #S_IREAD - -S_IRUSR - - - ) - -283  - #S_IWRITE - -S_IWUSR - - - ) - -284  - #S_IEXEC - -S_IXUSR - - - ) - -288 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -291  - #F_ALLOCATECONTIG - 0x00000002 - - ) - -292  - #F_ALLOCATEALL - 0x00000004 - - ) - -296  - #F_PEOFPOSMODE - 3 - - ) - -298  - #F_VOLPOSMODE - 4 - - ) - -305  - sćock - { - -306 -off_t - - ml_ˇ¬t -; - -307 -off_t - - ml_Ën -; - -308 -pid_t - - ml_pid -; - -309  - ml_tył -; - -310  - ml_wh’ű -; - -314 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -319  - sżdvisÜy - { - -320 -off_t - - mż_offŁt -; - -321  - mż_couÁ -; - -329  - sfsigÇtu»s - { - -330 -off_t - - mfs_fže_ˇ¬t -; - -331 * - mfs_blob_ˇ¬t -; - -332 -size_t - - mfs_blob_size -; - -333 } - tfsigÇtu»s_t -; - -336  - #LOCK_SH - 0x01 - - ) - -337  - #LOCK_EX - 0x02 - - ) - -338  - #LOCK_NB - 0x04 - - ) - -339  - #LOCK_UN - 0x08 - - ) - -343  - sfˇÜe - { - -344  - mfˇ_ćags -; - -345  - mfˇ_posmode -; - -346 -off_t - - mfˇ_offŁt -; - -347 -off_t - - mfˇ_Ëngth -; - -348 -off_t - - mfˇ_by‹§Îoc -; - -349 } - tfˇÜe_t -; - -353  - sfbo١ż±żnsăr - { - -354 -off_t - - mfbt_offŁt -; - -355 -size_t - - mfbt_Ëngth -; - -356 * - mfbt_bufăr -; - -357 } - tfbo١ż±żnsăr_t -; - -377 #´agm¨ -·ck -(4) - -379  - slog2phys - { - -380  - ml2p_ćags -; - -381 -off_t - - ml2p_cÚtigby‹s -; - -382 -off_t - - ml2p_devoffŁt -; - -385 #´agm¨ -·ck -() - -387  - #O_POPUP - 0x80000000 - - ) - -388  - #O_ALERT - 0x20000000 - - ) - -394 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -395 #iâdeŕ -_FILESEC_T - - -396  - g_fžeŁc -; - -397  -_fžeŁc - * - tfžeŁc_t -; - -398  - #_FILESEC_T - - - ) - -401 - mFILESEC_OWNER - = 1, - -402 - mFILESEC_GROUP - = 2, - -403 - mFILESEC_UUID - = 3, - -404 - mFILESEC_MODE - = 4, - -405 - mFILESEC_ACL - = 5, - -406 - mFILESEC_GRPUUID - = 6, - -409 - mFILESEC_ACL_RAW - = 100, - -410 - mFILESEC_ACL_ALLOCSIZE - = 101 - -411 } - tfžeŁc_´Ý”ty_t -; - -414  - #FILESEC_GUID - -FILESEC_UUID - - - ) - -417 -__BEGIN_DECLS - - -418  - $Ý’ -(cÚˇ *, , ...č - `__DARWIN_ALIAS_C -( -Ý’ -); - -419  - $ü—t -(cÚˇ *, -mode_t -č - `__DARWIN_ALIAS_C -( -ü—t -); - -420  - $fúŽ -(, , ...č - `__DARWIN_ALIAS_C -( -fúŽ -); - -421 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -422  - `Ý’x_Ĺ -(cÚˇ *, , -fžeŁc_t -); - -423  - `ćock -(, ); - -424 -fžeŁc_t - - `fžeŁc_š™ -(); - -425 -fžeŁc_t - - `fžeŁc_dup -(filesec_t); - -426  - `fžeŁc_ä“ -( -fžeŁc_t -); - -427  - `fžeŁc_g‘_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, *); - -428  - `fžeŁc_Łt_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, const *); - -429  - `fžeŁc_qu”y_´Ý”ty -( -fžeŁc_t -, -fžeŁc_´Ý”ty_t -, *); - -430  - #_FILESEC_UNSET_PROPERTY - ((*)0) - - ) - -431  - #_FILESEC_REMOVE_ACL - ((*)1) - - ) - -433 -__END_DECLS - - - @/usr/include/sys/select.h - -63 #iâdeŕ -_SYS_SELECT_H_ - - -64  - #_SYS_SELECT_H_ - - - ) - -66  - ~ - -67  - ~ - -68  - ~ - -75  - #__Ăed_fd_Łt - - - ) - -76  - #__Ăed_ˇruů_timeĄec - - - ) - -77  - #__Ăed_ˇruů_timev® - - - ) - -78  - ~ - -85 #iâdef -_TIME_T - - -86  - #_TIME_T - - - ) - -87  -__d¬wš_time_t - - ttime_t -; - -90 #iâdeŕ -_SUSECONDS_T - - -91  - #_SUSECONDS_T - - - ) - -92  -__d¬wš_suŁcÚds_t - - tsuŁcÚds_t -; - -95 #iâdeŕ -_SIGSET_T - - -96  - #_SIGSET_T - - - ) - -97  -__d¬wš_sigŁt_t - - tsigŁt_t -; - -112 #iâdef -FD_SETSIZE - - -113  - #FD_SETSIZE - -__DARWIN_FD_SETSIZE - - - ) - -115 #iâdeŕ -FD_SET - - -116  - #FD_SET -( -n -, -p -č - `__DARWIN_FD_SET -Ň,…) - - ) - -118 #iâdeŕ -FD_CLR - - -119  - #FD_CLR -( -n -, -p -č - `__DARWIN_FD_CLR -Ň,…) - - ) - -121 #iâdeŕ -FD_ISSET - - -122  - #FD_ISSET -( -n -, -p -č - `__DARWIN_FD_ISSET -Ň,…) - - ) - -124 #iâdeŕ -FD_ZERO - - -125  - #FD_ZERO -( -p -č - `__DARWIN_FD_ZERO -Ő) - - ) - -127 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -128 #iâdeŕ -FD_COPY - - -129  - #FD_COPY -( -f -, -t -č - `__DARWIN_FD_COPY -(f,) - - ) - -134 - g__BEGIN_DECLS - - -136 #iâdeŕ -__MWERKS__ - - -137  - $pŁËů -(, -fd_Łt - * -__»ˇriů -, fd_set * __restrict, - -138 -fd_Łt - * -__»ˇriů -, cÚˇ  -timeĄec - * __restrict, - -139 cÚˇ -sigŁt_t - * -__»ˇriů -) - -140 #iŕ - `defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_UNLIMITED_SELECT -) - -141 - $__DARWIN_EXTSN_C -( -pŁËů -) - -143 #iŕ - `defšed -( -__LP64__ -č&& ! -__DARWIN_NON_CANCELABLE - - -144 - $__DARWIN_1050 -( -pŁËů -) - -146 - $__DARWIN_ALIAS_C -( -pŁËů -) - -152  - ~ - -154 -__END_DECLS - - - @/usr/include/sys/unistd.h - -64 #iâdeŕ -_SYS_UNISTD_H_ - - -65  - #_SYS_UNISTD_H_ - - - ) - -67  - ~ - -75 #ifdef -_NOT_AVAILABLE - - -76  - #_POSIX_SAVED_IDS - - - ) - -79  - #_POSIX_VERSION - 200112L - - ) - -80  - #_POSIX2_VERSION - 200112L - - ) - -84 #iâdeŕ -_POSIX_VDISABLE - - -85  - #_POSIX_VDISABLE - (()'\377') - - ) - -88  - #_POSIX_THREAD_KEYS_MAX - 128 - - ) - -91  - #F_OK - 0 - - ) - -92  - #X_OK - (1<<0č - - ) - -93  - #W_OK - (1<<1č - - ) - -94  - #R_OK - (1<<2č - - ) - -96 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -102  - #_READ_OK - (1<<9č - - ) - -103  - #_WRITE_OK - (1<<10č - - ) - -104  - #_EXECUTE_OK - (1<<11č - - ) - -105  - #_DELETE_OK - (1<<12č - - ) - -106  - #_APPEND_OK - (1<<13č - - ) - -107  - #_RMFILE_OK - (1<<14č - - ) - -108  - #_RATTR_OK - (1<<15č - - ) - -109  - #_WATTR_OK - (1<<16č - - ) - -110  - #_REXT_OK - (1<<17č - - ) - -111  - #_WEXT_OK - (1<<18č - - ) - -112  - #_RPERM_OK - (1<<19č - - ) - -113  - #_WPERM_OK - (1<<20č - - ) - -114  - #_CHOWN_OK - (1<<21č - - ) - -116  - #_ACCESS_EXTENDED_MASK - ( -_READ_OK - | -_WRITE_OK - | -_EXECUTE_OK - | \ - -117 -_DELETE_OK - | -_APPEND_OK - | \ - -118 -_RMFILE_OK - | -_REXT_OK - | \ - -119 -_WEXT_OK - | -_RATTR_OK - | -_WATTR_OK - | -_RPERM_OK - | \ - -120 -_WPERM_OK - | -_CHOWN_OK -) - - ) - -124 #iâdeŕ -SEEK_SET - - -125  - #SEEK_SET - 0 - - ) - -126  - #SEEK_CUR - 1 - - ) - -127  - #SEEK_END - 2 - - ) - -130 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -132  - #L_SET - -SEEK_SET - - - ) - -133  - #L_INCR - -SEEK_CUR - - - ) - -134  - #L_XTND - -SEEK_END - - - ) - -137 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -138  - sacűssx_desüťtÜ - { - -139  - mad_Çme_offŁt -; - -140  - mad_ćags -; - -141  - mad_·d -[2]; - -143  - #ACCESSX_MAX_DESCRIPTORS - 100 - - ) - -144  - #ACCESSX_MAX_TABLESIZE - (16 * 1024) - - ) - -148  - #_PC_LINK_MAX - 1 - - ) - -149  - #_PC_MAX_CANON - 2 - - ) - -150  - #_PC_MAX_INPUT - 3 - - ) - -151  - #_PC_NAME_MAX - 4 - - ) - -152  - #_PC_PATH_MAX - 5 - - ) - -153  - #_PC_PIPE_BUF - 6 - - ) - -154  - #_PC_CHOWN_RESTRICTED - 7 - - ) - -155  - #_PC_NO_TRUNC - 8 - - ) - -156  - #_PC_VDISABLE - 9 - - ) - -158 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -159  - #_PC_NAME_CHARS_MAX - 10 - - ) - -160  - #_PC_CASE_SENSITIVE - 11 - - ) - -161  - #_PC_CASE_PRESERVING - 12 - - ) - -162  - #_PC_EXTENDED_SECURITY_NP - 13 - - ) - -163  - #_PC_AUTH_OPAQUE_NP - 14 - - ) - -166  - #_PC_2_SYMLINKS - 15 - - ) - -167  - #_PC_ALLOC_SIZE_MIN - 16 - - ) - -168  - #_PC_ASYNC_IO - 17 - - ) - -169  - #_PC_FILESIZEBITS - 18 - - ) - -170  - #_PC_PRIO_IO - 19 - - ) - -171  - #_PC_REC_INCR_XFER_SIZE - 20 - - ) - -172  - #_PC_REC_MAX_XFER_SIZE - 21 - - ) - -173  - #_PC_REC_MIN_XFER_SIZE - 22 - - ) - -174  - #_PC_REC_XFER_ALIGN - 23 - - ) - -175  - #_PC_SYMLINK_MAX - 24 - - ) - -176  - #_PC_SYNC_IO - 25 - - ) - -179  - #_CS_PATH - 1 - - ) - - @/usr/include/sys/wait.h - -64 #iâdeŕ -_SYS_WAIT_H_ - - -65  - #_SYS_WAIT_H_ - - - ) - -67  - ~ - -68  - ~ - -80 - mP_ALL -, - -81 - mP_PID -, - -82 - mP_PGID - - -83 } - tidtył_t -; - -89 #iâdeŕ -_PID_T - - -90  -__d¬wš_pid_t - - tpid_t -; - -91  - #_PID_T - - - ) - -94 #iâdeŕ -_ID_T - - -95  -__d¬wš_id_t - - tid_t -; - -96  - #_ID_T - - - ) - -116  - ~ - -117  - ~ - -128  - #WNOHANG - 0x00000001 - - ) - -129  - #WUNTRACED - 0x00000002 - - ) - -135 #iŕ -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -) - -136  - #_W_INT -( -i -č(i) - - ) - -138  - #_W_INT -( -w -č(*(*)&(w)č - - ) - -139  - #WCOREFLAG - 0200 - - ) - -143  - #_WSTATUS -( -x -č( - `_W_INT -(xč& 0177) - - ) - -144  - #_WSTOPPED - 0177 - - ) - -150 #iŕ -__DARWIN_UNIX03 - - -151  - #WEXITSTATUS -( -x -č(( - `_W_INT -(xč>> 8č& 0x000000ff) - - ) - -153  - #WEXITSTATUS -( -x -č( - `_W_INT -(xč>> 8) - - ) - -156  - #WSTOPSIG -( -x -č( - `_W_INT -(xč>> 8) - - ) - -157  - #WIFCONTINUED -( -x -č( - `_WSTATUS -(xč=đ -_WSTOPPED - && - `WSTOPSIG -(xč=đ0x13) - - ) - -158  - #WIFSTOPPED -( -x -č( - `_WSTATUS -(xč=đ -_WSTOPPED - && - `WSTOPSIG -(xč!đ0x13) - - ) - -159  - #WIFEXITED -( -x -č( - `_WSTATUS -(xč=đ0) - - ) - -160  - #WIFSIGNALED -( -x -č( - `_WSTATUS -(xč!đ -_WSTOPPED - && _WSTATUS(xč!đ0) - - ) - -161  - #WTERMSIG -( -x -č( - `_WSTATUS -(x)) - - ) - -162 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -163  - #WCOREDUMP -( -x -č( - `_W_INT -(xč& -WCOREFLAG -) - - ) - -165  - #W_EXITCODE -( -»t -, -sig -č(Ô‘č<< 8 | (sig)) - - ) - -166  - #W_STOPCODE -( -sig -č((sigč<< 8 | -_WSTOPPED -) - - ) - -175  - #WEXITED - 0x00000004 - - ) - -176 #iŕ -__DARWIN_UNIX03 - - -178  - #WSTOPPED - 0x00000008 - - ) - -180  - #WCONTINUED - 0x00000010 - - ) - -181  - #WNOWAIT - 0x00000020 - - ) - -184 #iŕ(! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -190  - #WAIT_ANY - (-1č - - ) - -191  - #WAIT_MYPGRP - 0 - - ) - -193  - ~ - -201  - uwa™ - { - -202  - mw_ˇ©us -; - -207 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_LITTLE_ENDIAN - - -208  - mw_T”msig -:7, - -209 - mw_CÜedump -:1, - -210 - mw_R‘code -:8, - -211 - mw_FžËr -:16; - -213 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -214  - mw_FžËr -:16, - -215 - mw_R‘code -:8, - -216 - mw_CÜedump -:1, - -217 - mw_T”msig -:7; - -219 } - mw_T -; - -226 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_LITTLE_ENDIAN - - -227  - mw_StÝv® -:8, - -228 - mw_StÝsig -:8, - -229 - mw_FžËr -:16; - -231 #iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -232  - mw_FžËr -:16, - -233 - mw_StÝsig -:8, - -234 - mw_StÝv® -:8; - -236 } - mw_S -; - -238  - #w_‹rmsig - -w_T -. -w_T”msig - - - ) - -239  - #w_cÜedump - -w_T -. -w_CÜedump - - - ) - -240  - #w_»tcode - -w_T -. -w_R‘code - - - ) - -241  - #w_ˇÝv® - -w_S -. -w_StÝv® - - - ) - -242  - #w_ˇÝsig - -w_S -. -w_StÝsig - - - ) - -246 #iŕ!( -__DARWIN_UNIX03 - - 0) - -251  - #WSTOPPED - -_WSTOPPED - - - ) - -254 -__BEGIN_DECLS - - -255 -pid_t - - $wa™ -(*č - `__DARWIN_ALIAS_C -( -wa™ -); - -256 -pid_t - - $wa™pid -( -pid_t -, *, č - `__DARWIN_ALIAS_C -( -wa™pid -); - -257 #iâdeŕ -_ANSI_SOURCE - - -258  - $wa™id -( -idtył_t -, -id_t -, -sigšfo_t - *, č - `__DARWIN_ALIAS_C -( -wa™id -); - -260 #iŕ (! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -261 -pid_t - - `wa™3 -(*, ,  -ru§ge - *); - -262 -pid_t - - `wa™4 -Őid_t, *, ,  -ru§ge - *); - -264 -__END_DECLS - - - @/usr/include/xlocale/_stdio.h - -24 #iâdeŕ -_XLOCALE__STDIO_H_ - - -25  - #_XLOCALE__STDIO_H_ - - - ) - -27 -__BEGIN_DECLS - - -28  - $aĄrštf_l -(**, -lo˙Ë_t -, const *, ...) - -29 - `__DARWIN_LDBL_COMPAT2 -( -aĄrštf_l -); - -30  - $ĺrštf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -31 - `__DARWIN_LDBL_COMPAT2 -( -ĺrštf_l -); - -32  - $fs˙nf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -33 - `__DARWIN_LDBL_COMPAT2 -( -fs˙nf_l -); - -34  - $´štf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, ...) - -35 - `__DARWIN_LDBL_COMPAT2 -( -´štf_l -); - -36  - $s˙nf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, ...) - -37 - `__DARWIN_LDBL_COMPAT2 -( -s˙nf_l -); - -38  - $˘´štf_l -(* -__»ˇriů -, -size_t -, -lo˙Ë_t -, - -39 cÚˇ * -__»ˇriů -, ...č - `__DARWIN_LDBL_COMPAT2 -( -˘´štf_l -); - -40  - $Ąrštf_l -(* -__»ˇriů -, -lo˙Ë_t -, const * __restrict, ...) - -41 - `__DARWIN_LDBL_COMPAT2 -( -Ąrštf_l -); - -42  - $ss˙nf_l -(cÚˇ * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -43 ...č - `__DARWIN_LDBL_COMPAT2 -( -ss˙nf_l -); - -44  - $vaĄrštf_l -(**, -lo˙Ë_t -, cÚˇ *, -va_liˇ -) - -45 - `__DARWIN_LDBL_COMPAT2 -( -vaĄrštf_l -); - -46  - $vĺrštf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -47 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vĺrštf_l -); - -48  - $vfs˙nf_l -( -FILE - * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -49 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vfs˙nf_l -); - -50  - $v´štf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, -va_liˇ -) - -51 - `__DARWIN_LDBL_COMPAT2 -( -v´štf_l -); - -52  - $vs˙nf_l -( -lo˙Ë_t -, cÚˇ * -__»ˇriů -, -va_liˇ -) - -53 - `__DARWIN_LDBL_COMPAT2 -( -vs˙nf_l -); - -54  - $v˘´štf_l -(* -__»ˇriů -, -size_t -, -lo˙Ë_t -, - -55 cÚˇ * -__»ˇriů -, -va_liˇ -) - -56 - `__DARWIN_LDBL_COMPAT2 -( -v˘´štf_l -); - -57  - $vĄrštf_l -(* -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -58 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vĄrštf_l -); - -59  - $vss˙nf_l -(cÚˇ * -__»ˇriů -, -lo˙Ë_t -, const * __restrict, - -60 -va_liˇ -č - `__DARWIN_LDBL_COMPAT2 -( -vss˙nf_l -); - -61 -__END_DECLS - - - @/usr/include/xlocale/_stdlib.h - -24 #iâdeŕ -_XLOCALE__STDLIB_H_ - - -25  - #_XLOCALE__STDLIB_H_ - - - ) - -27 -__BEGIN_DECLS - - -28  -©of_l -(cÚˇ *, -lo˙Ë_t -); - -29  -©oi_l -(cÚˇ *, -lo˙Ë_t -); - -30  -©Ţ_l -(cÚˇ *, -lo˙Ë_t -); - -31 #iŕ! -__DARWIN_NO_LONG_LONG - - -33 -©Ţl_l -(cÚˇ *, -lo˙Ë_t -); - -35  -mbËn_l -(cÚˇ *, -size_t -, -lo˙Ë_t -); - -36 -size_t - -mbˇowcs_l -( -wch¬_t - * -__»ˇriů - , const * __restrict, size_t, - -37 -lo˙Ë_t -); - -38  -mbtowc_l -( -wch¬_t - * -__»ˇriů -, cÚˇ * __»ˇriů, -size_t -, - -39 -lo˙Ë_t -); - -40  - $ˇąod_l -(cÚˇ *, **, -lo˙Ë_t -č - `__DARWIN_ALIAS -( -ˇąod_l -); - -41  - $ˇąof_l -(cÚˇ *, **, -lo˙Ë_t -č - `__DARWIN_ALIAS -( -ˇąof_l -); - -42  - `ˇąŢ_l -(cÚˇ *, **, , -lo˙Ë_t -); - -44 - $ˇąŢd_l -(cÚˇ *, **, -lo˙Ë_t -) - -45 - `__DARWIN_LDBL_COMPAT2 -( -ˇąŢd_l -); - -47 - `ˇąŢl_l -(cÚˇ *, **, , -lo˙Ë_t -); - -48 #iŕ! -__DARWIN_NO_LONG_LONG - - -50 - `ˇąoq_l -(cÚˇ *, **, , -lo˙Ë_t -); - -53 - `ˇąoul_l -(cÚˇ *, **, , -lo˙Ë_t -); - -55 - `ˇąouÎ_l -(cÚˇ *, **, , -lo˙Ë_t -); - -56 #iŕ! -__DARWIN_NO_LONG_LONG - - -58 - `ˇąouq_l -(cÚˇ *, **, , -lo˙Ë_t -); - -60 -size_t - - `wcˇombs_l -(* -__»ˇriů -, cÚˇ -wch¬_t - * __restrict, size_t, - -61 -lo˙Ë_t -); - -62  - `wůomb_l -(*, -wch¬_t -, -lo˙Ë_t -); - -65 #iŕ! - `defšed -( -__ýluĄlus -č&& defšed( -__WCHAR_MAX__ -) && __WCHAR_MAX__ <= 0xffffU - -66 #´agm¨ -GCC - -poisÚ - -mbˇowcs_l - -mbtowc_l - -wcˇombs_l - -wůomb_l - - -68 -__END_DECLS - - - @/usr/include/xlocale/_string.h - -24 #iâdeŕ -_XLOCALE__STRING_H_ - - -25  - #_XLOCALE__STRING_H_ - - - ) - -27 -__BEGIN_DECLS - - -28  -ˇrcŢl_l -(cÚˇ *, cÚˇ *, -lo˙Ë_t -); - -29 -size_t - -ˇrxäm_l -(*, cÚˇ *, size_t, -lo˙Ë_t -); - -30  -ˇr˙Łcmp_l -(cÚˇ *, cÚˇ *, -lo˙Ë_t -); - -31 * -ˇr˙َr_l -(cÚˇ *, cÚˇ *, -lo˙Ë_t -); - -32  -ˇş˙Łcmp_l -(cÚˇ *, cÚˇ *, -size_t -, -lo˙Ë_t -); - -33 - g__END_DECLS - - - @/usr/include/i386/endian.h - -66 #iâdeŕ -_I386__ENDIAN_H_ - - -67  - #_I386__ENDIAN_H_ - - - ) - -69  - ~ - -78  - #_QUAD_HIGHWORD - 1 - - ) - -79  - #_QUAD_LOWWORD - 0 - - ) - -85  - #__DARWIN_LITTLE_ENDIAN - 1234 - - ) - -86  - #__DARWIN_BIG_ENDIAN - 4321 - - ) - -87  - #__DARWIN_PDP_ENDIAN - 3412 - - ) - -89  - #__DARWIN_BYTE_ORDER - -__DARWIN_LITTLE_ENDIAN - - - ) - -91 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -93  - #LITTLE_ENDIAN - -__DARWIN_LITTLE_ENDIAN - - - ) - -94  - #BIG_ENDIAN - -__DARWIN_BIG_ENDIAN - - - ) - -95  - #PDP_ENDIAN - -__DARWIN_PDP_ENDIAN - - - ) - -97  - #BYTE_ORDER - -__DARWIN_BYTE_ORDER - - - ) - -99  - ~ - - @/usr/include/i386/types.h - -66 #iâdef -_MACHTYPES_H_ - - -67  - #_MACHTYPES_H_ - - - ) - -69 #iâdeŕ -__ASSEMBLER__ - - -70  - ~ - -71  - ~ - -76 #iâdeŕ -_INT8_T - - -77  - #_INT8_T - - - ) - -78  -__sigĂd -  - tšt8_t -; - -80  - tu_št8_t -; - -81 #iâdeŕ -_INT16_T - - -82  - #_INT16_T - - - ) - -83  - tšt16_t -; - -85  - tu_št16_t -; - -86 #iâdeŕ -_INT32_T - - -87  - #_INT32_T - - - ) - -88  - tšt32_t -; - -90  - tu_št32_t -; - -91 #iâdeŕ -_INT64_T - - -92  - #_INT64_T - - - ) - -93  - tšt64_t -; - -95  - tu_št64_t -; - -97 #iŕ -__LP64__ - - -98  -št64_t - - t»giˇ”_t -; - -100  -št32_t - - t»giˇ”_t -; - -103 #iâdeŕ -_INTPTR_T - - -104  - #_INTPTR_T - - - ) - -105  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -107 #iâdeŕ -_UINTPTR_T - - -108  - #_UINTPTR_T - - - ) - -109  - tušŤŚ_t -; - -112 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -114  -u_št64_t - - tuŁr_addr_t -; - -115  -u_št64_t - - tuŁr_size_t -; - -116  -št64_t - - tuŁr_ssize_t -; - -117  -št64_t - - tuŁr_lÚg_t -; - -118  -u_št64_t - - tuŁr_ulÚg_t -; - -119  -št64_t - - tuŁr_time_t -; - -120  - #USER_ADDR_NULL - (( -uŁr_addr_t -č0) - - ) - -121  - #CAST_USER_ADDR_T -( -a_±r -č(( -uŁr_addr_t -)(( -ušŤŚ_t -)×_±r))) - - ) - -125  -u_št64_t - - tsys˙Î_¬g_t -; - -127 #iâdeŕ -__offŁtof - - -128  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - - @/usr/include/machine/_structs.h - -28 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -29  - ~"µc/_ˇruůs.h -" - -30 #–iŕ -defšed - ( -__i386__ -č|| defšed ( -__x86_64__ -) - -31  - ~"i386/_ˇruůs.h -" - -32 #–iŕ -defšed - ( -__¬m__ -) - -33  - ~"¬m/_ˇruůs.h -" - -35 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/machine/_types.h - -28 #iâdeŕ -_BSD_MACHINE__TYPES_H_ - - -29  - #_BSD_MACHINE__TYPES_H_ - - - ) - -31 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -32  - ~"µc/_tyłs.h -" - -33 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -34  - ~"i386/_tyłs.h -" - -35 #–iŕ -defšed - ( -__¬m__ -) - -36  - ~"¬m/_tyłs.h -" - -38 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/ppc/endian.h - -92 #iâdeŕ -_PPC_ENDIAN_H_ - - -93  - #_PPC_ENDIAN_H_ - - - ) - -95  - ~ - -100  - #_QUAD_HIGHWORD - 0 - - ) - -101  - #_QUAD_LOWWORD - 1 - - ) - -107  - #__DARWIN_LITTLE_ENDIAN - 1234 - - ) - -108  - #__DARWIN_BIG_ENDIAN - 4321 - - ) - -109  - #__DARWIN_PDP_ENDIAN - 3412 - - ) - -111  - #__DARWIN_BYTE_ORDER - -__DARWIN_BIG_ENDIAN - - - ) - -113 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -115  - #LITTLE_ENDIAN - -__DARWIN_LITTLE_ENDIAN - - - ) - -116  - #BIG_ENDIAN - -__DARWIN_BIG_ENDIAN - - - ) - -117  - #PDP_ENDIAN - -__DARWIN_PDP_ENDIAN - - - ) - -119  - #BYTE_ORDER - -__DARWIN_BYTE_ORDER - - - ) - -121  - ~ - - @/usr/include/ppc/types.h - -66 #iâdef -_MACHTYPES_H_ - - -67  - #_MACHTYPES_H_ - - - ) - -69 #iâdeŕ -__ASSEMBLER__ - - -70  - ~<µc/_tyłs.h -> - -71  - ~ - -76 #iâdeŕ -_INT8_T - - -77  - #_INT8_T - - - ) - -78  -__sigĂd -  - tšt8_t -; - -80  - tu_št8_t -; - -81 #iâdeŕ -_INT16_T - - -82  - #_INT16_T - - - ) - -83  - tšt16_t -; - -85  - tu_št16_t -; - -86 #iâdeŕ -_INT32_T - - -87  - #_INT32_T - - - ) - -88  - tšt32_t -; - -90  - tu_št32_t -; - -91 #iâdeŕ -_INT64_T - - -92  - #_INT64_T - - - ) - -93  - tšt64_t -; - -95  - tu_št64_t -; - -97 #iŕ -defšed -( -__µc64__ -) - -98  -št64_t - - t»giˇ”_t -; - -100  -št32_t - - t»giˇ”_t -; - -103 #iâdeŕ -_INTPTR_T - - -104  - #_INTPTR_T - - - ) - -105  -__d¬wš_šŤŚ_t - - tšŤŚ_t -; - -107 #iâdeŕ -_UINTPTR_T - - -108  - #_UINTPTR_T - - - ) - -109  - tušŤŚ_t -; - -112 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -117  -u_št64_t - - tuŁr_addr_t -; - -118  -u_št64_t - - tuŁr_size_t -; - -119  -št64_t - - tuŁr_ssize_t -; - -120  -št64_t - - tuŁr_lÚg_t -; - -121  -u_št64_t - - tuŁr_ulÚg_t -; - -122  -št64_t - - tuŁr_time_t -; - -123  - #USER_ADDR_NULL - (( -uŁr_addr_t -č0) - - ) - -124  - #CAST_USER_ADDR_T -( -a_±r -č(( -uŁr_addr_t -)(( -ušŤŚ_t -)×_±r))) - - ) - -128  -u_št64_t - - tsys˙Î_¬g_t -; - -130 #iâdeŕ -__offŁtof - - -131  - #__offŁtof -( -tył -, -f›ld -č(( -size_t -)(&(Ńył *)0)->f›ld)) - - ) - - @/usr/include/secure/_common.h - -24 #iâdeŕ -_SECURE__COMMON_H_ - - -25  - #_SECURE__COMMON_H_ - - - ) - -27 #undeŕ -_USE_FORTIFY_LEVEL - - -28 #ifdeŕ -_FORTIFY_SOURCE - && _FORTIFY_SOURCE > 0 - -29 #iŕ -_FORTIFY_SOURCE - > 1 - -30  - #_USE_FORTIFY_LEVEL - 2 - - ) - -32  - #_USE_FORTIFY_LEVEL - 1 - - ) - -35  - #_USE_FORTIFY_LEVEL - 0 - - ) - -38  - #__d¬wš_obsz0 -( -objeů -č - `__bužtš_objeů_size - (objeů, 0) - - ) - -39  - #__d¬wš_obsz -( -objeů -č - `__bužtš_objeů_size - (objeů, -_USE_FORTIFY_LEVEL - > 1) - - ) - - @/usr/include/sys/_select.h - -36 #iâdeŕ -_SYS__SELECT_H_ - - -37  - #_SYS__SELECT_H_ - - - ) - -39  - $ŁËů -(, -fd_Łt - * -__»ˇriů -, fd_set * __restrict, - -40 -fd_Łt - * -__»ˇriů -,  -timev® - * __restrict) - -41 #iŕ - `defšed -( -_DARWIN_C_SOURCE -č|| defšed( -_DARWIN_UNLIMITED_SELECT -) - -42 - $__DARWIN_EXTSN_C -( -ŁËů -) - -44 #iŕ - `defšed -( -__LP64__ -č&& ! -__DARWIN_NON_CANCELABLE - - -45 - $__DARWIN_1050 -( -ŁËů -) - -47 - $__DARWIN_ALIAS_C -( -ŁËů -) - - @/usr/include/sys/resource.h - -64 #iâdeŕ -_SYS_RESOURCE_H_ - - -65  - #_SYS_RESOURCE_H_ - - - ) - -67  - ~ - -68  - ~ - -69  - ~ - -75  - #__Ăed_ˇruů_timev® - - - ) - -76  - ~ - -79 #iâdeŕ -_ID_T - - -80  - #_ID_T - - - ) - -81  -__d¬wš_id_t - - tid_t -; - -88  -__ušt64_t - - tľim_t -; - -99  - #PRIO_PROCESS - 0 - - ) - -100  - #PRIO_PGRP - 1 - - ) - -101  - #PRIO_USER - 2 - - ) - -103 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -104  - #PRIO_DARWIN_THREAD - 3 - - ) - -109  - #PRIO_MIN - -20 - - ) - -110  - #PRIO_MAX - 20 - - ) - -116  - #PRIO_DARWIN_BG - 0x1000 - - ) - -130  - #RUSAGE_SELF - 0 - - ) - -131  - #RUSAGE_CHILDREN - -1 - - ) - -142  - sru§ge - { - -143  -timev® - - mru_utime -; - -144  -timev® - - mru_ˇime -; - -145 #iŕ -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -) - -146  - mru_Ýaque -[14]; - -153  - mru_maxrss -; - -154  - #ru_fśˇ - -ru_ixrss - - - ) - -155  - mru_ixrss -; - -156  - mru_idrss -; - -157  - mru_i¤ss -; - -158  - mru_mšćt -; - -159  - mru_majćt -; - -160  - mru_nsw­ -; - -161  - mru_šblock -; - -162  - mru_oublock -; - -163  - mru_msg˘d -; - -164  - mru_msgrcv -; - -165  - mru_nsigÇls -; - -166  - mru_nvcsw -; - -167  - mru_nivcsw -; - -168  - #ru_ϡ - -ru_nivcsw - - - ) - -184  - #RLIM_INFINITY - ((( -__ušt64_t -)1 << 63č- 1č - - ) - -185  - #RLIM_SAVED_MAX - -RLIM_INFINITY - - - ) - -186  - #RLIM_SAVED_CUR - -RLIM_INFINITY - - - ) - -192  - #RLIMIT_CPU - 0 - - ) - -193  - #RLIMIT_FSIZE - 1 - - ) - -194  - #RLIMIT_DATA - 2 - - ) - -195  - #RLIMIT_STACK - 3 - - ) - -196  - #RLIMIT_CORE - 4 - - ) - -197  - #RLIMIT_AS - 5 - - ) - -198 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -199  - #RLIMIT_RSS - -RLIMIT_AS - - - ) - -200  - #RLIMIT_MEMLOCK - 6 - - ) - -201  - #RLIMIT_NPROC - 7 - - ) - -203  - #RLIMIT_NOFILE - 8 - - ) - -204 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -205  - #RLIM_NLIMITS - 9 - - ) - -207  - #_RLIMIT_POSIX_FLAG - 0x1000 - - ) - -213  - sľim™ - { - -214 -ľim_t - - mľim_cur -; - -215 -ľim_t - - mľim_max -; - -218 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -220  - #IOPOL_TYPE_DISK - 0 - - ) - -223  - #IOPOL_SCOPE_PROCESS - 0 - - ) - -224  - #IOPOL_SCOPE_THREAD - 1 - - ) - -227  - #IOPOL_DEFAULT - 0 - - ) - -228  - #IOPOL_NORMAL - 1 - - ) - -229  - #IOPOL_PASSIVE - 2 - - ) - -230  - #IOPOL_THROTTLE - 3 - - ) - -235 -__BEGIN_DECLS - - -236  -g‘´iÜ™y -(, -id_t -); - -237 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -238  -g‘iÝŢicy_Ĺ -(, ); - -240  - $g‘ľim™ -(,  -ľim™ - *č - `__DARWIN_ALIAS -( -g‘ľim™ -); - -241  - `g‘ru§ge -(,  -ru§ge - *); - -242  - `ŁŤriÜ™y -(, -id_t -, ); - -243 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -244  - `ŁtiÝŢicy_Ĺ -(, , ); - -246  - $ŁŚlim™ -(, cÚˇ  -ľim™ - *č - `__DARWIN_ALIAS -( -ŁŚlim™ -); - -247 -__END_DECLS - - - @/usr/include/sys/signal.h - -69 #iâdef -_SYS_SIGNAL_H_ - - -70  - #_SYS_SIGNAL_H_ - - - ) - -72  - ~ - -73  - ~ - -75  - #__DARWIN_NSIG - 32 - - ) - -77 #iŕ! -defšed -( -_ANSI_SOURCE -č&& (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -78  - #NSIG - -__DARWIN_NSIG - - - ) - -81  - ~ - -83  - #SIGHUP - 1 - - ) - -84  - #SIGINT - 2 - - ) - -85  - #SIGQUIT - 3 - - ) - -86  - #SIGILL - 4 - - ) - -87  - #SIGTRAP - 5 - - ) - -88  - #SIGABRT - 6 - - ) - -89 #iŕ ( -defšed -( -_POSIX_C_SOURCE -č&& !defšed( -_DARWIN_C_SOURCE -)) - -90  - #SIGPOLL - 7 - - ) - -92  - #SIGIOT - -SIGABRT - - - ) - -93  - #SIGEMT - 7 - - ) - -95  - #SIGFPE - 8 - - ) - -96  - #SIGKILL - 9 - - ) - -97  - #SIGBUS - 10 - - ) - -98  - #SIGSEGV - 11 - - ) - -99  - #SIGSYS - 12 - - ) - -100  - #SIGPIPE - 13 - - ) - -101  - #SIGALRM - 14 - - ) - -102  - #SIGTERM - 15 - - ) - -103  - #SIGURG - 16 - - ) - -104  - #SIGSTOP - 17 - - ) - -105  - #SIGTSTP - 18 - - ) - -106  - #SIGCONT - 19 - - ) - -107  - #SIGCHLD - 20 - - ) - -108  - #SIGTTIN - 21 - - ) - -109  - #SIGTTOU - 22 - - ) - -110 #iŕ (! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -111  - #SIGIO - 23 - - ) - -113  - #SIGXCPU - 24 - - ) - -114  - #SIGXFSZ - 25 - - ) - -115  - #SIGVTALRM - 26 - - ) - -116  - #SIGPROF - 27 - - ) - -117 #iŕ (! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -118  - #SIGWINCH - 28 - - ) - -119  - #SIGINFO - 29 - - ) - -121  - #SIGUSR1 - 30 - - ) - -122  - #SIGUSR2 - 31 - - ) - -124 #iŕ -defšed -( -_ANSI_SOURCE -č|| -__DARWIN_UNIX03 - || defšed( -__ýluĄlus -) - -130  - #SIG_DFL - ((*)())0 - - ) - -131  - #SIG_IGN - ((*)())1 - - ) - -132  - #SIG_HOLD - ((*)())5 - - ) - -133  - #SIG_ERR - (((*)())-1) - - ) - -136  - #SIG_DFL - ((*)Đ))0 - - ) - -137  - #SIG_IGN - ((*)Đ))1 - - ) - -138  - #SIG_HOLD - ((*)Đ))5 - - ) - -139  - #SIG_ERR - (((*)Đ))-1) - - ) - -142 #iâdeŕ -_ANSI_SOURCE - - -143  - ~ - -145  - #__Ăed_mcÚ‹xt_t - - - ) - -146  - #__Ăed_ˇack_t - - - ) - -147  - #__Ăed_ucÚ‹xt_t - - - ) - -148 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -149 #iŕ -defšed -( -__µc__ -č|| defšed( -__µc64__ -) - -150  - #__Ăed_mcÚ‹xt64_t - - - ) - -151  - #__Ăed_ucÚ‹xt64_t - - - ) - -154  - ~ - -156 #iâdeŕ -_PID_T - - -157  - #_PID_T - - - ) - -158  -__d¬wš_pid_t - - tpid_t -; - -161 #iâdeŕ -_PTHREAD_ATTR_T - - -162  - #_PTHREAD_ATTR_T - - - ) - -163  -__d¬wš_±h»ad_©Ś_t - - t±h»ad_©Ś_t -; - -166 #iâdeŕ -_SIGSET_T - - -167  - #_SIGSET_T - - - ) - -168  -__d¬wš_sigŁt_t - - tsigŁt_t -; - -171 #iâdef -_SIZE_T - - -172  - #_SIZE_T - - - ) - -173  -__d¬wš_size_t - - tsize_t -; - -176 #iâdeŕ -_UID_T - - -177  - #_UID_T - - - ) - -178  -__d¬wš_uid_t - - tuid_t -; - -181  - usigv® - { - -183  - msiv®_št -; - -184 * - msiv®_±r -; - -187  - #SIGEV_NONE - 0 - - ) - -188  - #SIGEV_SIGNAL - 1 - - ) - -189  - #SIGEV_THREAD - 3 - - ) - -191  - ssigev’t - { - -192  - msigev_nŮify -; - -193  - msigev_signo -; - -194  -sigv® - - msigev_v®ue -; - -195 (* - msigev_nŮify_funůiÚ -)( - msigv® -); - -196 -±h»ad_©Ś_t - * - msigev_nŮify_©Śibu‹s -; - -200  - s__sigšfo - { - -201  - msi_signo -; - -202  - msi_”şo -; - -203  - msi_code -; - -204 -pid_t - - msi_pid -; - -205 -uid_t - - msi_uid -; - -206  - msi_ˇ©us -; - -207 * - msi_addr -; - -208  -sigv® - - msi_v®ue -; - -209  - msi_bŞd -; - -210  - m__·d -[7]; - -211 } - tsigšfo_t -; - -228 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -229  - #ILL_NOOP - 0 - - ) - -231  - #ILL_ILLOPC - 1 - - ) - -232  - #ILL_ILLTRP - 2 - - ) - -233  - #ILL_PRVOPC - 3 - - ) - -234  - #ILL_ILLOPN - 4 - - ) - -235  - #ILL_ILLADR - 5 - - ) - -236  - #ILL_PRVREG - 6 - - ) - -237  - #ILL_COPROC - 7 - - ) - -238  - #ILL_BADSTK - 8 - - ) - -241 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -242  - #FPE_NOOP - 0 - - ) - -244  - #FPE_FLTDIV - 1 - - ) - -245  - #FPE_FLTOVF - 2 - - ) - -246  - #FPE_FLTUND - 3 - - ) - -247  - #FPE_FLTRES - 4 - - ) - -248  - #FPE_FLTINV - 5 - - ) - -249  - #FPE_FLTSUB - 6 - - ) - -250  - #FPE_INTDIV - 7 - - ) - -251  - #FPE_INTOVF - 8 - - ) - -254 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -255  - #SEGV_NOOP - 0 - - ) - -257  - #SEGV_MAPERR - 1 - - ) - -258  - #SEGV_ACCERR - 2 - - ) - -261 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -262  - #BUS_NOOP - 0 - - ) - -264  - #BUS_ADRALN - 1 - - ) - -265  - #BUS_ADRERR - 2 - - ) - -266  - #BUS_OBJERR - 3 - - ) - -269  - #TRAP_BRKPT - 1 - - ) - -270  - #TRAP_TRACE - 2 - - ) - -273 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -274  - #CLD_NOOP - 0 - - ) - -276  - #CLD_EXITED - 1 - - ) - -277  - #CLD_KILLED - 2 - - ) - -278  - #CLD_DUMPED - 3 - - ) - -279  - #CLD_TRAPPED - 4 - - ) - -280  - #CLD_STOPPED - 5 - - ) - -281  - #CLD_CONTINUED - 6 - - ) - -284  - #POLL_IN - 1 - - ) - -285  - #POLL_OUT - 2 - - ) - -286  - #POLL_MSG - 3 - - ) - -287  - #POLL_ERR - 4 - - ) - -288  - #POLL_PRI - 5 - - ) - -289  - #POLL_HUP - 6 - - ) - -292  - u__sigaůiÚ_u - { - -293 (* - m__§_hŞdËr -)(); - -294 (* - m__§_sigaůiÚ -)(,  - m__sigšfo - *, - -299  - s__sigaůiÚ - { - -300  -__sigaůiÚ_u - - m__sigaůiÚ_u -; - -301 (* - m§_Śamp -)(*, , , - msigšfo_t - *, *); - -302 -sigŁt_t - - m§_mask -; - -303  - m§_ćags -; - -309  - ssigaůiÚ - { - -310  -__sigaůiÚ_u - - m__sigaůiÚ_u -; - -311 -sigŁt_t - - m§_mask -; - -312  - m§_ćags -; - -318  - #§_hŞdËr - -__sigaůiÚ_u -. -__§_hŞdËr - - - ) - -319  - #§_sigaůiÚ - -__sigaůiÚ_u -. -__§_sigaůiÚ - - - ) - -321  - #SA_ONSTACK - 0x0001 - - ) - -322  - #SA_RESTART - 0x0002 - - ) - -323  - #SA_RESETHAND - 0x0004 - - ) - -324  - #SA_NOCLDSTOP - 0x0008 - - ) - -325  - #SA_NODEFER - 0x0010 - - ) - -326  - #SA_NOCLDWAIT - 0x0020 - - ) - -327  - #SA_SIGINFO - 0x0040 - - ) - -328 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -329  - #SA_USERTRAMP - 0x0100 - - ) - -331  - #SA_64REGSET - 0x0200 - - ) - -337  - #SA_USERSPACE_MASK - ( -SA_ONSTACK - | -SA_RESTART - | -SA_RESETHAND - | -SA_NOCLDSTOP - | -SA_NODEFER - | -SA_NOCLDWAIT - | -SA_SIGINFO -) - - ) - -342  - #SIG_BLOCK - 1 - - ) - -343  - #SIG_UNBLOCK - 2 - - ) - -344  - #SIG_SETMASK - 3 - - ) - -347  - #SI_USER - 0x10001 - - ) - -348  - #SI_QUEUE - 0x10002 - - ) - -349  - #SI_TIMER - 0x10003 - - ) - -350  - #SI_ASYNCIO - 0x10004 - - ) - -351  - #SI_MESGQ - 0x10005 - - ) - -353 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -354 (* - tsig_t -)(); - -361  - #SS_ONSTACK - 0x0001 - - ) - -362  - #SS_DISABLE - 0x0004 - - ) - -363  - #MINSIGSTKSZ - 32768 - - ) - -364  - #SIGSTKSZ - 131072 - - ) - -366 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -371  - ssigvec - { - -372 (* -sv_hŞdËr -)(); - -373  -sv_mask -; - -374  -sv_ćags -; - -377  - #SV_ONSTACK - -SA_ONSTACK - - - ) - -378  - #SV_INTERRUPT - -SA_RESTART - - - ) - -379  - #SV_RESETHAND - -SA_RESETHAND - - - ) - -380  - #SV_NODEFER - -SA_NODEFER - - - ) - -381  - #SV_NOCLDSTOP - -SA_NOCLDSTOP - - - ) - -382  - #SV_SIGINFO - -SA_SIGINFO - - - ) - -384  - #sv_Úˇack - -sv_ćags - - - ) - -390  - ssigˇack - { - -391 * -ss_Ą -; - -392  -ss_Úˇack -; - -395 #iŕ! - `defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -400  - #sigmask -( -m -č(1 << ((m)-1)) - - ) - -403  - #BADSIG - -SIG_ERR - - - ) - -412 -__BEGIN_DECLS - - -413 (* - `sigÇl -(, (*)()))(); - -414 -__END_DECLS - - - @/usr/include/i386/_structs.h - -29  - ~ - -31 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -32 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -33  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -37 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -) - -38  - ~ - -42 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -43 #undeŕ -__Ăed_ˇruů_mcÚ‹xt - - -45 #iâdeŕ -_STRUCT_MCONTEXT32 - - -46 #iŕ -__DARWIN_UNIX03 - - -47  - #_STRUCT_MCONTEXT32 -  -__d¬wš_mcÚ‹xt32 - - - ) - -48 - g_STRUCT_MCONTEXT32 - - -50 -_STRUCT_X86_EXCEPTION_STATE32 - - g__es -; - -51 -_STRUCT_X86_THREAD_STATE32 - - g__ss -; - -52 -_STRUCT_X86_FLOAT_STATE32 - - g__fs -; - -55  - #_STRUCT_MCONTEXT32 -  -mcÚ‹xt32 - - - ) - -56 - g_STRUCT_MCONTEXT32 - - -58 -_STRUCT_X86_EXCEPTION_STATE32 - - ges -; - -59 -_STRUCT_X86_THREAD_STATE32 - - gss -; - -60 -_STRUCT_X86_FLOAT_STATE32 - - gfs -; - -65 #iâdeŕ -_STRUCT_MCONTEXT64 - - -66 #iŕ -__DARWIN_UNIX03 - - -67  - #_STRUCT_MCONTEXT64 -  -__d¬wš_mcÚ‹xt64 - - - ) - -68 - g_STRUCT_MCONTEXT64 - - -70 -_STRUCT_X86_EXCEPTION_STATE64 - - g__es -; - -71 -_STRUCT_X86_THREAD_STATE64 - - g__ss -; - -72 -_STRUCT_X86_FLOAT_STATE64 - - g__fs -; - -75  - #_STRUCT_MCONTEXT64 -  -mcÚ‹xt64 - - - ) - -76 - g_STRUCT_MCONTEXT64 - - -78 -_STRUCT_X86_EXCEPTION_STATE64 - - ges -; - -79 -_STRUCT_X86_THREAD_STATE64 - - gss -; - -80 -_STRUCT_X86_FLOAT_STATE64 - - gfs -; - -86 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -87 #undeŕ -__Ăed_mcÚ‹xt_t - - -88 #iâdeŕ -_MCONTEXT_T - - -89  - #_MCONTEXT_T - - - ) - -90 #iŕ -defšed -( -__LP64__ -) - -91  -_STRUCT_MCONTEXT64 - * - tmcÚ‹xt_t -; - -92  - #_STRUCT_MCONTEXT - -_STRUCT_MCONTEXT64 - - - ) - -94  -_STRUCT_MCONTEXT32 - * - tmcÚ‹xt_t -; - -95  - #_STRUCT_MCONTEXT - -_STRUCT_MCONTEXT32 - - - ) - -100 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -101 #iâdeŕ -I386_MCONTEXT_SIZE - - -102  - #I386_MCONTEXT_SIZE - ( -mcÚ‹xt -) - - ) - - @/usr/include/i386/_types.h - -28 #iâdef -_BSD_I386__TYPES_H_ - - -29  - #_BSD_I386__TYPES_H_ - - - ) - -36 #ifdeŕ -__GNUC__ - - -37  -__sigĂd -  - t__št8_t -; - -39  - t__št8_t -; - -41  - t__ušt8_t -; - -42  - t__št16_t -; - -43  - t__ušt16_t -; - -44  - t__št32_t -; - -45  - t__ušt32_t -; - -46  - t__št64_t -; - -47  - t__ušt64_t -; - -49  - t__d¬wš_šŤŚ_t -; - -50  - t__d¬wš_Çtużl_t -; - -70  - t__d¬wš_ů_ruĂ_t -; - -77  - m__mbˇ©e8 -[128]; - -78  - m_mbˇ©eL -; - -79 } - t__mbˇ©e_t -; - -81  -__mbˇ©e_t - - t__d¬wš_mbˇ©e_t -; - -83 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__PTRDIFF_TYPE__ -) - -84  -__PTRDIFF_TYPE__ - - t__d¬wš_±rdiff_t -; - -86  - t__d¬wš_±rdiff_t -; - -89 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__SIZE_TYPE__ -) - -90  -__SIZE_TYPE__ - - t__d¬wš_size_t -; - -92  - t__d¬wš_size_t -; - -95 #iŕ( -__GNUC__ - > 2) - -96  -__bužtš_va_liˇ - - t__d¬wš_va_liˇ -; - -98 * - t__d¬wš_va_liˇ -; - -101 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WCHAR_TYPE__ -) - -102  -__WCHAR_TYPE__ - - t__d¬wš_wch¬_t -; - -104  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wch¬_t -; - -107  -__d¬wš_wch¬_t - - t__d¬wš_ruĂ_t -; - -109 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WINT_TYPE__ -) - -110  -__WINT_TYPE__ - - t__d¬wš_wšt_t -; - -112  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wšt_t -; - -115  - t__d¬wš_ţock_t -; - -116  -__ušt32_t - - t__d¬wš_sockËn_t -; - -117  - t__d¬wš_ssize_t -; - -118  - t__d¬wš_time_t -; - - @/usr/include/machine/signal.h - -28 #iâdeŕ -_BSD_MACHINE_SIGNAL_H_ - - -29  - #_BSD_MACHINE_SIGNAL_H_ - - - ) - -31 #iŕ -defšed - ( -__µc__ -č|| defšed ( -__µc64__ -) - -32  - ~"µc/sigÇl.h -" - -33 #–iŕ -defšed - ( -__i386__ -č|| defšed( -__x86_64__ -) - -34  - ~"i386/sigÇl.h -" - -35 #–iŕ -defšed - ( -__¬m__ -) - -36  - ~"¬m/sigÇl.h -" - -38 #”rÜ -¬ch™eůu» - -nŮ - -suµÜ‹d - - - @/usr/include/ppc/_structs.h - -29  - ~ - -31 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -32 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -33  - #__Ăed_ˇruů_mcÚ‹xt - - - ) - -37 #ifdeŕ -__Ăed_mcÚ‹xt64_t - - -38 #iâdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -39  - #__Ăed_ˇruů_mcÚ‹xt64 - - - ) - -43 #iŕ -defšed -( -__Ăed_ˇruů_mcÚ‹xt -č|| defšed( -__Ăed_ˇruů_mcÚ‹xt64 -) - -44  - ~ - -47 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt - - -48 #undeŕ -__Ăed_ˇruů_mcÚ‹xt - - -49 #iâdeŕ -_STRUCT_MCONTEXT - - -50 #iŕ -__DARWIN_UNIX03 - - -51  - #_STRUCT_MCONTEXT -  -__d¬wš_mcÚ‹xt - - - ) - -52 - g_STRUCT_MCONTEXT - - -54 -_STRUCT_PPC_EXCEPTION_STATE - - g__es -; - -55 -_STRUCT_PPC_THREAD_STATE - - g__ss -; - -56 -_STRUCT_PPC_FLOAT_STATE - - g__fs -; - -57 -_STRUCT_PPC_VECTOR_STATE - - g__vs -; - -60  - #_STRUCT_MCONTEXT -  -mcÚ‹xt - - - ) - -61 - g_STRUCT_MCONTEXT - - -63 -_STRUCT_PPC_EXCEPTION_STATE - - ges -; - -64 -_STRUCT_PPC_THREAD_STATE - - gss -; - -65 -_STRUCT_PPC_FLOAT_STATE - - gfs -; - -66 -_STRUCT_PPC_VECTOR_STATE - - gvs -; - -72 #ifdeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -73 #undeŕ -__Ăed_ˇruů_mcÚ‹xt64 - - -74 #iâdeŕ -_STRUCT_MCONTEXT64 - - -75 #iŕ -__DARWIN_UNIX03 - - -76  - #_STRUCT_MCONTEXT64 -  -__d¬wš_mcÚ‹xt64 - - - ) - -77 - g_STRUCT_MCONTEXT64 - - -79 -_STRUCT_PPC_EXCEPTION_STATE64 - - g__es -; - -80 -_STRUCT_PPC_THREAD_STATE64 - - g__ss -; - -81 -_STRUCT_PPC_FLOAT_STATE - - g__fs -; - -82 -_STRUCT_PPC_VECTOR_STATE - - g__vs -; - -85  - #_STRUCT_MCONTEXT64 -  -mcÚ‹xt64 - - - ) - -86 - g_STRUCT_MCONTEXT64 - - -88 -_STRUCT_PPC_EXCEPTION_STATE64 - - ges -; - -89 -_STRUCT_PPC_THREAD_STATE64 - - gss -; - -90 -_STRUCT_PPC_FLOAT_STATE - - gfs -; - -91 -_STRUCT_PPC_VECTOR_STATE - - gvs -; - -97 #ifdeŕ -__Ăed_mcÚ‹xt_t - - -98 #undeŕ -__Ăed_mcÚ‹xt_t - - -99 #iâdeŕ -_MCONTEXT_T - - -100  - #_MCONTEXT_T - - - ) - -101  -_STRUCT_MCONTEXT - * - tmcÚ‹xt_t -; - -105 #ifdeŕ -__Ăed_mcÚ‹xt64_t - - -106 #undeŕ -__Ăed_mcÚ‹xt64_t - - -107 #iâdeŕ -_MCONTEXT64_T - - -108  - #_MCONTEXT64_T - - - ) - -109  -_STRUCT_MCONTEXT64 - * - tmcÚ‹xt64_t -; - -113 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -114 #iâdeŕ -PPC_MCONTEXT_SIZE - - -115  - #PPC_MCONTEXT_SIZE - ( -PPC_THREAD_STATE_COUNT - + -PPC_FLOAT_STATE_COUNT - + -PPC_EXCEPTION_STATE_COUNT - + -PPC_VECTOR_STATE_COUNT -č* () - - ) - -117 #iâdeŕ -PPC_MCONTEXT64_SIZE - - -118  - #PPC_MCONTEXT64_SIZE - ( -PPC_THREAD_STATE64_COUNT - + -PPC_FLOAT_STATE_COUNT - + -PPC_EXCEPTION_STATE_COUNT - + -PPC_VECTOR_STATE_COUNT -č* () - - ) - -126 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt - - -127 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt - - -128 #iâdeŕ -_STRUCT_SIGCONTEXT - - -129 #iŕ -__DARWIN_UNIX03 - - -130  - #_STRUCT_SIGCONTEXT -  -__d¬wš_sigcÚ‹xt - - - ) - -131 - g_STRUCT_SIGCONTEXT - - -133  - g__sc_Úˇack -; - -134  - g__sc_mask -; - -135  - g__sc_ś -; - -136  - g__sc_psw -; - -137  - g__sc_Ą -; - -138 * - g__sc_»gs -; - -141  - #_STRUCT_SIGCONTEXT -  -sigcÚ‹xt - - - ) - -142 - g_STRUCT_SIGCONTEXT - - -144  - gsc_Úˇack -; - -145  - gsc_mask -; - -146  - gsc_ś -; - -147  - gsc_psw -; - -148  - gsc_Ą -; - -149 * - gsc_»gs -; - -162 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt32 - - -163 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt32 - - -164 #iâdeŕ -_STRUCT_SIGCONTEXT32 - - -165 #iŕ -__DARWIN_UNIX03 - - -166  - #_STRUCT_SIGCONTEXT32 -  -__d¬wš_sigcÚ‹xt32 - - - ) - -167 - g_STRUCT_SIGCONTEXT32 - - -169  - g__sc_Úˇack -; - -170  - g__sc_mask -; - -171  - g__sc_ś -; - -172  - g__sc_psw -; - -173  - g__sc_Ą -; - -174 * - g__sc_»gs -; - -177  - #_STRUCT_SIGCONTEXT32 -  -sigcÚ‹xt32 - - - ) - -178 - g_STRUCT_SIGCONTEXT32 - - -180  - gsc_Úˇack -; - -181  - gsc_mask -; - -182  - gsc_ś -; - -183  - gsc_psw -; - -184  - gsc_Ą -; - -185 * - gsc_»gs -; - -191 #ifdeŕ -__Ăed_ˇruů_sigcÚ‹xt64 - - -192 #undeŕ -__Ăed_ˇruů_sigcÚ‹xt64 - - -193 #iâdeŕ -_STRUCT_SIGCONTEXT64 - - -194 #iŕ -__DARWIN_UNIX03 - - -195  - #_STRUCT_SIGCONTEXT64 -  -__d¬wš_sigcÚ‹xt64 - - - ) - -196 - g_STRUCT_SIGCONTEXT64 - - -198  - g__sc_Úˇack -; - -199  - g__sc_mask -; - -200  - g__sc_ś -; - -201  - g__sc_psw -; - -202  - g__sc_Ą -; - -203 * - g__sc_»gs -; - -206  - #_STRUCT_SIGCONTEXT64 -  -sigcÚ‹xt64 - - - ) - -207 - g_STRUCT_SIGCONTEXT64 - - -209  - gsc_Úˇack -; - -210  - gsc_mask -; - -211  - gsc_ś -; - -212  - gsc_psw -; - -213  - gsc_Ą -; - -214 * - gsc_»gs -; - - @/usr/include/ppc/_types.h - -28 #iâdef -_BSD_PPC__TYPES_H_ - - -29  - #_BSD_PPC__TYPES_H_ - - - ) - -36 #ifdeŕ -__GNUC__ - - -37  -__sigĂd -  - t__št8_t -; - -39  - t__št8_t -; - -41  - t__ušt8_t -; - -42  - t__št16_t -; - -43  - t__ušt16_t -; - -44  - t__št32_t -; - -45  - t__ušt32_t -; - -46  - t__št64_t -; - -47  - t__ušt64_t -; - -49  - t__d¬wš_šŤŚ_t -; - -50  - t__d¬wš_Çtużl_t -; - -70  - t__d¬wš_ů_ruĂ_t -; - -77  - m__mbˇ©e8 -[128]; - -78  - m_mbˇ©eL -; - -79 } - t__mbˇ©e_t -; - -81  -__mbˇ©e_t - - t__d¬wš_mbˇ©e_t -; - -83 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__PTRDIFF_TYPE__ -) - -84  -__PTRDIFF_TYPE__ - - t__d¬wš_±rdiff_t -; - -86  - t__d¬wš_±rdiff_t -; - -89 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__SIZE_TYPE__ -) - -90  -__SIZE_TYPE__ - - t__d¬wš_size_t -; - -92  - t__d¬wš_size_t -; - -95 #iŕ( -__GNUC__ - > 2) - -96  -__bužtš_va_liˇ - - t__d¬wš_va_liˇ -; - -98 * - t__d¬wš_va_liˇ -; - -101 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WCHAR_TYPE__ -) - -102  -__WCHAR_TYPE__ - - t__d¬wš_wch¬_t -; - -104  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wch¬_t -; - -107  -__d¬wš_wch¬_t - - t__d¬wš_ruĂ_t -; - -109 #iŕ -defšed -( -__GNUC__ -č&& defšed( -__WINT_TYPE__ -) - -110  -__WINT_TYPE__ - - t__d¬wš_wšt_t -; - -112  -__d¬wš_ů_ruĂ_t - - t__d¬wš_wšt_t -; - -115  - t__d¬wš_ţock_t -; - -116  -__ušt32_t - - t__d¬wš_sockËn_t -; - -117  - t__d¬wš_ssize_t -; - -118  - t__d¬wš_time_t -; - - @/usr/include/sys/_endian.h - -90 #iâdeŕ -_SYS__ENDIAN_H_ - - -91  - #_SYS__ENDIAN_H_ - - - ) - -93  - ~ - -99 #iŕ -defšed -( -lšt -) - -101 -__BEGIN_DECLS - - -102 -__ušt16_t - -Áohs -(__uint16_t); - -103 -__ušt16_t - -htÚs -(__uint16_t); - -104 -__ušt32_t - -Áohl -(__uint32_t); - -105 -__ušt32_t - -htÚl -(__uint32_t); - -106 - g__END_DECLS - - -108 #–iŕ -__DARWIN_BYTE_ORDER - =đ -__DARWIN_BIG_ENDIAN - - -110  - #Áohl -( -x -č(x) - - ) - -111  - #Áohs -( -x -č(x) - - ) - -112  - #htÚl -( -x -č(x) - - ) - -113  - #htÚs -( -x -č(x) - - ) - -115 #iŕ -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -116  - #NTOHL -( -x -č(x) - - ) - -117  - #NTOHS -( -x -č(x) - - ) - -118  - #HTONL -( -x -č(x) - - ) - -119  - #HTONS -( -x -č(x) - - ) - -124  - ~ - -126  - #Áohs -( -x -č - `__DARWIN_OSSw­IÁ16 -(x) - - ) - -127  - #htÚs -( -x -č - `__DARWIN_OSSw­IÁ16 -(x) - - ) - -129  - #Áohl -( -x -č - `__DARWIN_OSSw­IÁ32 -(x) - - ) - -130  - #htÚl -( -x -č - `__DARWIN_OSSw­IÁ32 -(x) - - ) - -132 #if -defšed -( -KERNEL -č|| (!defšed( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -)) - -133  - #NTOHL -( -x -č(xčđ - `Áohl -(( -__ušt32_t -)x) - - ) - -134  - #NTOHS -( -x -č(xčđ - `Áohs -(( -__ušt16_t -)x) - - ) - -135  - #HTONL -( -x -č(xčđ - `htÚl -(( -__ušt32_t -)x) - - ) - -136  - #HTONS -( -x -č(xčđ - `htÚs -(( -__ušt16_t -)x) - - ) - - @/usr/include/i386/signal.h - -33 #iâdef -_I386_SIGNAL_H_ - - -34  - #_I386_SIGNAL_H_ - 1 - - ) - -36  - ~ - -38 #iâdeŕ -_ANSI_SOURCE - - -39  - tsig_©omic_t -; - -41 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -43  - ~ - -45 #ifdeŕ -__APPLE_API_OBSOLETE - - -54  - #__Ăed_ˇruů_sigcÚ‹xt - - - ) - -55  - ~ - - @/usr/include/libkern/_OSByteOrder.h - -29 #iâdeŕ -_OS__OSBYTEORDER_H - - -30  - #_OS__OSBYTEORDER_H - - - ) - -40  - ~ - -43  - #__DARWIN_OSSw­CÚˇIÁ16 -( -x -) \ - -44 (( -__ušt16_t -)((((__ušt16_t)( -x -) & 0xff00) >> 8) | \ - -45 ((( -__ušt16_t -)( -x -č& 0x00ffč<< 8))) - - ) - -47  - #__DARWIN_OSSw­CÚˇIÁ32 -( -x -) \ - -48 (( -__ušt32_t -)((((__ušt32_t)( -x -) & 0xff000000) >> 24) | \ - -49 ((( -__ušt32_t -)( -x -) & 0x00ff0000) >> 8) | \ - -50 ((( -__ušt32_t -)( -x -) & 0x0000ff00) << 8) | \ - -51 ((( -__ušt32_t -)( -x -č& 0x000000ffč<< 24))) - - ) - -53  - #__DARWIN_OSSw­CÚˇIÁ64 -( -x -) \ - -54 (( -__ušt64_t -)((((__ušt64_t)( -x -) & 0xff00000000000000ULL) >> 56) | \ - -55 ((( -__ušt64_t -)( -x -) & 0x00ff000000000000ULL) >> 40) | \ - -56 ((( -__ušt64_t -)( -x -) & 0x0000ff0000000000ULL) >> 24) | \ - -57 ((( -__ušt64_t -)( -x -) & 0x000000ff00000000ULL) >> 8) | \ - -58 ((( -__ušt64_t -)( -x -) & 0x00000000ff000000ULL) << 8) | \ - -59 ((( -__ušt64_t -)( -x -) & 0x0000000000ff0000ULL) << 24) | \ - -60 ((( -__ušt64_t -)( -x -) & 0x000000000000ff00ULL) << 40) | \ - -61 ((( -__ušt64_t -)( -x -č& 0x00000000000000ffULLč<< 56))) - - ) - -63 #iŕ -defšed -( -__GNUC__ -) - -65 #iŕ -defšed -( -__i386__ -č|| defšed( -__x86_64__ -) - -66  - ~ - -69 #iŕ -defšed -( -__¬m__ -) - -70  - ~ - -74  - #__DARWIN_OSSw­IÁ16 -( -x -) \ - -75 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ16 -(xč: - `_OSSw­IÁ16 -(x)) - - ) - -77  - #__DARWIN_OSSw­IÁ32 -( -x -) \ - -78 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ32 -(xč: - `_OSSw­IÁ32 -(x)) - - ) - -80  - #__DARWIN_OSSw­IÁ64 -( -x -) \ - -81 ( - `__bužtš_cÚˇŞt_p -( -x -č? - `__DARWIN_OSSw­CÚˇIÁ64 -(xč: - `_OSSw­IÁ64 -(x)) - - ) - -85 #iŕ -defšed -( -__i386__ -č|| defšed( -__x86_64__ -) - -87 #iŕ! -defšed -( -__DARWIN_OS_INLINE -) - -88 #iŕ -defšed -( -__STDC_VERSION__ -) && __STDC_VERSION__ >= 199901L - -89  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -90 #–iŕ -defšed -( -__MWERKS__ -č|| defšed( -__ýluĄlus -) - -91  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -93  - #__DARWIN_OS_INLINE -  -__šlše__ - - - ) - -97 -__DARWIN_OS_INLINE - - -98 -ušt16_t - - -99 - $_OSSw­IÁ16 -( - -100 -ušt16_t - -d©a - - -103  - `__DARWIN_OSSw­CÚˇIÁ16 -( -d©a -); - -104 - } -} - -106 -__DARWIN_OS_INLINE - - -107 -ušt32_t - - -108 - $_OSSw­IÁ32 -( - -109 -ušt32_t - -d©a - - -112  - `__DARWIN_OSSw­CÚˇIÁ32 -( -d©a -); - -113 - } -} - -115 -__DARWIN_OS_INLINE - - -116 -ušt64_t - - -117 - $_OSSw­IÁ64 -( - -118 -ušt64_t - -d©a - - -121  - `__DARWIN_OSSw­CÚˇIÁ64 -( -d©a -); - -122 - } -} - -125  - #__DARWIN_OSSw­IÁ16 -( -x -č - `_OSSw­IÁ16 -(x) - - ) - -127  - #__DARWIN_OSSw­IÁ32 -( -x -č - `_OSSw­IÁ32 -(x) - - ) - -129  - #__DARWIN_OSSw­IÁ64 -( -x -č - `_OSSw­IÁ64 -(x) - - ) - - @/usr/include/mach/i386/_structs.h - -32 #iâdef -_MACH_I386__STRUCTS_H_ - - -33  - #_MACH_I386__STRUCTS_H_ - - - ) - -41 #iŕ -__DARWIN_UNIX03 - - -42  - #_STRUCT_X86_THREAD_STATE32 -  -__d¬wš_i386_th»ad_ˇ©e - - - ) - -43 - g_STRUCT_X86_THREAD_STATE32 - - -45  - g__—x -; - -46  - g__ebx -; - -47  - g__ecx -; - -48  - g__edx -; - -49  - g__edi -; - -50  - g__esi -; - -51  - g__ebp -; - -52  - g__eĄ -; - -53  - g__ss -; - -54  - g__ećags -; - -55  - g__eť -; - -56  - g__cs -; - -57  - g__ds -; - -58  - g__es -; - -59  - g__fs -; - -60  - g__gs -; - -63  - #_STRUCT_X86_THREAD_STATE32 -  -i386_th»ad_ˇ©e - - - ) - -64 - g_STRUCT_X86_THREAD_STATE32 - - -66  - g—x -; - -67  - gebx -; - -68  - gecx -; - -69  - gedx -; - -70  - gedi -; - -71  - gesi -; - -72  - gebp -; - -73  - geĄ -; - -74  - gss -; - -75  - gećags -; - -76  - geť -; - -77  - gcs -; - -78  - gds -; - -79  - ges -; - -80  - gfs -; - -81  - ggs -; - -87 #iŕ -__DARWIN_UNIX03 - - -88  - #_STRUCT_FP_CONTROL -  -__d¬wš_ĺ_cÚŚŢ - - - ) - -89 - g_STRUCT_FP_CONTROL - - -91  - g__šv®id - :1, - -92 - g__d’Üm - :1, - -93 - g__zdiv - :1, - -94 - g__ovrć - :1, - -95 - g__undć - :1, - -96 - g__´ecis - :1, - -98 - g__pc - :2, - -99 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -100  - #FP_PREC_24B - 0 - - ) - -101  - #FP_PREC_53B - 2 - - ) - -102  - #FP_PREC_64B - 3 - - ) - -104 - g__rc - :2, - -105 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -106  - #FP_RND_NEAR - 0 - - ) - -107  - #FP_RND_DOWN - 1 - - ) - -108  - #FP_RND_UP - 2 - - ) - -109  - #FP_CHOP - 3 - - ) - -114  -_STRUCT_FP_CONTROL - - t__d¬wš_ĺ_cÚŚŢ_t -; - -116  - #_STRUCT_FP_CONTROL -  -ĺ_cÚŚŢ - - - ) - -117 - g_STRUCT_FP_CONTROL - - -119  - gšv®id - :1, - -120 - gd’Üm - :1, - -121 - gzdiv - :1, - -122 - govrć - :1, - -123 - gundć - :1, - -124 - g´ecis - :1, - -126 - gpc - :2, - -127  - #FP_PREC_24B - 0 - - ) - -128  - #FP_PREC_53B - 2 - - ) - -129  - #FP_PREC_64B - 3 - - ) - -130 - grc - :2, - -131  - #FP_RND_NEAR - 0 - - ) - -132  - #FP_RND_DOWN - 1 - - ) - -133  - #FP_RND_UP - 2 - - ) - -134  - #FP_CHOP - 3 - - ) - -138  -_STRUCT_FP_CONTROL - - tĺ_cÚŚŢ_t -; - -145 #iŕ -__DARWIN_UNIX03 - - -146  - #_STRUCT_FP_STATUS -  -__d¬wš_ĺ_ˇ©us - - - ) - -147 - g_STRUCT_FP_STATUS - - -149  - g__šv®id - :1, - -150 - g__d’Üm - :1, - -151 - g__zdiv - :1, - -152 - g__ovrć - :1, - -153 - g__undć - :1, - -154 - g__´ecis - :1, - -155 - g__ˇkćt - :1, - -156 - g__”rsumm - :1, - -157 - g__c0 - :1, - -158 - g__c1 - :1, - -159 - g__c2 - :1, - -160 - g__tos - :3, - -161 - g__c3 - :1, - -162 - g__busy - :1; - -164  -_STRUCT_FP_STATUS - - t__d¬wš_ĺ_ˇ©us_t -; - -166  - #_STRUCT_FP_STATUS -  -ĺ_ˇ©us - - - ) - -167 - g_STRUCT_FP_STATUS - - -169  - gšv®id - :1, - -170 - gd’Üm - :1, - -171 - gzdiv - :1, - -172 - govrć - :1, - -173 - gundć - :1, - -174 - g´ecis - :1, - -175 - gˇkćt - :1, - -176 - g”rsumm - :1, - -177 - gc0 - :1, - -178 - gc1 - :1, - -179 - gc2 - :1, - -180 - gtos - :3, - -181 - gc3 - :1, - -182 - gbusy - :1; - -184  -_STRUCT_FP_STATUS - - tĺ_ˇ©us_t -; - -189 #iŕ -__DARWIN_UNIX03 - - -190  - #_STRUCT_MMST_REG -  -__d¬wš_mmˇ_»g - - - ) - -191 - g_STRUCT_MMST_REG - - -193  - g__mmˇ_»g -[10]; - -194  - g__mmˇ_r¤v -[6]; - -197  - #_STRUCT_MMST_REG -  -mmˇ_»g - - - ) - -198 - g_STRUCT_MMST_REG - - -200  - gmmˇ_»g -[10]; - -201  - gmmˇ_r¤v -[6]; - -208 #iŕ -__DARWIN_UNIX03 - - -209  - #_STRUCT_XMM_REG -  -__d¬wš_xmm_»g - - - ) - -210 - g_STRUCT_XMM_REG - - -212  - g__xmm_»g -[16]; - -215  - #_STRUCT_XMM_REG -  -xmm_»g - - - ) - -216 - g_STRUCT_XMM_REG - - -218  - gxmm_»g -[16]; - -226 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -227  - #FP_STATE_BYTES - 512 - - ) - -230 #iŕ -__DARWIN_UNIX03 - - -231  - #_STRUCT_X86_FLOAT_STATE32 -  -__d¬wš_i386_ćßt_ˇ©e - - - ) - -232 - g_STRUCT_X86_FLOAT_STATE32 - - -234  - g__ĺu_»Łrved -[2]; - -235 -_STRUCT_FP_CONTROL - - g__ĺu_fcw -; - -236 -_STRUCT_FP_STATUS - - g__ĺu_fsw -; - -237 -__ušt8_t - - g__ĺu_áw -; - -238 -__ušt8_t - - g__ĺu_r¤v1 -; - -239 -__ušt16_t - - g__ĺu_fÝ -; - -240 -__ušt32_t - - g__ĺu_ť -; - -241 -__ušt16_t - - g__ĺu_cs -; - -242 -__ušt16_t - - g__ĺu_r¤v2 -; - -243 -__ušt32_t - - g__ĺu_dp -; - -244 -__ušt16_t - - g__ĺu_ds -; - -245 -__ušt16_t - - g__ĺu_r¤v3 -; - -246 -__ušt32_t - - g__ĺu_mxc¤ -; - -247 -__ušt32_t - - g__ĺu_mxc¤mask -; - -248 -_STRUCT_MMST_REG - - g__ĺu_ˇmm0 -; - -249 -_STRUCT_MMST_REG - - g__ĺu_ˇmm1 -; - -250 -_STRUCT_MMST_REG - - g__ĺu_ˇmm2 -; - -251 -_STRUCT_MMST_REG - - g__ĺu_ˇmm3 -; - -252 -_STRUCT_MMST_REG - - g__ĺu_ˇmm4 -; - -253 -_STRUCT_MMST_REG - - g__ĺu_ˇmm5 -; - -254 -_STRUCT_MMST_REG - - g__ĺu_ˇmm6 -; - -255 -_STRUCT_MMST_REG - - g__ĺu_ˇmm7 -; - -256 -_STRUCT_XMM_REG - - g__ĺu_xmm0 -; - -257 -_STRUCT_XMM_REG - - g__ĺu_xmm1 -; - -258 -_STRUCT_XMM_REG - - g__ĺu_xmm2 -; - -259 -_STRUCT_XMM_REG - - g__ĺu_xmm3 -; - -260 -_STRUCT_XMM_REG - - g__ĺu_xmm4 -; - -261 -_STRUCT_XMM_REG - - g__ĺu_xmm5 -; - -262 -_STRUCT_XMM_REG - - g__ĺu_xmm6 -; - -263 -_STRUCT_XMM_REG - - g__ĺu_xmm7 -; - -264  - g__ĺu_r¤v4 -[14*16]; - -265  - g__ĺu_»Łrved1 -; - -268  - #_STRUCT_X86_FLOAT_STATE32 -  -i386_ćßt_ˇ©e - - - ) - -269 - g_STRUCT_X86_FLOAT_STATE32 - - -271  - gĺu_»Łrved -[2]; - -272 -_STRUCT_FP_CONTROL - - gĺu_fcw -; - -273 -_STRUCT_FP_STATUS - - gĺu_fsw -; - -274 -__ušt8_t - - gĺu_áw -; - -275 -__ušt8_t - - gĺu_r¤v1 -; - -276 -__ušt16_t - - gĺu_fÝ -; - -277 -__ušt32_t - - gĺu_ť -; - -278 -__ušt16_t - - gĺu_cs -; - -279 -__ušt16_t - - gĺu_r¤v2 -; - -280 -__ušt32_t - - gĺu_dp -; - -281 -__ušt16_t - - gĺu_ds -; - -282 -__ušt16_t - - gĺu_r¤v3 -; - -283 -__ušt32_t - - gĺu_mxc¤ -; - -284 -__ušt32_t - - gĺu_mxc¤mask -; - -285 -_STRUCT_MMST_REG - - gĺu_ˇmm0 -; - -286 -_STRUCT_MMST_REG - - gĺu_ˇmm1 -; - -287 -_STRUCT_MMST_REG - - gĺu_ˇmm2 -; - -288 -_STRUCT_MMST_REG - - gĺu_ˇmm3 -; - -289 -_STRUCT_MMST_REG - - gĺu_ˇmm4 -; - -290 -_STRUCT_MMST_REG - - gĺu_ˇmm5 -; - -291 -_STRUCT_MMST_REG - - gĺu_ˇmm6 -; - -292 -_STRUCT_MMST_REG - - gĺu_ˇmm7 -; - -293 -_STRUCT_XMM_REG - - gĺu_xmm0 -; - -294 -_STRUCT_XMM_REG - - gĺu_xmm1 -; - -295 -_STRUCT_XMM_REG - - gĺu_xmm2 -; - -296 -_STRUCT_XMM_REG - - gĺu_xmm3 -; - -297 -_STRUCT_XMM_REG - - gĺu_xmm4 -; - -298 -_STRUCT_XMM_REG - - gĺu_xmm5 -; - -299 -_STRUCT_XMM_REG - - gĺu_xmm6 -; - -300 -_STRUCT_XMM_REG - - gĺu_xmm7 -; - -301  - gĺu_r¤v4 -[14*16]; - -302  - gĺu_»Łrved1 -; - -306 #iŕ -__DARWIN_UNIX03 - - -307  - #_STRUCT_X86_EXCEPTION_STATE32 -  -__d¬wš_i386_exű±iÚ_ˇ©e - - - ) - -308 - g_STRUCT_X86_EXCEPTION_STATE32 - - -310  - g__Ś­no -; - -311  - g__”r -; - -312  - g__çuÉvaddr -; - -315  - #_STRUCT_X86_EXCEPTION_STATE32 -  -i386_exű±iÚ_ˇ©e - - - ) - -316 - g_STRUCT_X86_EXCEPTION_STATE32 - - -318  - gŚ­no -; - -319  - g”r -; - -320  - gçuÉvaddr -; - -324 #iŕ -__DARWIN_UNIX03 - - -325  - #_STRUCT_X86_DEBUG_STATE32 -  -__d¬wš_x86_debug_ˇ©e32 - - - ) - -326 - g_STRUCT_X86_DEBUG_STATE32 - - -328  - g__dr0 -; - -329  - g__dr1 -; - -330  - g__dr2 -; - -331  - g__dr3 -; - -332  - g__dr4 -; - -333  - g__dr5 -; - -334  - g__dr6 -; - -335  - g__dr7 -; - -338  - #_STRUCT_X86_DEBUG_STATE32 -  -x86_debug_ˇ©e32 - - - ) - -339 - g_STRUCT_X86_DEBUG_STATE32 - - -341  - gdr0 -; - -342  - gdr1 -; - -343  - gdr2 -; - -344  - gdr3 -; - -345  - gdr4 -; - -346  - gdr5 -; - -347  - gdr6 -; - -348  - gdr7 -; - -356 #iŕ -__DARWIN_UNIX03 - - -357  - #_STRUCT_X86_THREAD_STATE64 -  -__d¬wš_x86_th»ad_ˇ©e64 - - - ) - -358 - g_STRUCT_X86_THREAD_STATE64 - - -360 -__ušt64_t - - g__żx -; - -361 -__ušt64_t - - g__rbx -; - -362 -__ušt64_t - - g__rcx -; - -363 -__ušt64_t - - g__rdx -; - -364 -__ušt64_t - - g__rdi -; - -365 -__ušt64_t - - g__rsi -; - -366 -__ušt64_t - - g__rbp -; - -367 -__ušt64_t - - g__rĄ -; - -368 -__ušt64_t - - g__r8 -; - -369 -__ušt64_t - - g__r9 -; - -370 -__ušt64_t - - g__r10 -; - -371 -__ušt64_t - - g__r11 -; - -372 -__ušt64_t - - g__r12 -; - -373 -__ušt64_t - - g__r13 -; - -374 -__ušt64_t - - g__r14 -; - -375 -__ušt64_t - - g__r15 -; - -376 -__ušt64_t - - g__rť -; - -377 -__ušt64_t - - g__rćags -; - -378 -__ušt64_t - - g__cs -; - -379 -__ušt64_t - - g__fs -; - -380 -__ušt64_t - - g__gs -; - -383  - #_STRUCT_X86_THREAD_STATE64 -  -x86_th»ad_ˇ©e64 - - - ) - -384 - g_STRUCT_X86_THREAD_STATE64 - - -386 -__ušt64_t - - gżx -; - -387 -__ušt64_t - - grbx -; - -388 -__ušt64_t - - grcx -; - -389 -__ušt64_t - - grdx -; - -390 -__ušt64_t - - grdi -; - -391 -__ušt64_t - - grsi -; - -392 -__ušt64_t - - grbp -; - -393 -__ušt64_t - - grĄ -; - -394 -__ušt64_t - - gr8 -; - -395 -__ušt64_t - - gr9 -; - -396 -__ušt64_t - - gr10 -; - -397 -__ušt64_t - - gr11 -; - -398 -__ušt64_t - - gr12 -; - -399 -__ušt64_t - - gr13 -; - -400 -__ušt64_t - - gr14 -; - -401 -__ušt64_t - - gr15 -; - -402 -__ušt64_t - - grť -; - -403 -__ušt64_t - - grćags -; - -404 -__ušt64_t - - gcs -; - -405 -__ušt64_t - - gfs -; - -406 -__ušt64_t - - ggs -; - -411 #iŕ -__DARWIN_UNIX03 - - -412  - #_STRUCT_X86_FLOAT_STATE64 -  -__d¬wš_x86_ćßt_ˇ©e64 - - - ) - -413 - g_STRUCT_X86_FLOAT_STATE64 - - -415  - g__ĺu_»Łrved -[2]; - -416 -_STRUCT_FP_CONTROL - - g__ĺu_fcw -; - -417 -_STRUCT_FP_STATUS - - g__ĺu_fsw -; - -418 -__ušt8_t - - g__ĺu_áw -; - -419 -__ušt8_t - - g__ĺu_r¤v1 -; - -420 -__ušt16_t - - g__ĺu_fÝ -; - -423 -__ušt32_t - - g__ĺu_ť -; - -424 -__ušt16_t - - g__ĺu_cs -; - -426 -__ušt16_t - - g__ĺu_r¤v2 -; - -429 -__ušt32_t - - g__ĺu_dp -; - -430 -__ušt16_t - - g__ĺu_ds -; - -432 -__ušt16_t - - g__ĺu_r¤v3 -; - -433 -__ušt32_t - - g__ĺu_mxc¤ -; - -434 -__ušt32_t - - g__ĺu_mxc¤mask -; - -435 -_STRUCT_MMST_REG - - g__ĺu_ˇmm0 -; - -436 -_STRUCT_MMST_REG - - g__ĺu_ˇmm1 -; - -437 -_STRUCT_MMST_REG - - g__ĺu_ˇmm2 -; - -438 -_STRUCT_MMST_REG - - g__ĺu_ˇmm3 -; - -439 -_STRUCT_MMST_REG - - g__ĺu_ˇmm4 -; - -440 -_STRUCT_MMST_REG - - g__ĺu_ˇmm5 -; - -441 -_STRUCT_MMST_REG - - g__ĺu_ˇmm6 -; - -442 -_STRUCT_MMST_REG - - g__ĺu_ˇmm7 -; - -443 -_STRUCT_XMM_REG - - g__ĺu_xmm0 -; - -444 -_STRUCT_XMM_REG - - g__ĺu_xmm1 -; - -445 -_STRUCT_XMM_REG - - g__ĺu_xmm2 -; - -446 -_STRUCT_XMM_REG - - g__ĺu_xmm3 -; - -447 -_STRUCT_XMM_REG - - g__ĺu_xmm4 -; - -448 -_STRUCT_XMM_REG - - g__ĺu_xmm5 -; - -449 -_STRUCT_XMM_REG - - g__ĺu_xmm6 -; - -450 -_STRUCT_XMM_REG - - g__ĺu_xmm7 -; - -451 -_STRUCT_XMM_REG - - g__ĺu_xmm8 -; - -452 -_STRUCT_XMM_REG - - g__ĺu_xmm9 -; - -453 -_STRUCT_XMM_REG - - g__ĺu_xmm10 -; - -454 -_STRUCT_XMM_REG - - g__ĺu_xmm11 -; - -455 -_STRUCT_XMM_REG - - g__ĺu_xmm12 -; - -456 -_STRUCT_XMM_REG - - g__ĺu_xmm13 -; - -457 -_STRUCT_XMM_REG - - g__ĺu_xmm14 -; - -458 -_STRUCT_XMM_REG - - g__ĺu_xmm15 -; - -459  - g__ĺu_r¤v4 -[6*16]; - -460  - g__ĺu_»Łrved1 -; - -463  - #_STRUCT_X86_FLOAT_STATE64 -  -x86_ćßt_ˇ©e64 - - - ) - -464 - g_STRUCT_X86_FLOAT_STATE64 - - -466  - gĺu_»Łrved -[2]; - -467 -_STRUCT_FP_CONTROL - - gĺu_fcw -; - -468 -_STRUCT_FP_STATUS - - gĺu_fsw -; - -469 -__ušt8_t - - gĺu_áw -; - -470 -__ušt8_t - - gĺu_r¤v1 -; - -471 -__ušt16_t - - gĺu_fÝ -; - -474 -__ušt32_t - - gĺu_ť -; - -475 -__ušt16_t - - gĺu_cs -; - -477 -__ušt16_t - - gĺu_r¤v2 -; - -480 -__ušt32_t - - gĺu_dp -; - -481 -__ušt16_t - - gĺu_ds -; - -483 -__ušt16_t - - gĺu_r¤v3 -; - -484 -__ušt32_t - - gĺu_mxc¤ -; - -485 -__ušt32_t - - gĺu_mxc¤mask -; - -486 -_STRUCT_MMST_REG - - gĺu_ˇmm0 -; - -487 -_STRUCT_MMST_REG - - gĺu_ˇmm1 -; - -488 -_STRUCT_MMST_REG - - gĺu_ˇmm2 -; - -489 -_STRUCT_MMST_REG - - gĺu_ˇmm3 -; - -490 -_STRUCT_MMST_REG - - gĺu_ˇmm4 -; - -491 -_STRUCT_MMST_REG - - gĺu_ˇmm5 -; - -492 -_STRUCT_MMST_REG - - gĺu_ˇmm6 -; - -493 -_STRUCT_MMST_REG - - gĺu_ˇmm7 -; - -494 -_STRUCT_XMM_REG - - gĺu_xmm0 -; - -495 -_STRUCT_XMM_REG - - gĺu_xmm1 -; - -496 -_STRUCT_XMM_REG - - gĺu_xmm2 -; - -497 -_STRUCT_XMM_REG - - gĺu_xmm3 -; - -498 -_STRUCT_XMM_REG - - gĺu_xmm4 -; - -499 -_STRUCT_XMM_REG - - gĺu_xmm5 -; - -500 -_STRUCT_XMM_REG - - gĺu_xmm6 -; - -501 -_STRUCT_XMM_REG - - gĺu_xmm7 -; - -502 -_STRUCT_XMM_REG - - gĺu_xmm8 -; - -503 -_STRUCT_XMM_REG - - gĺu_xmm9 -; - -504 -_STRUCT_XMM_REG - - gĺu_xmm10 -; - -505 -_STRUCT_XMM_REG - - gĺu_xmm11 -; - -506 -_STRUCT_XMM_REG - - gĺu_xmm12 -; - -507 -_STRUCT_XMM_REG - - gĺu_xmm13 -; - -508 -_STRUCT_XMM_REG - - gĺu_xmm14 -; - -509 -_STRUCT_XMM_REG - - gĺu_xmm15 -; - -510  - gĺu_r¤v4 -[6*16]; - -511  - gĺu_»Łrved1 -; - -515 #iŕ -__DARWIN_UNIX03 - - -516  - #_STRUCT_X86_EXCEPTION_STATE64 -  -__d¬wš_x86_exű±iÚ_ˇ©e64 - - - ) - -517 - g_STRUCT_X86_EXCEPTION_STATE64 - - -519  - g__Ś­no -; - -520  - g__”r -; - -521 -__ušt64_t - - g__çuÉvaddr -; - -524  - #_STRUCT_X86_EXCEPTION_STATE64 -  -x86_exű±iÚ_ˇ©e64 - - - ) - -525 - g_STRUCT_X86_EXCEPTION_STATE64 - - -527  - gŚ­no -; - -528  - g”r -; - -529 -__ušt64_t - - gçuÉvaddr -; - -533 #iŕ -__DARWIN_UNIX03 - - -534  - #_STRUCT_X86_DEBUG_STATE64 -  -__d¬wš_x86_debug_ˇ©e64 - - - ) - -535 - g_STRUCT_X86_DEBUG_STATE64 - - -537 -__ušt64_t - - g__dr0 -; - -538 -__ušt64_t - - g__dr1 -; - -539 -__ušt64_t - - g__dr2 -; - -540 -__ušt64_t - - g__dr3 -; - -541 -__ušt64_t - - g__dr4 -; - -542 -__ušt64_t - - g__dr5 -; - -543 -__ušt64_t - - g__dr6 -; - -544 -__ušt64_t - - g__dr7 -; - -547  - #_STRUCT_X86_DEBUG_STATE64 -  -x86_debug_ˇ©e64 - - - ) - -548 - g_STRUCT_X86_DEBUG_STATE64 - - -550 -__ušt64_t - - gdr0 -; - -551 -__ušt64_t - - gdr1 -; - -552 -__ušt64_t - - gdr2 -; - -553 -__ušt64_t - - gdr3 -; - -554 -__ušt64_t - - gdr4 -; - -555 -__ušt64_t - - gdr5 -; - -556 -__ušt64_t - - gdr6 -; - -557 -__ušt64_t - - gdr7 -; - - @/usr/include/mach/ppc/_structs.h - -32 #iâdef -_MACH_PPC__STRUCTS_H_ - - -33  - #_MACH_PPC__STRUCTS_H_ - - - ) - -35  - ~ - -43 #iŕ -__DARWIN_UNIX03 - - -44  - #_STRUCT_PPC_THREAD_STATE -  -__d¬wš_µc_th»ad_ˇ©e - - - ) - -45 - g_STRUCT_PPC_THREAD_STATE - - -47  - g__¤r0 -; - -48  - g__¤r1 -; - -49  - g__r0 -; - -50  - g__r1 -; - -51  - g__r2 -; - -52  - g__r3 -; - -53  - g__r4 -; - -54  - g__r5 -; - -55  - g__r6 -; - -56  - g__r7 -; - -57  - g__r8 -; - -58  - g__r9 -; - -59  - g__r10 -; - -60  - g__r11 -; - -61  - g__r12 -; - -62  - g__r13 -; - -63  - g__r14 -; - -64  - g__r15 -; - -65  - g__r16 -; - -66  - g__r17 -; - -67  - g__r18 -; - -68  - g__r19 -; - -69  - g__r20 -; - -70  - g__r21 -; - -71  - g__r22 -; - -72  - g__r23 -; - -73  - g__r24 -; - -74  - g__r25 -; - -75  - g__r26 -; - -76  - g__r27 -; - -77  - g__r28 -; - -78  - g__r29 -; - -79  - g__r30 -; - -80  - g__r31 -; - -82  - g__ü -; - -83  - g__x” -; - -84  - g__Ě -; - -85  - g__ůr -; - -86  - g__mq -; - -88  - g__vr§ve -; - -91  - #_STRUCT_PPC_THREAD_STATE -  -µc_th»ad_ˇ©e - - - ) - -92 - g_STRUCT_PPC_THREAD_STATE - - -94  - g¤r0 -; - -95  - g¤r1 -; - -96  - gr0 -; - -97  - gr1 -; - -98  - gr2 -; - -99  - gr3 -; - -100  - gr4 -; - -101  - gr5 -; - -102  - gr6 -; - -103  - gr7 -; - -104  - gr8 -; - -105  - gr9 -; - -106  - gr10 -; - -107  - gr11 -; - -108  - gr12 -; - -109  - gr13 -; - -110  - gr14 -; - -111  - gr15 -; - -112  - gr16 -; - -113  - gr17 -; - -114  - gr18 -; - -115  - gr19 -; - -116  - gr20 -; - -117  - gr21 -; - -118  - gr22 -; - -119  - gr23 -; - -120  - gr24 -; - -121  - gr25 -; - -122  - gr26 -; - -123  - gr27 -; - -124  - gr28 -; - -125  - gr29 -; - -126  - gr30 -; - -127  - gr31 -; - -129  - gü -; - -130  - gx” -; - -131  - gĚ -; - -132  - gůr -; - -133  - gmq -; - -135  - gvr§ve -; - -139 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -141 #´agm¨ -·ck -(4) - -143 #iŕ -__DARWIN_UNIX03 - - -144  - #_STRUCT_PPC_THREAD_STATE64 -  -__d¬wš_µc_th»ad_ˇ©e64 - - - ) - -145 - g_STRUCT_PPC_THREAD_STATE64 - - -147  - g__¤r0 -; - -148  - g__¤r1 -; - -149  - g__r0 -; - -150  - g__r1 -; - -151  - g__r2 -; - -152  - g__r3 -; - -153  - g__r4 -; - -154  - g__r5 -; - -155  - g__r6 -; - -156  - g__r7 -; - -157  - g__r8 -; - -158  - g__r9 -; - -159  - g__r10 -; - -160  - g__r11 -; - -161  - g__r12 -; - -162  - g__r13 -; - -163  - g__r14 -; - -164  - g__r15 -; - -165  - g__r16 -; - -166  - g__r17 -; - -167  - g__r18 -; - -168  - g__r19 -; - -169  - g__r20 -; - -170  - g__r21 -; - -171  - g__r22 -; - -172  - g__r23 -; - -173  - g__r24 -; - -174  - g__r25 -; - -175  - g__r26 -; - -176  - g__r27 -; - -177  - g__r28 -; - -178  - g__r29 -; - -179  - g__r30 -; - -180  - g__r31 -; - -182  - g__ü -; - -183  - g__x” -; - -184  - g__Ě -; - -185  - g__ůr -; - -187  - g__vr§ve -; - -190  - #_STRUCT_PPC_THREAD_STATE64 -  -µc_th»ad_ˇ©e64 - - - ) - -191 - g_STRUCT_PPC_THREAD_STATE64 - - -193  - g¤r0 -; - -194  - g¤r1 -; - -195  - gr0 -; - -196  - gr1 -; - -197  - gr2 -; - -198  - gr3 -; - -199  - gr4 -; - -200  - gr5 -; - -201  - gr6 -; - -202  - gr7 -; - -203  - gr8 -; - -204  - gr9 -; - -205  - gr10 -; - -206  - gr11 -; - -207  - gr12 -; - -208  - gr13 -; - -209  - gr14 -; - -210  - gr15 -; - -211  - gr16 -; - -212  - gr17 -; - -213  - gr18 -; - -214  - gr19 -; - -215  - gr20 -; - -216  - gr21 -; - -217  - gr22 -; - -218  - gr23 -; - -219  - gr24 -; - -220  - gr25 -; - -221  - gr26 -; - -222  - gr27 -; - -223  - gr28 -; - -224  - gr29 -; - -225  - gr30 -; - -226  - gr31 -; - -228  - gü -; - -229  - gx” -; - -230  - gĚ -; - -231  - gůr -; - -233  - gvr§ve -; - -237 #´agm¨ -·ck -() - -243 #iŕ -__DARWIN_UNIX03 - - -244  - #_STRUCT_PPC_FLOAT_STATE -  -__d¬wš_µc_ćßt_ˇ©e - - - ) - -245 - g_STRUCT_PPC_FLOAT_STATE - - -247  - g__ĺ»gs -[32]; - -249  - g__ĺsü_·d -; - -250  - g__ĺsü -; - -253  - #_STRUCT_PPC_FLOAT_STATE -  -µc_ćßt_ˇ©e - - - ) - -254 - g_STRUCT_PPC_FLOAT_STATE - - -256  - gĺ»gs -[32]; - -258  - gĺsü_·d -; - -259  - gĺsü -; - -263 #´agm¨ -·ck -(4) - -265 #iŕ -__DARWIN_UNIX03 - - -266  - #_STRUCT_PPC_VECTOR_STATE -  -__d¬wš_µc_veůÜ_ˇ©e - - - ) - -267 - g_STRUCT_PPC_VECTOR_STATE - - -269 #iŕ -defšed -( -__LP64__ -) - -270  - g__§ve_vr -[32][4]; - -271  - g__§ve_vsü -[4]; - -273  - g__§ve_vr -[32][4]; - -274  - g__§ve_vsü -[4]; - -276  - g__§ve_·d5 -[4]; - -277  - g__§ve_vrv®id -; - -278  - g__§ve_·d6 -[7]; - -281  - #_STRUCT_PPC_VECTOR_STATE -  -µc_veůÜ_ˇ©e - - - ) - -282 - g_STRUCT_PPC_VECTOR_STATE - - -284 #iŕ -defšed -( -__LP64__ -) - -285  - g§ve_vr -[32][4]; - -286  - g§ve_vsü -[4]; - -288  - g§ve_vr -[32][4]; - -289  - g§ve_vsü -[4]; - -291  - g§ve_·d5 -[4]; - -292  - g§ve_vrv®id -; - -293  - g§ve_·d6 -[7]; - -297 #´agm¨ -·ck -() - -316 #´agm¨ -·ck -(4) - -318 #iŕ -__DARWIN_UNIX03 - - -319  - #_STRUCT_PPC_EXCEPTION_STATE -  -__d¬wš_µc_exű±iÚ_ˇ©e - - - ) - -320 - g_STRUCT_PPC_EXCEPTION_STATE - - -322 #iŕ -defšed -( -__LP64__ -) - -323  - g__d¬ -; - -324  - g__dsi¤ -; - -325  - g__exű±iÚ -; - -326  - g__·d0 -; - -327  - g__·d1 -[4]; - -329  - g__d¬ -; - -330  - g__dsi¤ -; - -331  - g__exű±iÚ -; - -332  - g__·d0 -; - -333  - g__·d1 -[4]; - -337  - #_STRUCT_PPC_EXCEPTION_STATE -  -µc_exű±iÚ_ˇ©e - - - ) - -338 - g_STRUCT_PPC_EXCEPTION_STATE - - -340 #iŕ -defšed -( -__LP64__ -) - -341  - gd¬ -; - -342  - gdsi¤ -; - -343  - gexű±iÚ -; - -344  - g·d0 -; - -345  - g·d1 -[4]; - -347  - gd¬ -; - -348  - gdsi¤ -; - -349  - gexű±iÚ -; - -350  - g·d0 -; - -351  - g·d1 -[4]; - -356 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -357 #iŕ -__DARWIN_UNIX03 - - -358  - #_STRUCT_PPC_EXCEPTION_STATE64 -  -__d¬wš_µc_exű±iÚ_ˇ©e64 - - - ) - -359 - g_STRUCT_PPC_EXCEPTION_STATE64 - - -361  - g__d¬ -; - -362 #iŕ -defšed -( -__LP64__ -) - -363  - g__dsi¤ -; - -364  - g__exű±iÚ -; - -365  - g__·d1 -[4]; - -367  - g__dsi¤ -; - -368  - g__exű±iÚ -; - -369  - g__·d1 -[4]; - -373  - #_STRUCT_PPC_EXCEPTION_STATE64 -  -µc_exű±iÚ_ˇ©e64 - - - ) - -374 - g_STRUCT_PPC_EXCEPTION_STATE64 - - -376  - gd¬ -; - -377 #iŕ -defšed -( -__LP64__ -) - -378  - gdsi¤ -; - -379  - gexű±iÚ -; - -380  - g·d1 -[4]; - -382  - gdsi¤ -; - -383  - gexű±iÚ -; - -384  - g·d1 -[4]; - -390 #´agm¨ -·ck -() - - @/usr/include/ppc/signal.h - -32 #iâdef -_PPC_SIGNAL_H_ - - -33  - #_PPC_SIGNAL_H_ - 1 - - ) - -35  - ~ - -37 #iâdeŕ -_ANSI_SOURCE - - -39  - tsig_©omic_t -; - -41  - ~ - -43 #ifdeŕ -__APPLE_API_OBSOLETE - - -45 #iŕ! -defšed -( -_POSIX_C_SOURCE -č|| defšed( -_DARWIN_C_SOURCE -) - -47  - #__Ăed_ˇruů_sigcÚ‹xt - - - ) - -48  - #__Ăed_ˇruů_sigcÚ‹xt32 - - - ) - -49  - #__Ăed_ˇruů_sigcÚ‹xt64 - - - ) - -50  - ~<µc/_ˇruůs.h -> - -55  - #SV_SAVE_REGS - 0x1000 - - ) - -69 - mREGS_SAVED_NONE -, - -70 - mREGS_SAVED_CALLER -, - -73 - mREGS_SAVED_ALL - - -74 } - t»gs_§ved_t -; - - @/usr/include/libkern/i386/_OSByteOrder.h - -29 #iâdeŕ -_OS__OSBYTEORDERI386_H - - -30  - #_OS__OSBYTEORDERI386_H - - - ) - -32 #iŕ! -defšed -( -__DARWIN_OS_INLINE -) - -33 #iŕ -defšed -( -__STDC_VERSION__ -) && __STDC_VERSION__ >= 199901L - -34  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -35 #–iŕ -defšed -( -__MWERKS__ -č|| defšed( -__ýluĄlus -) - -36  - #__DARWIN_OS_INLINE -  -šlše - - - ) - -38  - #__DARWIN_OS_INLINE -  -__šlše__ - - - ) - -44 -__DARWIN_OS_INLINE - - -45 -__ušt16_t - - -46 - $_OSSw­IÁ16 -( - -47 -__ušt16_t - -_d©a - - -50  (( -_d©a - << 8) | (_data >> 8)); - -51 - } -} - -53 -__DARWIN_OS_INLINE - - -54 -__ušt32_t - - -55 - $_OSSw­IÁ32 -( - -56 -__ušt32_t - -_d©a - - -59 - `__asm__ - ("bsw­ %0" : "+r" ( -_d©a -)); - -60  -_d©a -; - -61 - } -} - -63 #iŕ -defšed -( -__i386__ -) - -64 -__DARWIN_OS_INLINE - - -65 -__ušt64_t - - -66 - $_OSSw­IÁ64 -( - -67 -__ušt64_t - -_d©a - - -70 - `__asm__ - ("bswap %%eax\n\t" - -73 : "+A" ( -_d©a -)); - -74  -_d©a -; - -75 - } -} - -76 #–iŕ -defšed -( -__x86_64__ -) - -77 -__DARWIN_OS_INLINE - - -78 -__ušt64_t - - -79 - $_OSSw­IÁ64 -( - -80 -__ušt64_t - -_d©a - - -83 - `__asm__ - ("bsw­ %0" : "+r" ( -_d©a -)); - -84  -_d©a -; - -85 - } -} - -87 #”rÜ -Unknown - -¬ch™eůu» - - - @ -1 -. -1 -/usr/include -80 -1708 -lib.c -lib.h -lnode.c -lnode.h -main.c -ncache.c -ncache.h -netfs.c -node.c -node.h -options.c -options.h -pattern.c -pattern.h -stow-mutations.h -stow-priv.h -stow.c -stow.h -ulfs.c -ulfs.h -unionfs.h -update.c -update.h -version.h -/usr/include/assert.h -/usr/include/dirent.h -/usr/include/errno.h -/usr/include/fcntl.h -/usr/include/fnmatch.h -/usr/include/stddef.h -/usr/include/stdio.h -/usr/include/stdlib.h -/usr/include/string.h -/usr/include/sys/mman.h -/usr/include/sys/stat.h -/usr/include/sys/types.h -/usr/include/unistd.h -/usr/include/_types.h -/usr/include/_xlocale.h -/usr/include/alloca.h -/usr/include/available.h -/usr/include/machine/endian.h -/usr/include/machine/types.h -/usr/include/secure/_stdio.h -/usr/include/secure/_string.h -/usr/include/sys/_structs.h -/usr/include/sys/_types.h -/usr/include/sys/appleapiopts.h -/usr/include/sys/cdefs.h -/usr/include/sys/dirent.h -/usr/include/sys/errno.h -/usr/include/sys/fcntl.h -/usr/include/sys/select.h -/usr/include/sys/unistd.h -/usr/include/sys/wait.h -/usr/include/xlocale/_stdio.h -/usr/include/xlocale/_stdlib.h -/usr/include/xlocale/_string.h -/usr/include/i386/endian.h -/usr/include/i386/types.h -/usr/include/machine/_structs.h -/usr/include/machine/_types.h -/usr/include/ppc/endian.h -/usr/include/ppc/types.h -/usr/include/secure/_common.h -/usr/include/sys/_select.h -/usr/include/sys/resource.h -/usr/include/sys/signal.h -/usr/include/i386/_structs.h -/usr/include/i386/_types.h -/usr/include/machine/signal.h -/usr/include/ppc/_structs.h -/usr/include/ppc/_types.h -/usr/include/sys/_endian.h -/usr/include/i386/signal.h -/usr/include/libkern/_OSByteOrder.h -/usr/include/mach/i386/_structs.h -/usr/include/mach/ppc/_structs.h -/usr/include/ppc/signal.h -/usr/include/libkern/i386/_OSByteOrder.h -- cgit v1.2.3