summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-01-09 14:02:18 +0100
committerStefan Metzmacher <metze@samba.org>2009-01-22 12:37:29 +0100
commit196028ab7b578526179d4fcff42a5d73ba07ccbb (patch)
tree554ea6ba2d01138fc5f85ac746a8720150fe2cde /source3/include
parent048f8dba141c2f9898aad67e09925f03394a946e (diff)
downloadsamba-196028ab7b578526179d4fcff42a5d73ba07ccbb.tar.gz
samba-196028ab7b578526179d4fcff42a5d73ba07ccbb.tar.bz2
samba-196028ab7b578526179d4fcff42a5d73ba07ccbb.zip
s3:smbd: restructure kernel oplocks code
This converts the irix oplocks code to use a fd event and removes the last special case for file descriptors for the main sys_select(). metze
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/proto.h8
-rw-r--r--source3/include/smb.h19
2 files changed, 17 insertions, 10 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 632f820b24..0c358a0429 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -7026,8 +7026,8 @@ NTSTATUS get_relative_fid_filename(connection_struct *conn,
/* The following definitions come from smbd/oplock.c */
int32 get_number_of_exclusive_open_oplocks(void);
-bool oplock_message_waiting(fd_set *fds);
-void process_kernel_oplocks(struct messaging_context *msg_ctx, fd_set *pfds);
+bool oplock_message_waiting();
+void process_kernel_oplocks(struct messaging_context *msg_ctx);
bool set_file_oplock(files_struct *fsp, int oplock_type);
void release_file_oplock(files_struct *fsp);
bool remove_oplock(files_struct *fsp);
@@ -7041,14 +7041,14 @@ bool init_oplocks(struct messaging_context *msg_ctx);
/* The following definitions come from smbd/oplock_irix.c */
-struct kernel_oplocks *irix_init_kernel_oplocks(void) ;
+struct kernel_oplocks *irix_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ;
/* The following definitions come from smbd/oplock_linux.c */
void linux_set_lease_capability(void);
int linux_set_lease_sighandler(int fd);
int linux_setlease(int fd, int leasetype);
-struct kernel_oplocks *linux_init_kernel_oplocks(void) ;
+struct kernel_oplocks *linux_init_kernel_oplocks(TALLOC_CTX *mem_ctx) ;
/* The following definitions come from smbd/password.c */
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 799ffe1a46..19d2208ada 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1671,14 +1671,21 @@ enum smbd_capability {
LEASE_CAPABILITY
};
+struct kernel_oplocks_ops;
+struct kernel_oplocks {
+ const struct kernel_oplocks_ops *ops;
+ void *private_data;
+};
+
/* if a kernel does support oplocks then a structure of the following
typee is used to describe how to interact with the kernel */
-struct kernel_oplocks {
- files_struct * (*receive_message)(fd_set *fds);
- bool (*set_oplock)(files_struct *fsp, int oplock_type);
- void (*release_oplock)(files_struct *fsp);
- bool (*msg_waiting)(fd_set *fds);
- int notification_fd;
+struct kernel_oplocks_ops {
+ files_struct * (*receive_message)(struct kernel_oplocks *ctx);
+ bool (*set_oplock)(struct kernel_oplocks *ctx,
+ files_struct *fsp, int oplock_type);
+ void (*release_oplock)(struct kernel_oplocks *ctx,
+ files_struct *fsp);
+ bool (*msg_waiting)(struct kernel_oplocks *ctx);
};
#include "smb_macros.h"