From 50a7577b022851594fd15f8c934cd3c4a37c01b6 Mon Sep 17 00:00:00 2001 From: Justus Winter <4winter@informatik.uni-hamburg.de> Date: Sun, 27 Sep 2015 17:01:37 +0200 Subject: 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. --- pflocal/pflocal.c | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) (limited to 'pflocal') diff --git a/pflocal/pflocal.c b/pflocal/pflocal.c index fcb62d1d..07d1a973 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, -- cgit v1.2.3