aboutsummaryrefslogtreecommitdiff
path: root/trans/proxy-defpager.c
Commit message (Collapse)AuthorAgeFilesLines
* Only use host_get_kernel_version and default_pager_paging_storage_new in x86_64.Flavio Cruz2023-05-111-7/+23
| | | | | | | | | | Also fixed the implementation of default_pager_paging_storage_new in proxy def pager to call into default_pager_paging_storage_new. We can fast track the simplification of the RPC ABI for x86_64 if we don't have MACH_MSG_TYPE_STRING used in RPCs which forces msgt_size to use more than 8 bits. Message-Id: <ZFsk/W+slpAZyTG1@jupiter.tail36e24.ts.net>
* Use c_string for default_pager_filename_t to define a new ↵Flavio Cruz2023-04-251-0/+11
| | | | | | | | | | default_pager_paging_storage RPC. This brings us a bit closer to having all types' msgt_size representable with a single byte. We will be able to avoid mach_msg_type_long_t entirely for x86_64 since mach_msg_type_t can represent long types using a separate field. Message-Id: <ZEdO0Grm2AUw4Tfe@jupiter.tail36e24.ts.net>
* Remove default_pager_paging_file RPC from default pagerFlavio Cruz2023-04-151-12/+0
| | | | | | | | | The default_pager_paging_storage RPC has already it more than 20 years ago. Given that we want to change the type of default_pager_filename_t to use c_string, we can just remove the unused RPC. Tested that swapon/swapoff still work with the new binaries. Message-Id: <ZDoyNOE0XB77d5xj@mars.tail36e24.ts.net>
* Fix types of read write and readables methodsEtienne Brateau2022-08-291-3/+3
| | | | Message-Id: <20220829193617.13481-1-etienne.brateau@gmail.com>
* Make RPC input array parameters constSamuel Thibault2022-01-161-4/+4
| | | | | This follows mig's cf4bcc3f1435 ("Also add const qualifiers on server side")
* Use the data_t type defined in hurd_types.h.Flavio Cruz2019-09-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * boot/boot.c: Replace char* with data_t. * console-client/trans.c: Likewise. * exec/exec.c: Likewise. * ext2fs/storeinfo.c: Likewise. * fatfs/inode.c: Likewise. * fatfs/main.c: Likewise. * isofs/inode.c: Likewise. * libdiskfs/boot-start.c: Likewise. * libdiskfs/dir-readdir.c: Likewise. * libdiskfs/file-exec.c: Likewise. * libdiskfs/file-get-fs-opts.c: Likewise. * libdiskfs/file-get-trans.c: Likewise. * libdiskfs/file-getfh.c: Likewise. * libdiskfs/file-set-trans.c: Likewise. * libdiskfs/fsys-forward.c: Likewise. * libdiskfs/fsys-getfile.c: Likewise. * libdiskfs/fsys-options.c: Likewise. * libdiskfs/io-read.c: Likewise. * libdiskfs/io-write.c: Likewise. * libnetfs/dir-readdir.c: Likewise. * libnetfs/file-exec.c: Likewise. * libnetfs/file-get-fs-options.c: Likewise. * libnetfs/file-get-storage-info.c: Likewise. * libnetfs/file-get-translator.c: Likewise. * libnetfs/file-set-translator.c: Likewise. * libnetfs/fsstubs.c: Likewise. * libnetfs/fsys-get-options.c: Likewise. * libnetfs/fsys-set-options.c: Likewise. * libnetfs/fsysstubs.c: Likewise. * libnetfs/io-read.c: Likewise. * libnetfs/io-write.c: Likewise. * libtrivfs/dir-readdir.c: Likewise. * libtrivfs/file-get-fs-options.c: Likewise. * libtrivfs/file-get-storage-info.c: Likewise. * libtrivfs/file-get-trans.c: Likewise. * libtrivfs/file-getfh.c: Likewise. * libtrivfs/file-set-trans.c: Likewise. * libtrivfs/fsys-forward.c: Likewise. * libtrivfs/fsys-get-options.c: Likewise. * libtrivfs/fsys-set-options.c: Likewise. * libtrivfs/fsys-stubs.c: Likewise. * libtrivfs/io-read.c: Likewise. * libtrivfs/io-write.c: Likewise. * pfinet/io-ops.c: Likewise. * pfinet/pfinet-ops.c: Likewise. * pfinet/socket-ops.c: Likewise. * pfinet/tunnel.c: Likewise. * pflocal/io.c: Likewise. * pflocal/pf.c: Likewise. * pflocal/socket.c: Likewise. * proc/info.c: Likewise. * startup/startup.c: Likewise. * storeio/io.c: Likewise. * term/users.c: Likewise. * tmpfs/node.c: Likewise. * trans/crash.c: Likewise. * trans/fakeroot.c: Likewise. * trans/fifo.c: Likewise. * trans/firmlink.c: Likewise. * trans/hello-mt.c: Likewise. * trans/hello.c: Likewise. * trans/mtab.c: Likewise. * trans/new-fifo.c: Likewise. * trans/null.c: Likewise. * trans/proxy-defpager.c: Likewise. * trans/streamio.c: Likewise.
* Unify and document the way fsids are handled in trivfs translatorsJustus Winter2016-04-281-2/+0
| | | | | | | | * doc/hurd.texi: Clarify what happens if 'trivfs_fsid' is zero. * login/utmp.c: Leave 'trivfs_fsid' at zero. * pfinet/main.c: Likewise. * trans/ifsock.c: Likewise. * trans/proxy-defpager.c: Likewise.
* Add getting swap information from swapon and procfsSamuel Thibault2016-03-161-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | * hurd/default_pager.defs (default_pager_storage_info): New RPC. * hurd/default_pager_reply.defs: Skip default_pager_storage_info RPC. * hurd/default_pager_types.h: Include <mach/machine/vm_types.h>. (vm_size_array_t): New type. * mach-defpager/priv.h (part): Add `name' field. * mach-defpager/default_pager.c (new_partition): Allocate and fill `part->name' field. Free it on error. (destroy_paging_partition): Free `part->name' field. (S_default_pager_storage_info): New function. * procfs/Makefile (SRCS): Add default_pagerUser.c. * procfs/rootdir.c: Include "default_pager_U.h". (rootdir_gc_swaps): New function. (rootdir_entries): Add "swaps" entry. * sutils/swapon.c: Include <argz.h> (show): New variable. (options): Add --show/-S option. (def_pager, dev_master): New variables (swaponoff): Move getting `def_pager' to... (get_def_pager): ... new function. (main): Support 'S' option. * trans/proxy-defpager.c (S_default_pager_storage_info): New function.
* trans: improve demuxersJustus Winter2015-10-291-4/+10
| | | | | | | | | | | Handle multiple request types as recommended by the Mach Server Writer's Guide section 4, subsection "Handling Multiple Request Types". This avoids initializing the reply message in every X_server function. * trans/proxy-defpager.c (proxy_defpager_demuxer): Improve the demuxer function. * trans/streamio.c (demuxer): Likewise.
* trans/proxy-defpager: convert to trivfs dynamic classes and bucketsJustus Winter2015-09-271-3/+10
| | | | | | | | | | | | | | | | | | | | libtrivfs contains two ways of managing more than one port class and bucket. There is the old way of using a statically allocated array with explicit length, and the new way with dynamically allocated vectors. Converting all users to the new way of handling multiple classes and/or buckets, we can simplify the code in libtrivfs. In many cases, the code will be simpler and more expressive for the user. This also fixes a severe bug. As no classes are given to `trivfs_startup', they are created and inserted into the dynamic vector of classes. The helper function `allowed', however, used the first item of the previously used static array, which is NULL. This circumvented the typecheck, allowing the default pager protocol to be spoken over control ports, likely resulting in a crash. * trans/proxy-defpager.c: Convert to dynamic classes and buckets.
* hurd: make memory_object parameter polymorphicJustus Winter2014-09-041-0/+2
| | | | | | | | | | | Make the memory_object parameter of default_pager_object_create polymorphic. This fixes https://savannah.gnu.org/bugs/?26751 . * hurd/default_pager.defs (default_pager_object_create): Make memory_object parameter polymorphic. * mach-defpager/default_pager.c (S_default_pager_object_create): Adjust accordingly. * trans/proxy-defpager.c (S_default_pager_object_create): Likewise.
* Include the MIG-generated server header filesJustus Winter2014-04-151-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This enables the compiler to check that the server function declarations match MIGs expectations. Fix a few oddities along the way. * console-client/trans.c: Include MIG-generated server header file(s). * console/console.c: Likewise. Also, fix declarations. * console/mutations.h (TIOCTL_IMPORTS): Just use libnetfs/priv.h. * console/priv.h: Delete now unused file. * ext2fs/storeinfo.c: Include MIG-generated server header file(s). * fatfs/inode.c: Likewise. * fatfs/main.c: Likewise. Also, fix declaration. * isofs/inode.c: Likewise. * libdiskfs/boot-start.c: Likewise. * libdiskfs/file-chg.c: Include the correct MIG-generated server header file. * libdiskfs/file-chmod.c: Include MIG-generated server header file(s). * libdiskfs/file-get-fs-opts.c: Likewise. * libdiskfs/init-startup.c: Likewise. * libnetfs/file-get-children.c: Likewise. * libnetfs/file-getcontrol.c: Include the correct MIG-generated server header file. * libnetfs/file-set-translator.c: Include MIG-generated server header file(s). * libnetfs/fsstubs.c: Likewise. * libtrivfs/file-access.c: Likewise. * libtrivfs/file-chauthor.c: Likewise. * libtrivfs/file-chflags.c: Likewise. * libtrivfs/file-chg.c: Likewise. * libtrivfs/file-chmod.c: Likewise. * libtrivfs/file-chown.c: Likewise. * libtrivfs/file-exec.c: Likewise. * libtrivfs/file-get-children.c: Likewise. * libtrivfs/file-get-fs-options.c: Likewise. * libtrivfs/file-get-source.c: Likewise. * libtrivfs/file-get-storage-info.c: Likewise. * libtrivfs/file-get-trans.c: Likewise. * libtrivfs/file-get-transcntl.c: Likewise. * libtrivfs/file-getcontrol.c: Likewise. * libtrivfs/file-getfh.c: Likewise. * libtrivfs/file-getlinknode.c: Likewise. * libtrivfs/file-lock.c: Likewise. * libtrivfs/file-reparent.c: Likewise. * libtrivfs/file-set-size.c: Likewise. * libtrivfs/file-set-trans.c: Likewise. * libtrivfs/file-statfs.c: Likewise. * libtrivfs/file-sync.c: Likewise. * libtrivfs/file-syncfs.c: Likewise. * libtrivfs/file-utimes.c: Likewise. * libtrivfs/fsys-forward.c: Likewise. * libtrivfs/fsys-get-options.c: Likewise. * libtrivfs/fsys-getroot.c: Likewise. * libtrivfs/fsys-goaway.c: Likewise. * libtrivfs/fsys-set-options.c: Likewise. * libtrivfs/fsys-stubs.c: Likewise. * libtrivfs/fsys-syncfs.c: Likewise. * libtrivfs/io-async-icky.c: Likewise. * libtrivfs/io-async.c: Likewise. * libtrivfs/io-duplicate.c: Likewise. * libtrivfs/io-identity.c: Likewise. * libtrivfs/io-map.c: Likewise. * libtrivfs/io-modes-get.c: Likewise. * libtrivfs/io-modes-off.c: Likewise. * libtrivfs/io-modes-on.c: Likewise. * libtrivfs/io-modes-set.c: Likewise. * libtrivfs/io-owner-get.c: Likewise. * libtrivfs/io-owner-mod.c: Likewise. * libtrivfs/io-pathconf.c: Likewise. * libtrivfs/io-read.c: Likewise. * libtrivfs/io-readable.c: Likewise. * libtrivfs/io-reauthenticate.c: Likewise. * libtrivfs/io-restrict-auth.c: Likewise. * libtrivfs/io-revoke.c: Likewise. * libtrivfs/io-seek.c: Likewise. * libtrivfs/io-select.c: Likewise. * libtrivfs/io-stat.c: Likewise. * libtrivfs/io-stubs.c: Likewise. * libtrivfs/io-version.c: Likewise. * libtrivfs/io-write.c: Likewise. * pfinet/tunnel.c: Likewise. * storeio/io.c: Likewise. * storeio/storeio.c: Likewise. * term/users.c: Likewise. * tmpfs/node.c: Likewise. * trans/fakeroot.c: Likewise. Also, include all server headers that provide the X_server_routine functions... (netfs_demuxer): ... that were previously declared here. * trans/fifo.c: Include MIG-generated server header file(s). * trans/firmlink.c: Likewise. * trans/hello-mt.c: Likewise. * trans/hello.c: Likewise. * trans/magic.c: Likewise. * trans/mtab.c: Likewise. * trans/new-fifo.c: Likewise. * trans/null.c: Likewise. * trans/proxy-defpager.c: Likewise. * trans/streamio.c: Likewise. * libdiskfs/fsmutations.h: Qualify the import with the libraries path. Without this change, out-of-tree builds would no longer work. * libnetfs/mutations.h: Likewise. * libtrivfs/mig-mutate.h: Likewise.
* Fix defpager into using the correct control portMaksym Planeta2011-11-201-1/+0
| | | | | | | | | | | | | The reply_port is only the correct control port when RPCs are from the kernel, not from e.g. tmpfs, such as default_pager_object_set_size calls. * mach-defpager/default_pager.c (seqnos_memory_object_terminate, S_default_pager_object_set_size): Make default pager use its own memory object control ports for external objects, remove reply_to parameter. * trans/proxy-defpager.c (S_default_pager_object_set_size): Remove reply_to parameter. * hurd/default_pager.defs (default_pager_object_set_size): Remove unused parameter.
* 2007-06-06 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge2007-06-061-3/+3
| | | | | | * Makefile (default_pager-MIGCOMSFLAGS): Remove variable. * proxy-defpager.c (proxy_defpager_demuxer): Invoke `default_pager_server' instead of `S_default_pager_server'.
* 2002-08-16 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-08-161-2/+14
| | | | | | * proxy-defpager.c (S_default_pager_object_pages): New function. (proxy_defpager_demuxer): Use S_default_pager_server (ie add the prefix).
* 2002-08-06 Roland McGrath <roland@frob.com>Roland McGrath2002-08-061-22/+23
| | | | | | | | * proxy-defpager.c: Rename all the server functions with S_ prefix. Include "default_pager_U.h" for client stub prototypes. * Makefile (default_pager-MIGCOMSFLAGS): New variable, give -prefix S_. (OBJS): Add default_pagerUser.o here. (proxy-defpager): Depend on it.
* 2002-08-05 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann2002-08-051-3/+14
| | | | | | | * proxy-defpager.c (allowed): Check CRED, not PORT. (default_pager_info): Use real_defpager, not DEFAULT_PAGER. (proxy_defpager_demuxer): New demuxer. (main): Use it.
* 2002-06-14 Roland McGrath <roland@frob.com>Roland McGrath2002-06-251-0/+255
* proxy-defpager.c: New file. * Makefile (targets, SRCS): Add it. (proxy-defpager): New target. (OBJS): Add default_pagerServer.o here.