aboutsummaryrefslogtreecommitdiff
path: root/libmachdev/trivfs_server.c
Commit message (Collapse)AuthorAgeFilesLines
* Do not ignore value returned by get_privileged_portsSamuel Thibault2023-01-011-1/+7
|
* machdev, pci-arbiter, rumpdisk: Fix race condition in bootstrapDamien Zammit2022-09-111-6/+12
| | | | | | | | This fixes a known race condition in bootstrapping by separating the fsys_startup call from the server demuxer loop into two separate functions that the caller can decide when to call. Message-Id: <20220908093229.499494-1-damien@zamaudio.com>
* Fix including notify_S.h and running ports_notify_server_routineSamuel Thibault2022-08-101-1/+1
|
* libmachdev: Use notify server implementation from libportsSergey Bugaev2022-08-101-43/+1
| | | | | | Since the implementation in libmachdev was just forwarding calls to the corresponding libports functions, we might as well just use ports_notify_server_routine () directly.
* libmachdev: Register translator for shutdown notificationSamuel Thibault2022-02-201-0/+2
| | | | | When starting a libmachdev translator after bootstrap, we still want the translator to be notified by startup, to properly flush buffers etc.
* Make RPC input array parameters constSamuel Thibault2022-01-161-1/+1
| | | | | This follows mig's cf4bcc3f1435 ("Also add const qualifiers on server side")
* libmachdev: Fix startup_dosyncSamuel Thibault2021-08-111-4/+4
| | | | | | | We do not actually want to shut everything down. For instance, we still have to be able to start the acpi translator to perform the actual shutdown. What we however have to do is syncing the disks.
* bootstrap: Fix passing proc server from FS to rumpdiskSamuel Thibault2021-08-111-1/+11
| | | | | libdiskfs was passing its own proc port, thus confusing the fsys_init call in rumpdisk.
* Fix /proc/?/exe values for bootstrap processesDamien Zammit2021-07-111-14/+1
| | | | | | | This makes libmachdev follow the exec case, and make sure to be waiting for all bootstrap processes by waiting for the FS process. Message-Id: <20210711012042.77920-1-damien@zamaudio.com>
* libmachdev: Restore making machdev_trivfs_server blockingSamuel Thibault2021-04-151-20/+7
| | | | | | | | | | | | | | | netdde actually needs to control which thread runs the trivfs server, for managing per-thread state etc. Only pci-arbiter needs to run machdev_trivfs_server non-blockingly, it can create a thread by itself. * libmachdev/trivfs_server.c (machdev_trivfs_loop): Move back muxer loop to... (machdev_trivfs_server): ... here. * pci-arbiter/main.c (main): Run machdev_trivfs_server in its own thread. * rumpdisk/main.c (main): Do not call pthread_exit().
* Fix typoSamuel Thibault2021-04-141-1/+1
| | | | | * libmachdev/trivfs_server.c (trivfs_S_fsys_init): Pass machdev_argv to _hurd_libc_proc_init, not diskfs_argv.
* Call _hurd_libc_proc_init when availableSamuel Thibault2021-04-111-0/+3
| | | | | | | | | | | glibc 2.33 separated out _hurd_libc_proc_init from _hurd_init, so we have to additionally call it. * configure.ac (_hurd_libc_proc_init): Detect function. * libdiskfs/boot-start.c (diskfs_S_fsys_init): Call _hurd_libc_proc_init. * libmachdev/trivfs_server.c (trivfs_S_fsys_init): Call _hurd_libc_proc_init.
* libmachdev: Fix non-bootstrap translator startupSamuel Thibault2021-04-041-1/+14
| | | | | * libmachdev/trivfs_server.c (machdev_trivfs_init): Call fsys_getpriv only when bootstrapping.
* machdev: Pass argv through to _hurd_initDamien Zammit2021-04-041-4/+7
| | | | Message-Id: <20210404033750.143411-1-damien@zamaudio.com>
* machdev: Fix parent proc passthrough in fsys_initDamien Zammit2021-03-191-5/+12
| | | | | | | | | | * libmachdev/trivfs_server.c (parent_task): New global variable. (machdev_trivfs_init): Remove parent_task local variable. (trivfs_S_fsys_init): Pass parent's proc port to fsys_init call. Accept EPERM error from proc_mark_important for bootstrap case. Check errors from proc_set_exe call. Message-Id: <20210319021512.823541-1-damien@zamaudio.com>
* machdev,rump,pci: Rework bootstrapDamien Zammit2021-03-161-25/+76
| | | | | | | | | | | | | | | | | | | | | | | | | * libmachdev/trivfs_server.c (bootstrapped): Rename to bootstrapping. (trivfs_S_fsys_startup): Call fsys_startup on the bootstrap port. (essential_task): New function. (trivfs_S_fsys_init): Call fsys_init on the bootstrap port. Configure proc. Mark us as essential when bootstrapping even without a devnode. (arrange_shutdown_notification): Do not configure proc. (machdev_trivfs_init): Always get the bootstrap port from the kernel, leave it MACH_PORT_NULL if unavailable. Call fsys_getpriv on it if it is. * pci-arbiter/Makefile (SRCS): Remove startup.c. * pci-arbiter/startup.c: Delete file. * pci-arbiter/startup.h: Delete file. * pci-arbiter/main.c: Do not include "startup.h" (pci_device_shutdown): Do not try to lokup the dosync_handle. (pcifs_startup): Always create the pci_control_port right on the control port. (main): Call machdev_device_init after machdev_trivfs_init. Do not call arrange_shutdown_notification. * rumpdisk/main.c (netfs_server_name): Don't pretend to be the arbiter anymore (main): Call machdev_device_init after machdev_trivfs_init. Message-Id: <20210316054715.788725-1-damien@zamaudio.com>
* libmachdev: pass shutdown handle to shutdown methodDamien Zammit2021-03-071-1/+1
| | | | | | | | | | | | * libmachdev/machdev-device_emul.h (struct machdev_device_emulation_ops): Add shutdown method. * libmachdev/ds_routines.c (machdev_device_shutdown): Take dosync_handle handle and pass it to shutdown method. * libmachdev/machdev.h (machdev_device_shutdown): Update prototype. * libmachdev/trivfs_server.c (S_startup_dosync): Pass shutdown handle to machdev_device_shutdown call. * rumpdisk/block-rump.c (rumpdisk_device_shutdown): Take dosync_handle parameter.
* libmachdev: Spawn a thread for server loop so main pathway can continueDamien Zammit2021-03-021-7/+23
| | | | Message-Id: <20210302114137.592230-3-damien@zamaudio.com>
* libmachdev: Fix spurious send referenceSamuel Thibault2020-11-151-1/+1
| | | | | * libmachdev/trivfs_server.c (trivfs_S_fsys_getpriv): Move the just-copied send rights instead of copying them again.
* libmachdev: Make comments more preciseSamuel Thibault2020-11-151-2/+2
|
* libmachdev: Fix warningSamuel Thibault2020-11-151-0/+1
| | | | * libmachdev/trivfs_server.c: Include <mach/i386/mach_i386.h>.
* libmachdev: Avoid conflating translator name and pathSamuel Thibault2020-11-141-3/+4
| | | | | | | | | | | | bootstrap translators may not wish to appear in the FS, and the name of the translator does not have to match the path where it is getting installed. * libmachdev/machdev.h (machdev_trivfs_init): Add path parameter. * libmachdev/trivfs_server.c (machdev_trivfs_init): Add path parameter, set devnode only if it is not NULL. (trivfs_S_fsys_init): Only call install_as_translator when devnode is not NULL. * /rumpdisk/main.c (main): Add path parameter.
* libmachdev: Support installing translator in the FSDamien Zammit2020-11-141-23/+62
| | | | | | | | | | | | | | | | | */libmachdev/trivfs_server.c (machdev_ctl): Rename to control_port. (trivfs_S_fsys_init): Fix accordingly. (control): New variable. (bootstrapped, underlying, devnode): New variables. (install_as_translator): New function. (trivfs_S_fsys_init): When bootstrapping, call install_as_translator. (machdev_trivfs_init): Create one port of the control class. (trivfs_S_fsys_getpriv): Use ports_get_send_right on the control port instead of creating another one. (resume_bootstrap_server): Use ports_get_send_right on the control port instead of creating another one. (machdev_trivfs_init): When bootstrapping, Use our control port as fsys.
* libmachdev: Introduce startup notification for clean rumpdisk shutdownDamien Zammit2020-08-021-3/+115
| | | | Message-Id: <20200801050538.273196-1-damien@zamaudio.com>
* libmachdev: simplify source codeSamuel Thibault2020-07-251-19/+8
| | | | | * libmachdev/trivfs_server.c (machdev_is_master_device): Simplify source code.
* libmachdev: Implement S_i386_io_perm_createDamien Zammit2020-07-251-0/+60
| | | | | | | | Now that machdev redirects the device master port, it has to implement the i386 permission RPCs on it. Message-Id: <20200725011847.186969-2-damien@zamaudio.com> Message-Id: <20200725011847.186969-3-damien@zamaudio.com>
* libmachdev: Add resume for bootstrap serverDamien Zammit2020-07-251-20/+134
| | | | | | | | | | | | machdev users can now pass along a port to the next translator in the bootstrap chain (bootstrap_resume_task), that they'll get from their command line set by the bootloader. machdev will then call task_resume on it as appropriate. It will also have the opportunity to get fsys_getpriv calls, and thus redirect the device master port, thus having the opportunity to expose its devices on the device master port, as if they were handled by the kernel. Message-Id: <20200725011847.186969-1-damien@zamaudio.com>
* libmachdev: Add common machdevZheng Da2020-03-291-0/+192
* libmachdev: New directory.