Age | Commit message (Collapse) | Author |
|
The 'identity' translator is the simplest possible translator. It
computes the identity function of Hurdish RPC translations.
* trans/Makefile: Add new files.
* trans/chroot.c: New file.
* trans/chroot.h: Likewise.
* trans/identity.c: Likewise.
|
|
* libps/spec.c (ps_cmp_times): Actually compare tv_usec fields of tv1
and tv2.
|
|
* hurd/hurd_types.h: Document the magic retry string `pid'.
* hurd/paths.h (_HURD_MAGIC): New macro.
* procfs/main.c: Remove all code related to faking /proc/self.
* procfs/main.h: Likewise.
* procfs/rootdir.c: Likewise. Instead, return the magic retry
response `pid' for the `self' node.
|
|
* configure.ac (AC_INIT): Set version to 0.9.
* NEWS: Finalize for 0.9.
|
|
..., so that the correct things get done for "make dist".
* ChangeLog: Elaborate on "random".
* Makefile (gitlog-to-changelog_rev, ChangeLog_specs): Add entries
for "random".
(gen-ChangeLog): Handle that.
|
|
..., so that the correct things get done for "make dist".
* procfs/ChangeLog: Merge file into...
* ChangeLog: ... this one, and elaborate some more.
* Makefile (gen_start_commit, ChangeLog_files): Merge into...
(ChangeLog_specs): ... this new variable.
(ChangeLog_files): Rewrite in terms of that one.
(gitlog-to-changelog_rev, ChangeLog_specs): Add entries for
"procfs".
(gen-ChangeLog): Handle that.
|
|
|
|
|
|
|
|
* libpager/stubs.c (_pager_S_memory_object_data_write): Drop stub.
* mach-defpager/default_pager.c (seqnos_memory_object_data_write):
Drop function.
|
|
class is a reserved keyword, event when imported inside extern "C" { }
* libports/ports.h (port_info) [__cplusplus]: Rename `class' field to
`port_class'.
(ports_create_port, ports_create_port_noinstall, ports_import_port,
ports_lookup_port, ports_lookup_payload, ports_count_class,
ports_enable_class, ports_class_iterate, _ports_bucket_class_iterate,
ports_inhibit_class_rpcs, ports_resume_class_rpcs): Rename `class'
parameter to `port_class'.
[!__cplusplus] (ports_lookup_payload, ports_payload_get_name): Do not
define extern inlines.
|
|
g++ still doens't support non-trivial named initializers (sigh)
* libshouldbeinlibc/refcount.h (REFCOUNT_REFERENCES): New macro.
(refcounts_init, refcounts_unsafe_ref, refcounts_deref,
refcounts_promote, refcounts_demote, refcounts_unsafe_ref_weak,
refcounts_deref_weak): Use REFCOUNT_REFERENCES instead of explicit
initializer.
|
|
* boot/boot.c (S_processor_set_tasks): Do not always return 0.
|
|
* libpager/pager-memcpy.c (pager_memcpy): Pass 1 as second parameter to
sigsetjmp.
* libstore/memobj.c (memobj_memcpy): Likewise.
|
|
* boot/boot.c (S_processor_set_tasks): Return empty array when
task_ihash.nr_items is still 0.
|
|
* ext2fs/dir.c (diskfs_direnter_hard): On missing room to extend
directory, return ENOSPC.
|
|
* ext2fs/pager.c (pager_unlock_page): Do not say that ext2fs will crash
because of ENOSPC.
|
|
We need to save blocked signals, otherwise longjmp will not unblock
SIGSEGV/SIGBUS, and thus next exception will kill us. Also, we need to
make sure that the preemptor is set at the right window in main memory
before letting a handler see it.
* libpager/pager-memcpy.c (do_memcpy): Call __sync_synchronize()
between aligning the fault preemptor and actually accessing data.
(fault): Use siglongjmp instead of longjmp.
(pager_memcpy): Use sigsetjmp instead of setjmp.
* libstore/memobj.c (copy, fault, memobj_memcpy): Likewise.
|
|
* ext2fs/dir.c (diskfs_direnter_hard): Call hurd_safe_memset on
directory extension before using it, to actually reserve room.
|
|
The _pager_lock_object call needs to be asynchronous because libpager is
single threaded, at least in the sense that individual memory objects
only process one request at a time. In this case, we're processing a
data_unlock request, and would have to handle a lock_completed message
before lock_object would return (synchronously).
* libpager/data-unlock.c (_pager_S_memory_object_data_unlock): Pass 0 to
sync parameter of _pager_lock_object() call.
|
|
* mach-defpager/main.c (main): Do not hang if the child dies.
|
|
Previously, the device file was opened once at startup time. This is
fragile, as the remote server might die. Open it at device open time
instead.
* boot/boot.c (options): Improve documentation.
(struct dev_map): Rename fields, document, store the name of the
device file instead of a port.
(add_dev_map): Update accordingly.
(lookup_dev): Likewise.
(ds_device_open): Open the device file here instead.
|
|
Previously, the ethernet multiplexer generated ethernet addresses for
the virtual interfaces using a pseudo-random number generator. This
has the downside of generating a new address every time. Generate
stable pseudo-random addresses instead.
* eth-multiplexer/Makefile (HURDLIBS): Link to libihash.
* eth-multiplexer/ethernet.c (ether_address): New variable.
(get_ethernet_address): New function.
(ethernet_open): Get the ethernet address of the real interface.
* eth-multiplexer/ethernet.h (ether_address): New declaration.
* eth-multiplexer/vdev.c (add_vdev): Compute the ethernet address by
hashing the address of the real interface with the name of the virtual
interface.
|
|
* eth-multiplexer/util.h: Include 'net/if_ether.h'.
(ETH_ALEN): Drop.
(struct ethhdr): Likewise.
* eth-multiplexer/vdev.c: Include 'net/if_ether.h'.
(ETH_HLEN): Drop.
|
|
Previously, the ethernet multiplexer returned the status of the real
network device if one was configured. This had the unfortunate
consequence that all virtual devices shared the same ethernet address.
* eth-multiplexer/device_impl.c (ds_device_get_status): Always return
the information for the virtual device.
* eth-multiplexer/vdev.h (dev_getstat): Add prototype.
|
|
* eth-multiplexer/vdev.c (deliver_msg): Do not return an error if
delivering a message fails. Doing so prevents all other filters from
being executed, and more importantly aborts the iteration over all
virtual devices.
|
|
* Makefile (prog-subdirs): Add the new program.
* NEWS: Update.
* eth-multiplexer/ChangeLog: New file.
* eth-multiplexer/Makefile: Likewise.
* eth-multiplexer/README: Likewise.
* eth-multiplexer/demuxer.c: Likewise.
* eth-multiplexer/dev_stat.c: Likewise.
* eth-multiplexer/device_impl.c: Likewise.
* eth-multiplexer/ethernet.c: Likewise.
* eth-multiplexer/ethernet.h: Likewise.
* eth-multiplexer/mig-decls.h: Likewise.
* eth-multiplexer/mig-mutate.h: Likewise.
* eth-multiplexer/multiplexer.c: Likewise.
* eth-multiplexer/netfs_impl.c: Likewise.
* eth-multiplexer/netfs_impl.h: Likewise.
* eth-multiplexer/notify_impl.c: Likewise.
* eth-multiplexer/test.c: Likewise.
* eth-multiplexer/util.h: Likewise.
* eth-multiplexer/vdev.c: Likewise.
* eth-multiplexer/vdev.h: Likewise.
The eth-multiplexer has been written by Zheng Da. This merges his
work into the main repository.
|
|
* Makefile (lib-subdirs): Add new library.
* NEWS: Update.
* libbpf/Makefile: New file.
* libbpf/bpf_impl.c: Likewise.
* libbpf/bpf_impl.h: Likewise.
* libbpf/queue.c: Likewise.
* libbpf/queue.h: Likewise.
* libbpf/util.h: Likewise.
The Berkeley Packet Filter implementation has been extracted from the
Mach kernel by Zheng Da. This merges his work into the main
repository.
|
|
* boot/boot.c (S_mach_notify_new_task): The send rights are now indeed
moved to the target task, adjust accordingly.
* proc/mgt.c (S_mach_notify_new_task): Likewise.
|
|
* boot/boot.c (options): Group options together. Do not end help
texts with a colon.
(args_doc): Remove variable.
(main): Group the store options together.
|
|
* boot/boot.c (OPT_BOOT_SCRIPT): New macro.
(options): Add flag '--boot-script'.
(args_doc): Do not expect the script as positional argument.
(parse_opt): Handle new flag, do not expect the script as positional
argument.
(read_boot_script): New function.
(default_boot_script): New variable containing a boot script capable
of booting contemporary Hurd systems.
(main): Use the new function to read the boot script, or fall back to
using the builtin one.
|
|
Previously, boot handed privileged kernel ports to Subhurds. This
made boot unusable for unprivileged users, and allowed Subhurds to
wreak havoc on the whole system. Fix this by handing out pseudo ports
instead of the privileged ports.
* NEWS: Update.
* boot/Makefile (MIGSTUBS): Build stubs for the new kernel interfaces.
(MIGSFLAGS): Include mutation file.
(HURDLIBS): Link against libihash.
* boot/boot.c (privileged, want_privileged): New variables.
(pseudo_privileged_host_port): New variable.
(pseudo_pset, pseudo_kernel): Likewise.
(task_notification_port): Likewise.
(dead_task_notification_port): Likewise.
(boot_demuxer): Handle new protocols.
(OPT_PRIVILEGED): New macro.
(options): Add flag '--privileged' to enable the old mode.
(parse_opt): Handle new flag.
(allocate_pseudo_ports): New function.
(main): Handle new flag. If not running privileged, allocate more
pseudo ports to hand out in place of privileged kernel ports, create a
task namespace, and a task that the Subhurd can frob instead of the
real kernel task.
(do_mach_notify_dead_name): Handle dying tasks.
(S_vm_set_default_memory_manager): New function.
(S_host_reboot): Likewise.
(S_host_processor_set_priv): Likewise.
(S_register_new_task_notification): Likewise.
(task_ihash_cleanup): Likewise.
(task_ihash): New variable.
(task_died): New function.
(S_mach_notify_new_task): Likewise.
(S_processor_set_tasks): Likewise.
* boot/mig-decls.h: New file.
* boot/mig-mutate.h: Likewise.
|
|
* boot/boot.c (host_exit): Make it a function and restore the terminal state.
|
|
* boot/boot.c (useropen, load_image, boot_script_exec_cmd): Move...
* boot/userland-boot.c: ... here.
|
|
* boot/boot.c (boot_script_exec_cmd): Quote arguments containing
spaces.
|
|
* boot/userland-boot.c (boot_script_insert_right): Use the smallest
possible name instead of the local name.
|
|
* startup/startup.c (dump_processes): New function.
(frob_kerne_process): Use the new function.
|
|
Thanks Agustina Arzille for the report
* ext2fs/ext2fs.h (global_lock, modified_global_blocks_lock): Declare
extern
* ext2fs/ext2fs.c (global_lock, modified_global_blocks_lock): Define and
initialize to PTHREAD_SPINLOCK_INITIALIZER.
* libtreefs/xinl.c (treefs_node_refcnt_lock): Likewise.
|
|
* boot/Makefile (COMMON-OBJS): Do not build server stubs for the
bootstrap protocol.
Remove all UX-related variables and targets.
* boot/boot.c: Remove all UX-related definitions and includes.
* boot/frank1.ld: Delete file.
* boot/frankemul.ld: Likewise.
* boot/mach-crt0.c: Likewise.
* boot/sigvec.S: Likewise.
* boot/syscall.S: Likewise.
* boot/ux.c: Likewise.
* boot/ux.h: Likewise.
|
|
* proc/mgt.c (S_mach_notify_new_task): Fix receiver handling, fix port
leak.
* proc/mig-mutate.h: Mutate the task notification protocol.
|
|
* libdiskfs/node-lastref.c: New file
* libdiskfs/Makefile (OTHERSRCS): Add node-lastref.c
* libdiskfs/libdiskfs/node-nput.c (diskfs_nput): Replace last hard reference
code with a call to _diskfs_lastref.
* libdiskfs/node-nrele.c (diskfs_nrele): Likewise.
|
|
Follow-up on 5ab5d98fa515cd19a64e8d5868fcbae85eec9dc5 ('libdiskfs: fix
removal of socket nodes'), for diskfs_nrele.
* libdiskfs/node-nrele.c (diskfs_nrele): Deallocate right to socket
address when cleaning light references.
|
|
So that static linking of e.g. console.static can work.
* libdiskfs/io-stubs.c (diskfs_S_io_readsleep, diskfs_S_io_eofnotify,
diskfs_S_io_postnotify, diskfs_S_io_readnotify): Mark weak.
* libnetfs/fsstubs.c (netfs_S_file_notice_changes, netfs_S_file_getfh,
netfs_S_ifsock_getsockaddr): Likewise.
* libnetfs/fsysstubs.c (netfs_S_fsys_getfile: netfs_S_fsys_getpriv,
netfs_S_fsys_init, netfs_S_fsys_forward, netfs_S_fsys_startup):
Likewise.
* libpager/stubs.c (_pager_S_memory_object_copy,
_pager_S_memory_object_data_write,
_pager_S_memory_object_supply_completed): Likewise.
* libtrivfs/fsys-stubs.c (trivfs_S_fsys_startup, trivfs_S_fsys_getpriv,
trivfs_S_fsys_init, trivfs_S_fsys_getfile): Likewise.
* libtrivfs/io-stubs.c (trivfs_S_io_map_cntl, trivfs_S_io_get_conch,
trivfs_S_io_release_conch, trivfs_S_io_eofnotify, trivfs_S_io_prenotify,
trivfs_S_io_postnotify, trivfs_S_io_readsleep, trivfs_S_io_sigio,
trivfs_S_io_readnotify): Likewise.
|
|
to work around improper handling of getting paged out.
* console/display.c (user_create): Call vm_wire() on the created user data.
|
|
* utils/rpctrace.c: Fix typo.
|
|
Thanks Kalle Olavi Niemitalo for the notice.
* libdiskfs/file-utimes.c (diskfs_S_file_utimes): Call diskfs_set_node_times
before setting node timestamps.
|
|
* libdiskfs/node-nrele.c (diskfs_nrele): Call diskfs_set_node_times when
there are no hard refs any more, like diskfs_nput does.
|
|
* boot/boot.c (main): Ignore EINTR in the loop processing stdin.
|
|
* libports/manage-multithread.c (adjust_priorities): Avoid displaying
error messages if we do not have the privileged processor set port by
treating this error condition like EPERM.
* proc/main.c (increase_priority, main): Likewise.
|
|
* procfs/rootdir.c (rootdir_gc_meminfo): Just omit the swap
information if the default pager is unreachable.
|