summaryrefslogtreecommitdiff
path: root/source3/smbd/oplock_linux.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-01-08 12:03:45 +0100
committerStefan Metzmacher <metze@samba.org>2009-01-08 12:22:21 +0100
commit3dde0cbb769b92d922be13677ad076cae9b6a693 (patch)
tree78594e39465f545c7252eaef7bc469ceb80c4d71 /source3/smbd/oplock_linux.c
parentdefb574c2573a73335a2735e89e4cb5f96c4c069 (diff)
downloadsamba-3dde0cbb769b92d922be13677ad076cae9b6a693.tar.gz
samba-3dde0cbb769b92d922be13677ad076cae9b6a693.tar.bz2
samba-3dde0cbb769b92d922be13677ad076cae9b6a693.zip
s3:smbd: move all globals and static variables in globals.[ch]
The goal is to move all this variables into a big context structure. metze
Diffstat (limited to 'source3/smbd/oplock_linux.c')
-rw-r--r--source3/smbd/oplock_linux.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/source3/smbd/oplock_linux.c b/source3/smbd/oplock_linux.c
index 08df228f8f..cb37a81fb9 100644
--- a/source3/smbd/oplock_linux.c
+++ b/source3/smbd/oplock_linux.c
@@ -19,13 +19,10 @@
#define DBGC_CLASS DBGC_LOCKING
#include "includes.h"
+#include "smbd/globals.h"
#if HAVE_KERNEL_OPLOCKS_LINUX
-static SIG_ATOMIC_T signals_received;
-#define FD_PENDING_SIZE 100
-static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
-
#ifndef F_SETLEASE
#define F_SETLEASE 1024
#endif
@@ -52,9 +49,9 @@ static SIG_ATOMIC_T fd_pending_array[FD_PENDING_SIZE];
static void signal_handler(int sig, siginfo_t *info, void *unused)
{
- if (signals_received < FD_PENDING_SIZE - 1) {
- fd_pending_array[signals_received] = (SIG_ATOMIC_T)info->si_fd;
- signals_received++;
+ if (oplock_signals_received < FD_PENDING_SIZE - 1) {
+ fd_pending_array[oplock_signals_received] = (SIG_ATOMIC_T)info->si_fd;
+ oplock_signals_received++;
} /* Else signal is lost. */
sys_select_signal(RT_SIGNAL_LEASE);
}
@@ -113,11 +110,11 @@ static files_struct *linux_oplock_receive_message(fd_set *fds)
fd = fd_pending_array[0];
fsp = file_find_fd(fd);
fd_pending_array[0] = (SIG_ATOMIC_T)-1;
- if (signals_received > 1)
+ if (oplock_signals_received > 1)
memmove(CONST_DISCARD(void *, &fd_pending_array[0]),
CONST_DISCARD(void *, &fd_pending_array[1]),
- sizeof(SIG_ATOMIC_T)*(signals_received-1));
- signals_received--;
+ sizeof(SIG_ATOMIC_T)*(oplock_signals_received-1));
+ oplock_signals_received--;
/* now we can receive more signals */
BlockSignals(False, RT_SIGNAL_LEASE);
@@ -186,7 +183,7 @@ static void linux_release_kernel_oplock(files_struct *fsp)
static bool linux_oplock_msg_waiting(fd_set *fds)
{
- return signals_received != 0;
+ return oplock_signals_received != 0;
}
/****************************************************************************
@@ -210,7 +207,6 @@ static bool linux_oplocks_available(void)
struct kernel_oplocks *linux_init_kernel_oplocks(void)
{
- static struct kernel_oplocks koplocks;
struct sigaction act;
if (!linux_oplocks_available()) {
@@ -229,18 +225,18 @@ struct kernel_oplocks *linux_init_kernel_oplocks(void)
return NULL;
}
- koplocks.receive_message = linux_oplock_receive_message;
- koplocks.set_oplock = linux_set_kernel_oplock;
- koplocks.release_oplock = linux_release_kernel_oplock;
- koplocks.msg_waiting = linux_oplock_msg_waiting;
- koplocks.notification_fd = -1;
+ linux_koplocks.receive_message = linux_oplock_receive_message;
+ linux_koplocks.set_oplock = linux_set_kernel_oplock;
+ linux_koplocks.release_oplock = linux_release_kernel_oplock;
+ linux_koplocks.msg_waiting = linux_oplock_msg_waiting;
+ linux_koplocks.notification_fd = -1;
/* the signal can start off blocked due to a bug in bash */
BlockSignals(False, RT_SIGNAL_LEASE);
DEBUG(3,("Linux kernel oplocks enabled\n"));
- return &koplocks;
+ return &linux_koplocks;
}
#else
void oplock_linux_dummy(void);