From 97c052ffa40ad4b7b616d3b72fed16183316224e Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Tue, 8 Feb 1994 17:59:43 +0000 Subject: Initial revision --- libdiskfs/init-first.c | 27 +++++++++++++++++++++ libdiskfs/init-init.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ libdiskfs/init-loop.c | 26 ++++++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 libdiskfs/init-first.c create mode 100644 libdiskfs/init-init.c create mode 100644 libdiskfs/init-loop.c (limited to 'libdiskfs') diff --git a/libdiskfs/init-first.c b/libdiskfs/init-first.c new file mode 100644 index 00000000..985d4513 --- /dev/null +++ b/libdiskfs/init-first.c @@ -0,0 +1,27 @@ +/* + Copyright (C) 1994 Free Software Foundation + +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. */ + +void +diskfs_spawn_first_thread (void) +{ + cthread_detach (cthread_fork ((cthread_fn_t) ports_manage_port_operations, + (any_t) 0)); +} diff --git a/libdiskfs/init-init.c b/libdiskfs/init-init.c new file mode 100644 index 00000000..cae96a10 --- /dev/null +++ b/libdiskfs/init-init.c @@ -0,0 +1,64 @@ +/* + Copyright (C) 1994 Free Software Foundation + +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. */ + +/* Call this after arguments have been parsed to initialize the + library. */ +void +diskfs_init_diskfs (void) +{ + mach_port_t host, dev; + memory_object_t obj; + device_t dev; + + _libports_initialize (); /* XXX */ + + if (diskfs_host_priv == MACH_PORT_NULL + || diskfs_master_device == MACH_PORT_NULL) + { + get_privileged_ports (&host, &dev); + if (diskfs_host_priv == MACH_PORT_NULL) + diskfs_host_priv = host; + else + mach_port_deallocate (mach_task_self (), host); + if (diskfs_master_device == MACH_PORT_NULL) + diskfs_master_device = dev; + else + mach_port_deallocate (mach_task_self (), dev); + } + + assert (diskfs_host_priv != MACH_PORT_NULL); /* XXX */ + assert (diskfs_master_device != MACH_PORT_NULL); /* XXX */ + + diskfs_control_port = + ((struct port_info *)ports_allocate_port(sizeof (struct port_info), + PT_CTL))->port; + + diskfs_default_pager = MACH_PORT_NULL; + vm_set_default_memory_manager (diskfs_host_priv, &diskfs_default_pager); + + device_open (diskfs_master_device, 0, "time", &dev); + device_map (dev, VM_PROT_READ, 0, sizeof (mapped_time_value_t), &obj, 0); + vm_map (mach_task_self (), (vm_address_t *)diskfs_mtime, + sizeof (mapped_time_value_t), 0, 1, obj, 0, 0, VM_PROT_READ, + VM_PROT_READ, VM_INHERIT_NONE); + mach_port_deallocate (mach_task_self (), dev); + mach_port_deallocate (mach_task_self (), obj); +} diff --git a/libdiskfs/init-loop.c b/libdiskfs/init-loop.c new file mode 100644 index 00000000..8786307a --- /dev/null +++ b/libdiskfs/init-loop.c @@ -0,0 +1,26 @@ +/* + Copyright (C) 1994 Free Software Foundation + +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. */ + +void +diskfs_main_request_loop (void) +{ + ports_manage_port_operations (); +} -- cgit v1.2.3