summaryrefslogtreecommitdiff
path: root/libtreefs
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2012-09-04 00:33:09 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-11-27 22:58:15 +0100
commit1de0643c9218db536f5b2e294bbfa653c77438e4 (patch)
treef944e1b023cf0353ca559d22e1f7b701bac04c97 /libtreefs
parent7648503cd894549874ff13f7ed94a4708cf50f0d (diff)
Switch from cthreads to pthreads
Makefiles, headers, types, macros and function calls are renamed where appropriate. Most of this work was done by Barry deFreese and Thomas DiModica. * auth/Makefile: Switch from cthreads to pthreads. * auth/auth.c: Likewise. * boot/Makefile: Likewise. * boot/boot.c: Likewise. * boot/ux.c: Likewise. * console-client/Makefile: Likewise. * console-client/console.c: Likewise. * console-client/driver.c: Likewise. * console-client/driver.h: Likewise. * console-client/generic-speaker.c: Likewise. * console-client/kbd-repeat.c: Likewise. * console-client/ncursesw.c: Likewise. * console-client/pc-kbd.c: Likewise. * console-client/pc-mouse.c: Likewise. * console-client/timer.c: Likewise. * console-client/trans.c: Likewise. * console-client/vga.c: Likewise. * console/Makefile: Likewise. * console/console.c: Likewise. * console/display.c: Likewise. * console/input.c: Likewise. * console/pager.c: Likewise. * defpager/backing.c: Likewise. * exec/Makefile: Likewise. * exec/exec.c: Likewise. * exec/hashexec.c: Likewise. * exec/priv.h: Likewise. * ext2fs/Makefile: Likewise. * ext2fs/balloc.c: Likewise. * ext2fs/dir.c: Likewise. * ext2fs/ext2fs.c: Likewise. * ext2fs/ext2fs.h: Likewise. * ext2fs/ialloc.c: Likewise. * ext2fs/inode.c: Likewise. * ext2fs/msg.c: Likewise. * ext2fs/pager.c: Likewise. * ext2fs/pokel.c: Likewise. * ext2fs/storeinfo.c: Likewise. * ext2fs/truncate.c: Likewise. * fatfs/Makefile: Likewise. * fatfs/dir.c: Likewise. * fatfs/fat.c: Likewise. * fatfs/fatfs.h: Likewise. * fatfs/inode.c: Likewise. * fatfs/main.c: Likewise. * fatfs/pager.c: Likewise. * fatfs/virt-inode.c: Likewise. * ftpfs/Makefile: Likewise. * ftpfs/ccache.c: Likewise. * ftpfs/ccache.h: Likewise. * ftpfs/conn.c: Likewise. * ftpfs/dir.c: Likewise. * ftpfs/fs.c: Likewise. * ftpfs/ftpfs.c: Likewise. * ftpfs/ftpfs.h: Likewise. * ftpfs/ncache.c: Likewise. * ftpfs/netfs.c: Likewise. * ftpfs/node.c: Likewise. * hostmux/Makefile: Likewise. * hostmux/hostmux.h: Likewise. * hostmux/mux.c: Likewise. * hostmux/node.c: Likewise. * hostmux/stubs.c: Likewise. * hurd/shared.h: Likewise. * isofs/Makefile: Likewise. * isofs/inode.c: Likewise. * isofs/lookup.c: Likewise. * isofs/main.c: Likewise. * isofs/pager.c: Likewise. * libcons/Makefile: Likewise. * libcons/cons-switch.c: Likewise. * libcons/cons.h: Likewise. * libcons/dir-changed.c: Likewise. * libcons/file-changed.c: Likewise. * libcons/init-init.c: Likewise. * libcons/vcons-close.c: Likewise. * libcons/vcons-input.c: Likewise. * libcons/vcons-move-mouse.c: Likewise. * libcons/vcons-open.c: Likewise. * libcons/vcons-scrollback.c: Likewise. * libdiskfs/Makefile: Likewise. * libdiskfs/boot-start.c: Likewise. * libdiskfs/dead-name.c: Likewise. * libdiskfs/dir-chg.c: Likewise. * libdiskfs/dir-link.c: Likewise. * libdiskfs/dir-lookup.c: Likewise. * libdiskfs/dir-mkdir.c: Likewise. * libdiskfs/dir-mkfile.c: Likewise. * libdiskfs/dir-readdir.c: Likewise. * libdiskfs/dir-rename.c: Likewise. * libdiskfs/dir-renamed.c: Likewise. * libdiskfs/dir-rmdir.c: Likewise. * libdiskfs/dir-unlink.c: Likewise. * libdiskfs/disk-pager.c: Likewise. * libdiskfs/diskfs-pager.h: Likewise. * libdiskfs/diskfs.h: Likewise. * libdiskfs/file-access.c: Likewise. * libdiskfs/file-chg.c: Likewise. * libdiskfs/file-exec.c: Likewise. * libdiskfs/file-get-fs-opts.c: Likewise. * libdiskfs/file-get-trans.c: Likewise. * libdiskfs/file-get-transcntl.c: Likewise. * libdiskfs/file-getcontrol.c: Likewise. * libdiskfs/file-getfh.c: Likewise. * libdiskfs/file-lock-stat.c: Likewise. * libdiskfs/file-lock.c: Likewise. * libdiskfs/file-reparent.c: Likewise. * libdiskfs/file-set-trans.c: Likewise. * libdiskfs/file-sync.c: Likewise. * libdiskfs/file-syncfs.c: Likewise. * libdiskfs/fsys-getroot.c: Likewise. * libdiskfs/fsys-options.c: Likewise. * libdiskfs/fsys-syncfs.c: Likewise. * libdiskfs/ifsock.c: Likewise. * libdiskfs/init-first.c: Likewise. * libdiskfs/init-init.c: Likewise. * libdiskfs/init-startup.c: Likewise. * libdiskfs/io-duplicate.c: Likewise. * libdiskfs/io-get-conch.c: Likewise. * libdiskfs/io-identity.c: Likewise. * libdiskfs/io-map-cntl.c: Likewise. * libdiskfs/io-map.c: Likewise. * libdiskfs/io-modes-get.c: Likewise. * libdiskfs/io-modes-off.c: Likewise. * libdiskfs/io-modes-on.c: Likewise. * libdiskfs/io-modes-set.c: Likewise. * libdiskfs/io-owner-get.c: Likewise. * libdiskfs/io-owner-mod.c: Likewise. * libdiskfs/io-prenotify.c: Likewise. * libdiskfs/io-read.c: Likewise. * libdiskfs/io-readable.c: Likewise. * libdiskfs/io-reauthenticate.c: Likewise. * libdiskfs/io-rel-conch.c: Likewise. * libdiskfs/io-restrict-auth.c: Likewise. * libdiskfs/io-revoke.c: Likewise. * libdiskfs/io-seek.c: Likewise. * libdiskfs/io-sigio.c: Likewise. * libdiskfs/io-stat.c: Likewise. * libdiskfs/io-write.c: Likewise. * libdiskfs/lookup.c: Likewise. * libdiskfs/name-cache.c: Likewise. * libdiskfs/node-drop.c: Likewise. * libdiskfs/node-make.c: Likewise. * libdiskfs/node-nput.c: Likewise. * libdiskfs/node-nputl.c: Likewise. * libdiskfs/node-nref.c: Likewise. * libdiskfs/node-nrefl.c: Likewise. * libdiskfs/node-nrele.c: Likewise. * libdiskfs/node-nrelel.c: Likewise. * libdiskfs/peropen-rele.c: Likewise. * libdiskfs/priv.h: Likewise. * libdiskfs/shutdown.c: Likewise. * libdiskfs/sync-interval.c: Likewise. * libfshelp/Makefile: Likewise. * libfshelp/fetch-root.c: Likewise. * libfshelp/fshelp.h: Likewise. * libfshelp/get-identity.c: Likewise. * libfshelp/lock-acquire.c: Likewise. * libfshelp/lock-init.c: Likewise. * libfshelp/locks.h: Likewise. * libfshelp/set-active.c: Likewise. * libfshelp/trans.h: Likewise. * libfshelp/transbox-init.c: Likewise. * libiohelp/Makefile: Likewise. * libiohelp/get_conch.c: Likewise. * libiohelp/handle_io_release_conch.c: Likewise. * libiohelp/initialize_conch.c: Likewise. * libiohelp/iohelp.h: Likewise. * libiohelp/verify_user_conch.c: Likewise. * libnetfs/Makefile: Likewise. * libnetfs/dir-lookup.c: Likewise. * libnetfs/dir-mkdir.c: Likewise. * libnetfs/dir-mkfile.c: Likewise. * libnetfs/dir-readdir.c: Likewise. * libnetfs/dir-rmdir.c: Likewise. * libnetfs/dir-unlink.c: Likewise. * libnetfs/drop-node.c: Likewise. * libnetfs/file-chauthor.c: Likewise. * libnetfs/file-check-access.c: Likewise. * libnetfs/file-chflags.c: Likewise. * libnetfs/file-chmod.c: Likewise. * libnetfs/file-chown.c: Likewise. * libnetfs/file-exec.c: Likewise. * libnetfs/file-get-storage-info.c: Likewise. * libnetfs/file-get-translator.c: Likewise. * libnetfs/file-lock-stat.c: Likewise. * libnetfs/file-lock.c: Likewise. * libnetfs/file-reparent.c: Likewise. * libnetfs/file-set-size.c: Likewise. * libnetfs/file-set-translator.c: Likewise. * libnetfs/file-statfs.c: Likewise. * libnetfs/file-sync.c: Likewise. * libnetfs/file-syncfs.c: Likewise. * libnetfs/file-utimes.c: Likewise. * libnetfs/fsys-getroot.c: Likewise. * libnetfs/fsys-set-options.c: Likewise. * libnetfs/init-init.c: Likewise. * libnetfs/io-clear-some-openmodes.c: Likewise. * libnetfs/io-duplicate.c: Likewise. * libnetfs/io-get-openmodes.c: Likewise. * libnetfs/io-get-owner.c: Likewise. * libnetfs/io-identity.c: Likewise. * libnetfs/io-mod-owner.c: Likewise. * libnetfs/io-read.c: Likewise. * libnetfs/io-readable.c: Likewise. * libnetfs/io-reauthenticate.c: Likewise. * libnetfs/io-restrict-auth.c: Likewise. * libnetfs/io-revoke.c: Likewise. * libnetfs/io-seek.c: Likewise. * libnetfs/io-set-all-openmodes.c: Likewise. * libnetfs/io-set-some-openmodes.c: Likewise. * libnetfs/io-stat.c: Likewise. * libnetfs/io-write.c: Likewise. * libnetfs/make-node.c: Likewise. * libnetfs/netfs.h: Likewise. * libnetfs/nput.c: Likewise. * libnetfs/nref.c: Likewise. * libnetfs/nrele.c: Likewise. * libnetfs/release-peropen.c: Likewise. * libnetfs/shutdown.c: Likewise. * libpager/Makefile: Likewise. * libpager/chg-compl.c: Likewise. * libpager/clean.c: Likewise. * libpager/data-request.c: Likewise. * libpager/data-return.c: Likewise. * libpager/data-unlock.c: Likewise. * libpager/inhibit-term.c: Likewise. * libpager/lock-completed.c: Likewise. * libpager/lock-object.c: Likewise. * libpager/mark-error.c: Likewise. * libpager/no-senders.c: Likewise. * libpager/object-init.c: Likewise. * libpager/object-terminate.c: Likewise. * libpager/offer-page.c: Likewise. * libpager/pager-attr.c: Likewise. * libpager/pager-create.c: Likewise. * libpager/pager-shutdown.c: Likewise. * libpager/priv.h: Likewise. * libpager/seqnos.c: Likewise. * libpipe/Makefile: Likewise. * libpipe/pipe.c: Likewise. * libpipe/pipe.h: Likewise. * libports/Makefile: Likewise. * libports/begin-rpc.c: Likewise. * libports/bucket-iterate.c: Likewise. * libports/claim-right.c: Likewise. * libports/class-iterate.c: Likewise. * libports/complete-deallocate.c: Likewise. * libports/count-bucket.c: Likewise. * libports/count-class.c: Likewise. * libports/create-bucket.c: Likewise. * libports/create-internal.c: Likewise. * libports/destroy-right.c: Likewise. * libports/enable-bucket.c: Likewise. * libports/enable-class.c: Likewise. * libports/end-rpc.c: Likewise. * libports/get-right.c: Likewise. * libports/import-port.c: Likewise. * libports/inhibit-all-rpcs.c: Likewise. * libports/inhibit-bucket-rpcs.c: Likewise. * libports/inhibit-class-rpcs.c: Likewise. * libports/inhibit-port-rpcs.c: Likewise. * libports/init.c: Likewise. * libports/interrupt-notified-rpcs.c: Likewise. * libports/interrupt-on-notify.c: Likewise. * libports/interrupt-operation.c: Likewise. * libports/interrupt-rpcs.c: Likewise. * libports/interrupted.c: Likewise. * libports/lookup-port.c: Likewise. * libports/manage-multithread.c: Likewise. * libports/no-senders.c: Likewise. * libports/port-deref-weak.c: Likewise. * libports/port-deref.c: Likewise. * libports/port-ref-weak.c: Likewise. * libports/port-ref.c: Likewise. * libports/ports.h: Likewise. * libports/reallocate-from-external.c: Likewise. * libports/reallocate-port.c: Likewise. * libports/resume-all-rpcs.c: Likewise. * libports/resume-bucket-rpcs.c: Likewise. * libports/resume-class-rpcs.c: Likewise. * libports/resume-port-rpcs.c: Likewise. * libports/stubs.c: Likewise. * libports/transfer-right.c: Likewise. * libstore/Makefile: Likewise. * libstore/gunzip.c: Likewise. * libstore/part.c: Likewise. * libstore/unzipstore.c: Likewise. * libthreads/Makefile: Likewise. * libtreefs/dir-lookup.c: Likewise. * libtreefs/fsys-getroot.c: Likewise. * libtreefs/fsys-hooks.c: Likewise. * libtreefs/fsys.c: Likewise. * libtreefs/trans-help.c: Likewise. * libtreefs/trans-start.c: Likewise. * libtreefs/treefs.h: Likewise. * libtrivfs/cntl-create.c: Likewise. * libtrivfs/dyn-classes.c: Likewise. * libtrivfs/io-reauthenticate.c: Likewise. * libtrivfs/io-restrict-auth.c: Likewise. * libtrivfs/protid-clean.c: Likewise. * libtrivfs/protid-dup.c: Likewise. * libtrivfs/trivfs.h: Likewise. * mach-defpager/Makefile: Likewise. * mach-defpager/default_pager.c: Likewise. * mach-defpager/kalloc.c: Likewise. * mach-defpager/main.c: Likewise. * nfs/Makefile: Likewise. * nfs/cache.c: Likewise. * nfs/main.c: Likewise. * nfs/mount.c: Likewise. * nfs/name-cache.c: Likewise. * nfs/nfs.h: Likewise. * nfs/ops.c: Likewise. * nfs/rpc.c: Likewise. * nfsd/Makefile: Likewise. * nfsd/cache.c: Likewise. * nfsd/loop.c: Likewise. * nfsd/main.c: Likewise. * nfsd/nfsd.h: Likewise. * pfinet/Makefile: Likewise. * pfinet/ethernet.c: Likewise. * pfinet/glue-include/asm/spinlock.h: Likewise. * pfinet/glue-include/linux/interrupt.h: Likewise. * pfinet/glue-include/linux/sched.h: Likewise. * pfinet/glue-include/linux/timer.h: Likewise. * pfinet/glue-include/linux/wait.h: Likewise. * pfinet/iioctl-ops.c: Likewise. * pfinet/io-ops.c: Likewise. * pfinet/kmem_cache.c: Likewise. * pfinet/main.c: Likewise. * pfinet/options.c: Likewise. * pfinet/pfinet-ops.c: Likewise. * pfinet/pfinet.h: Likewise. * pfinet/sched.c: Likewise. * pfinet/socket-ops.c: Likewise. * pfinet/socket.c: Likewise. * pfinet/timer-emul.c: Likewise. * pfinet/tunnel.c: Likewise. * pflocal/Makefile: Likewise. * pflocal/connq.c: Likewise. * pflocal/io.c: Likewise. * pflocal/sock.c: Likewise. * pflocal/sock.h: Likewise. * pflocal/socket.c: Likewise. * pflocal/sserver.c: Likewise. * proc/Makefile: Likewise. * proc/info.c: Likewise. * proc/main.c: Likewise. * proc/mgt.c: Likewise. * proc/msg.c: Likewise. * proc/proc.h: Likewise. * proc/stubs.c: Likewise. * proc/wait.c: Likewise. * storeio/Makefile: Likewise. * storeio/dev.c: Likewise. * storeio/dev.h: Likewise. * storeio/open.c: Likewise. * storeio/open.h: Likewise. * storeio/pager.c: Likewise. * storeio/storeio.c: Likewise. * term/Makefile: Likewise. * term/devio.c: Likewise. * term/hurdio.c: Likewise. * term/main.c: Likewise. * term/munge.c: Likewise. * term/ptyio.c: Likewise. * term/term.h: Likewise. * term/users.c: Likewise. * tmpfs/Makefile: Likewise. * tmpfs/dir.c: Likewise. * tmpfs/node.c: Likewise. * tmpfs/tmpfs.c: Likewise. * tmpfs/tmpfs.h: Likewise. * trans/Makefile: Likewise. * trans/fakeroot.c: Likewise. * trans/fifo.c: Likewise. * trans/hello-mt.c: Likewise. * trans/new-fifo.c: Likewise. * trans/streamio.c: Likewise. * ufs/Makefile: Likewise. * ufs/alloc.c: Likewise. * ufs/dir.c: Likewise. * ufs/hyper.c: Likewise. * ufs/inode.c: Likewise. * ufs/main.c: Likewise. * ufs/pager.c: Likewise. * ufs/pokeloc.c: Likewise. * ufs/sizes.c: Likewise. * ufs/ufs.h: Likewise. * usermux/Makefile: Likewise. * usermux/mux.c: Likewise. * usermux/node.c: Likewise. * usermux/usermux.h: Likewise. * utils/Makefile: Likewise. * utils/fakeauth.c: Likewise. * utils/rpctrace.c: Likewise.
Diffstat (limited to 'libtreefs')
-rw-r--r--libtreefs/dir-lookup.c16
-rw-r--r--libtreefs/fsys-getroot.c2
-rw-r--r--libtreefs/fsys-hooks.c4
-rw-r--r--libtreefs/fsys.c4
-rw-r--r--libtreefs/trans-help.c22
-rw-r--r--libtreefs/trans-start.c2
-rw-r--r--libtreefs/treefs.h62
7 files changed, 56 insertions, 56 deletions
diff --git a/libtreefs/dir-lookup.c b/libtreefs/dir-lookup.c
index 336ce8fd..ce2acafd 100644
--- a/libtreefs/dir-lookup.c
+++ b/libtreefs/dir-lookup.c
@@ -58,13 +58,13 @@ _treefs_s_dir_lookup (struct treefs_handle *h,
/* Set things up in the state expected by the code from gotit: on. */
dir = 0;
node = h->po->node;
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
treefs_node_ref (node);
goto gotit;
}
dir = h->po->node;
- mutex_lock (&dir->lock);
+ pthread_mutex_lock (&dir->lock);
node = 0;
treefs_node_ref (dir); /* acquire a ref for later node_release */
@@ -147,8 +147,8 @@ _treefs_s_dir_lookup (struct treefs_handle *h,
/* Be very careful not to hold an inode lock while fetching
a translator lock and vice versa. */
- mutex_unlock (&node->lock);
- mutex_unlock (&dir->lock);
+ pthread_mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&dir->lock);
do
{
@@ -199,12 +199,12 @@ _treefs_s_dir_lookup (struct treefs_handle *h,
in the right order. */
if (strcmp (path, "..") != 0)
{
- mutex_unlock (&node->lock);
- mutex_lock (&dir->lock);
- mutex_lock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
+ pthread_mutex_lock (&dir->lock);
+ pthread_mutex_lock (&node->lock);
}
else
- mutex_lock (&dir->lock);
+ pthread_mutex_lock (&dir->lock);
}
if (treefs_node_type (node) == S_IFLNK
diff --git a/libtreefs/fsys-getroot.c b/libtreefs/fsys-getroot.c
index 986938cf..cd735bfe 100644
--- a/libtreefs/fsys-getroot.c
+++ b/libtreefs/fsys-getroot.c
@@ -86,7 +86,7 @@ _treefs_s_fsys_getroot (struct treefs_fsys *fsys,
}
}
- mutex_lock (&root->lock);
+ pthread_mutex_lock (&root->lock);
type = treefs_node_type (root);
if (type == S_IFLNK && !(flags & (O_NOLINK | O_NOTRANS)))
diff --git a/libtreefs/fsys-hooks.c b/libtreefs/fsys-hooks.c
index cb7fcfc6..ecff092b 100644
--- a/libtreefs/fsys-hooks.c
+++ b/libtreefs/fsys-hooks.c
@@ -30,11 +30,11 @@
error_t
_treefs_fsys_get_root (struct treefs_fsys *fsys, struct treefs_node **root)
{
- mutex_lock (&fsys->lock);
+ pthread_mutex_lock (&fsys->lock);
*root = fsys->root;
if (*root != NULL)
treefs_node_ref (*root);
- mutex_unlock (&fsys->lock);
+ pthread_mutex_unlock (&fsys->lock);
return *root ? 0 : EOPNOTSUPP;
}
diff --git a/libtreefs/fsys.c b/libtreefs/fsys.c
index 459d0d3b..d6565bb9 100644
--- a/libtreefs/fsys.c
+++ b/libtreefs/fsys.c
@@ -40,7 +40,7 @@ treefs_create_node (struct treefs_fsys *fsys, struct treefs_node **node)
n->hooks = fsys->hooks;
n->children = NULL;
n->u = NULL;
- mutex_init (&n->lock);
+ pthread_mutex_init (&n->lock, NULL);
fshelp_init_trans_link (&n->active_trans);
fshelp_lock_init (&n->lock_box);
@@ -77,7 +77,7 @@ treefs_create_fsys (struct port_bucket *port_bucket,
if (*fsys == NULL)
return ENOMEM;
- mutex_init (&(*fsys)->lock);
+ pthread_mutex_init (&(*fsys)->lock, NULL);
(*fsys)->root = NULL;
(*fsys)->underlying_port = MACH_PORT_NULL;
diff --git a/libtreefs/trans-help.c b/libtreefs/trans-help.c
index b28e93e1..7d3841c0 100644
--- a/libtreefs/trans-help.c
+++ b/libtreefs/trans-help.c
@@ -40,21 +40,21 @@ treefs_node_get_active_trans (struct treefs_node *node,
/* Fill in dir_port */
void make_dir_port ()
{
- mutex_lock (&dir->lock);
+ pthread_mutex_lock (&dir->lock);
*dir_port = treefs_node_make_right (dir, 0, parent_port, 0);
mach_port_insert_right (mach_task_self (),
*dir_port, *dir_port, MACH_MSG_TYPE_MAKE_SEND);
- mutex_unlock (&dir->lock);
+ pthread_mutex_unlock (&dir->lock);
}
- mutex_lock (&node->active_trans.lock);
+ pthread_mutex_lock (&node->active_trans.lock);
if (node->active_trans.control != MACH_PORT_NULL)
{
mach_port_t control = node->active_trans.control;
mach_port_mod_refs (mach_task_self (), control,
MACH_PORT_RIGHT_SEND, 1);
- mutex_unlock (&node->active_trans.lock);
+ pthread_mutex_unlock (&node->active_trans.lock);
/* Now we have a copy of the translator port that isn't
dependent on the translator lock itself. Relock
@@ -69,12 +69,12 @@ treefs_node_get_active_trans (struct treefs_node *node,
return 0;
}
- mutex_unlock (&node->active_trans.lock);
+ pthread_mutex_unlock (&node->active_trans.lock);
/* If we get here, then we have no active control port.
Check to see if there is a passive translator, and if so
repeat the translator check. */
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
if (!node->istranslated)
{
*control_port = MACH_PORT_NULL;
@@ -89,15 +89,15 @@ treefs_node_get_active_trans (struct treefs_node *node,
}
if (err)
{
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
return err;
}
if (*dir_port == MACH_PORT_NULL)
{
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
make_dir_port ();
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
}
/* Try starting the translator (this unlocks NODE). */
@@ -118,11 +118,11 @@ void
treefs_node_drop_active_trans (struct treefs_node *node,
mach_port_t control_port)
{
- mutex_lock (&node->active_trans.lock);
+ pthread_mutex_lock (&node->active_trans.lock);
/* Only zero the control port if it hasn't changed. */
if (node->active_trans.control == control)
fshelp_translator_drop (&node->active_trans);
- mutex_unlock (&node->active_trans.lock);
+ pthread_mutex_unlock (&node->active_trans.lock);
/* And we're done with this port. */
mach_port_deallocate (mach_task_self (), control_port);
diff --git a/libtreefs/trans-start.c b/libtreefs/trans-start.c
index 2196a8dc..b27c38f4 100644
--- a/libtreefs/trans-start.c
+++ b/libtreefs/trans-start.c
@@ -49,7 +49,7 @@ _treefs_node_start_translator (struct treefs_node *node,
MACH_MSG_TYPE_MAKE_SEND);
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
/* XXXX Change libfshelp so that it take more than 1 uid/gid? */
uid = auth->nuids > 0 ? auth->uids[0] : -1;
diff --git a/libtreefs/treefs.h b/libtreefs/treefs.h
index d8f30e4e..0e49ef51 100644
--- a/libtreefs/treefs.h
+++ b/libtreefs/treefs.h
@@ -24,7 +24,7 @@
#define __TREEFS_H__
#include <errno.h>
-#include <cthreads.h>
+#include <pthread.h>
#include <assert.h>
#include <features.h>
@@ -100,7 +100,7 @@ struct treefs_node
char *passive_trans;
struct lock_box user_lock;
- struct mutex lock;
+ pthread_mutex_t lock;
unsigned refs, weak_refs;
/* Node ops */
@@ -123,7 +123,7 @@ struct treefs_node_list
struct treefs_fsys
{
struct port_info pi;
- struct mutex lock;
+ pthread_mutex_t lock;
/* The root node in this filesystem. */
struct treefs_node *root;
@@ -242,7 +242,7 @@ void treefs_hooks_set (treefs_hook_vector_t hooks,
/* ---------------------------------------------------------------- */
/* Reference counting function (largely stolen from diskfs). */
-extern spin_lock_t treefs_node_refcnt_lock;
+extern pthread_spinlock_t treefs_node_refcnt_lock;
extern void treefs_node_ref (struct treefs_node *node);
extern void treefs_node_release (struct treefs_node *node);
@@ -259,15 +259,15 @@ TREEFS_EI void
treefs_node_ref (struct treefs_node *node)
{
int new_ref;
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
node->refs++;
new_ref = (node->refs == 1);
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
if (new_ref)
{
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
treefs_node_new_refs (node);
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
}
}
@@ -280,14 +280,14 @@ treefs_node_release (struct treefs_node *node)
int tried_drop_weak_refs = 0;
loop:
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
assert (node->refs);
node->refs--;
if (node->refs + node->weak_refs == 0)
treefs_node_drop (node);
else if (node->refs == 0 && !tried_drop_weak_refs)
{
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
treefs_node_lost_refs (node);
if (treefs_node_unlinked (node))
{
@@ -297,9 +297,9 @@ treefs_node_release (struct treefs_node *node)
routine, which might result in further recursive calls to
the ref-counting system. So we have to reacquire our
reference around the call to forestall disaster. */
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
node->refs++;
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
treefs_node_try_dropping_weak_refs (node);
@@ -312,8 +312,8 @@ treefs_node_release (struct treefs_node *node)
}
}
else
- spin_unlock (&treefs_node_refcnt_lock);
- mutex_unlock (&node->lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
+ pthread_mutex_unlock (&node->lock);
}
/* Release a hard reference on NODE. If NODE is locked by anyone, then
@@ -327,61 +327,61 @@ treefs_node_unref (struct treefs_node *node)
int tried_drop_weak_refs = 0;
loop:
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
assert (node->refs);
node->refs--;
if (node->refs + node->weak_refs == 0)
{
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
treefs_node_drop (node);
}
else if (node->refs == 0)
{
- mutex_lock (&node->lock);
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_mutex_lock (&node->lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
treefs_node_lost_refs (node);
if (treefs_node_unlinked(node) && !tried_drop_weak_refs)
{
/* Same issue here as in nodeut; see that for explanation */
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
node->refs++;
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
treefs_node_try_dropping_weak_refs (node);
tried_drop_weak_refs = 1;
/* Now we can drop the reference back... */
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
goto loop;
}
- mutex_unlock (&node->lock);
+ pthread_mutex_unlock (&node->lock);
}
else
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
}
/* Add a weak reference to a node. */
TREEFS_EI void
treefs_node_ref_weak (struct treefs_node *node)
{
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
node->weak_refs++;
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
}
/* Unlock node NODE and release a weak reference */
TREEFS_EI void
treefs_node_release_weak (struct treefs_node *node)
{
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
assert (node->weak_refs);
node->weak_refs--;
if (node->refs + node->weak_refs == 0)
treefs_node_drop (node);
else
{
- spin_unlock (&treefs_node_refcnt_lock);
- mutex_unlock (&node->lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
+ pthread_mutex_unlock (&node->lock);
}
}
@@ -391,16 +391,16 @@ treefs_node_release_weak (struct treefs_node *node)
TREEFS_EI void
treefs_node_unref_weak (struct treefs_node *node)
{
- spin_lock (&treefs_node_refcnt_lock);
+ pthread_spin_lock (&treefs_node_refcnt_lock);
assert (node->weak_refs);
node->weak_refs--;
if (node->refs + node->weak_refs == 0)
{
- mutex_lock (&node->lock);
+ pthread_mutex_lock (&node->lock);
treefs_node_drop (node);
}
else
- spin_unlock (&treefs_node_refcnt_lock);
+ pthread_spin_unlock (&treefs_node_refcnt_lock);
}
#endif /* Use extern inlines. */