summaryrefslogtreecommitdiff
path: root/pflocal
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-09-27 17:01:37 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-09-27 22:09:58 +0200
commit50a7577b022851594fd15f8c934cd3c4a37c01b6 (patch)
treee6b54f99fb82fd8e60099c8db986c56ab8f911cc /pflocal
parentf42c29d2172e953887542bf7fb31d2b739563887 (diff)
pflocal: convert to trivfs dynamic classes and buckets
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 mild bug. The classes and buckets given to `trivfs_startup' end up in the dynamic vectors too, making the object lookup code use the more complicated code path. * pflocal/pflocal.c: Convert to dynamic classes and buckets.
Diffstat (limited to 'pflocal')
-rw-r--r--pflocal/pflocal.c20
1 files changed, 4 insertions, 16 deletions
diff --git a/pflocal/pflocal.c b/pflocal/pflocal.c
index fcb62d1d5..07d1a9733 100644
--- a/pflocal/pflocal.c
+++ b/pflocal/pflocal.c
@@ -38,12 +38,6 @@ int trivfs_support_read = 0;
int trivfs_support_write = 0;
int trivfs_support_exec = 0;
int trivfs_allow_open = 0;
-
-/* Trivfs noise. */
-struct port_class *trivfs_protid_portclasses[1];
-struct port_class *trivfs_cntl_portclasses[1];
-int trivfs_protid_nportclasses = 1;
-int trivfs_cntl_nportclasses = 1;
/* ---------------------------------------------------------------- */
#include "socket_S.h"
@@ -70,6 +64,7 @@ main(int argc, char *argv[])
{
error_t err;
mach_port_t bootstrap;
+ struct trivfs_control *fsys;
if (argc > 1)
{
@@ -81,25 +76,18 @@ main(int argc, char *argv[])
if (bootstrap == MACH_PORT_NULL)
error(2, 0, "Must be started as a translator");
- pf_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);
-
/* Prepare to create sockets. */
err = sock_global_init ();
if (err)
error(3, err, "Initializing");
/* Reply to our parent */
- err =
- trivfs_startup (bootstrap, 0,
- trivfs_cntl_portclasses[0], pf_port_bucket,
- trivfs_protid_portclasses[0], pf_port_bucket,
- NULL);
+ err = trivfs_startup (bootstrap, 0, 0, 0, 0, 0, &fsys);
if (err)
error(3, err, "Contacting parent");
+ pf_port_bucket = fsys->pi.bucket;
+
/* Launch. */
do
ports_manage_port_operations_multithread (pf_port_bucket,