PPP synchronous tty: convert dead_sem to completion
Subsystems (2)
PATCH 1/1 PPP synchronous tty: convert dead_sem to completion
PPP synchronous tty channel driver: convert the semaphore dead_sem to a completion
--
drivers/net/ppp_synctty.c +5 -5
@@ -42,9 +42,9 @@#include <linux/if_ppp.h> #include <linux/ppp_channel.h> #include <linux/spinlock.h> +#include <linux/completion.h> #include <linux/init.h> #include <asm/uaccess.h> -#include <asm/semaphore.h> #define PPP_VERSION "2.4.2"
@@ -70,7 +70,7 @@ struct syncppp {struct tasklet_struct tsk;atomic_t refcnt; -struct semaphore dead_sem; +struct completion dead_cmp;struct ppp_channel chan;/* interface to generic ppp layer */ };
@@ -195,7 +195,7 @@ static struct syncppp *sp_get(struct tty_struct *tty)static void sp_put (struct syncppp *ap) {if (atomic_dec_and_test (&ap->refcnt)) -up (&ap->dead_sem); +complete (&ap->dead_cmp); }/*
@@ -225,7 +225,7 @@ ppp_sync_open(struct tty_struct *tty)tasklet_init (&ap->tsk, ppp_sync_process, (unsigned long ) ap);atomic_set (&ap->refcnt,1 ); -init_MUTEX_LOCKED (&ap->dead_sem); +init_completion (&ap->dead_cmp); ap->chan.private = ap; ap->chan.ops = &sync_ops;
@@ -273,7 +273,7 @@ ppp_sync_close(struct tty_struct *tty)* by the time it returns. */ if (!atomic_dec_and_test (&ap->refcnt)) -down (&ap->dead_sem); +wait_for_completion (&ap->dead_cmp);tasklet_kill (&ap->tsk);ppp_unregister_channel (&ap->chan);
Signature · 12 lines
Matthias Kaehlcke
Linux System Developer
Barcelona
In itself, homosexuality is as limiting as heterosexuality: the
ideal should be to be capable of loving a woman or a man; either,
a human being, without feeling fear, restraint, or obligation
(Simone de Beauvoir)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-Quoted 4 lines · Matthias Kaehlcke
PPP synchronous tty channel driver: convert the semaphore
dead_semto a completionSigned-off-by Matthias Kaehlcke <[email protected]>
Excuse my ignorance please, but why is this a good idea? Should we not record the reason for changes?
El Sun, Dec 09, 2007 at 12:04:48PM -0500 Charlie Brady ha dit:
Quoted 10 lines · Matthias Kaehlcke
Quoted 5 lines
PPP synchronous tty channel driver: convert the semaphore
dead_semto a completionSigned-off-by Matthias Kaehlcke <[email protected]>Excuse my ignorance please, but why is this a good idea? Should we not record the reason for changes?
Semaphores can be used to signal completion of a job, but aren't the optimal way to do so. According to LDD3 semaphores are optimized for the 'available' case and performance suffers when using them as completion.
It is also clearer to use each synchronization mechanism according to its purpose, i.e. semaphores for protection of critical sections and completions for signalling that a job is done.
Signature · 11 lines
Matthias Kaehlcke
Linux System Developer
Barcelona
You can't separate peace from freedom because no
one can be at peace unless he has his freedom
(Malcolm X)
.''`.
using free software / Debian GNU/Linux | http://debian.org : :' :
`. `'`
gpg --keyserver pgp.mit.edu --recv-keys 47D8E5D4 `-