From 9f27e226d0e323b9a4304c21c4d83677409f06c0 Mon Sep 17 00:00:00 2001 From: Sam Hartman Date: Mon, 28 Jan 2002 00:53:20 +0000 Subject: [PATCH] Merge changes from 1.2.3rc1 to 1.2.3rc3 --- src/afs/LINUX/osi_misc.c | 22 +++++++++++++++++++++- src/afs/afs_call.c | 11 ++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/afs/LINUX/osi_misc.c b/src/afs/LINUX/osi_misc.c index 3fd2b93b9..28ff16fbc 100644 --- a/src/afs/LINUX/osi_misc.c +++ b/src/afs/LINUX/osi_misc.c @@ -14,7 +14,7 @@ #include #include "../afs/param.h" -RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_misc.c,v 1.7 2001/09/11 15:47:37 hartmans Exp $"); +RCSID("$Header: /tmp/cvstemp/openafs/src/afs/LINUX/osi_misc.c,v 1.8 2002/01/28 00:53:20 hartmans Exp $"); #include "../afs/sysincludes.h" #include "../afs/afsincludes.h" @@ -427,3 +427,23 @@ void check_bad_parent(struct dentry *dp) return; } + +struct task_struct *rxk_ListenerTask; + +void osi_linux_mask() { + spin_lock_irq(¤t->sigmask_lock); + sigfillset(¤t->blocked); + recalc_sigpending(current); + spin_unlock_irq(¤t->sigmask_lock); +} + +void osi_linux_unmask() { + spin_lock_irq(&rxk_ListenerTask->sigmask_lock); + sigemptyset(&rxk_ListenerTask->blocked); + recalc_sigpending(rxk_ListenerTask); + spin_unlock_irq(&rxk_ListenerTask->sigmask_lock); +} + +void osi_linux_rxkreg() { + rxk_ListenerTask = current; +} diff --git a/src/afs/afs_call.c b/src/afs/afs_call.c index cda14dcb0..54e80dc59 100644 --- a/src/afs/afs_call.c +++ b/src/afs/afs_call.c @@ -10,7 +10,7 @@ #include #include "../afs/param.h" -RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_call.c,v 1.9 2002/01/22 20:29:43 hartmans Exp $"); +RCSID("$Header: /tmp/cvstemp/openafs/src/afs/afs_call.c,v 1.10 2002/01/28 00:53:19 hartmans Exp $"); #include "../afs/sysincludes.h" /* Standard vendor system headers */ #include "../afs/afsincludes.h" /* Afs-based standard headers */ @@ -191,6 +191,9 @@ long parm, parm2, parm3, parm4, parm5, parm6; afs_osi_Invisible(); afs_RX_Running = 2; afs_osi_Wakeup(&afs_RX_Running); +#ifndef UKERNEL + afs_osi_RxkRegister(); +#endif rxk_Listener(); } #ifdef AFS_SGI_ENV @@ -637,6 +640,9 @@ long parm, parm2, parm3, parm4, parm5, parm6; afs_int32 *kmsg = afs_osi_Alloc(kmsgLen); char *cellname = afs_osi_Alloc(cellLen); +#ifndef UKERNEL + afs_osi_MaskSignals(); +#endif AFS_COPYIN((afs_int32 *)parm2, cellname, cellLen, code); AFS_COPYIN((afs_int32 *)parm3, kmsg, kmsgLen, code); if (!code) { @@ -1254,6 +1260,9 @@ afs_shutdown() afs_osi_Sleep(&afs_termState); #if defined(RXK_LISTENER_ENV) afs_warn("RxListener... "); +#ifndef UKERNEL + afs_osi_UnmaskRxkSignals(); +#endif /* cancel rx listener */ osi_StopListener(); /* This closes rx_socket. */ while (afs_termState == AFSOP_STOP_RXK_LISTENER) -- 2.39.5