diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-09-27 17:01:37 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-09-27 22:09:58 +0200 |
commit | 50a7577b022851594fd15f8c934cd3c4a37c01b6 (patch) | |
tree | e6b54f99fb82fd8e60099c8db986c56ab8f911cc /pflocal | |
parent | f42c29d2172e953887542bf7fb31d2b739563887 (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.c | 20 |
1 files changed, 4 insertions, 16 deletions
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, |