Added server-side file mapping object support.
diff --git a/include/server/object.h b/include/server/object.h
index fc34f16..67320e2 100644
--- a/include/server/object.h
+++ b/include/server/object.h
@@ -20,6 +20,7 @@
struct object;
struct object_name;
struct thread;
+struct file;
struct wait_queue_entry;
struct object_ops
@@ -27,7 +28,7 @@
/* dump the object (for debugging) */
void (*dump)(struct object *,int);
/* add a thread to the object wait queue */
- void (*add_queue)(struct object *,struct wait_queue_entry *);
+ int (*add_queue)(struct object *,struct wait_queue_entry *);
/* remove a thread from the object wait queue */
void (*remove_queue)(struct object *,struct wait_queue_entry *);
/* is object signaled? */
@@ -63,6 +64,7 @@
extern struct object *grab_object( void *obj );
extern void release_object( void *obj );
extern struct object *find_object( const char *name );
+extern int no_add_queue( struct object *obj, struct wait_queue_entry *entry );
extern int no_satisfied( struct object *obj, struct thread *thread );
extern int no_read_fd( struct object *obj );
extern int no_write_fd( struct object *obj );
@@ -171,7 +173,9 @@
/* file functions */
extern struct object *create_file( int fd );
-extern int file_get_unix_handle( int handle, unsigned int access );
+extern struct file *get_file_obj( struct process *process, int handle,
+ unsigned int access );
+extern int file_get_mmap_fd( struct file *file );
extern int set_file_pointer( int handle, int *low, int *high, int whence );
extern int truncate_file( int handle );
extern int get_file_info( int handle, struct get_file_info_reply *reply );
@@ -194,6 +198,13 @@
extern struct object *create_change_notification( int subtree, int filter );
+/* file mapping functions */
+extern struct object *create_mapping( int size_high, int size_low, int protect,
+ int handle, const char *name );
+extern int open_mapping( unsigned int access, int inherit, const char *name );
+extern int get_mapping_info( int handle, struct get_mapping_info_reply *reply );
+
+
extern int debug_level;
#endif /* __WINE_SERVER_OBJECT_H */
diff --git a/include/server/request.h b/include/server/request.h
index 993ae6e..40cee6f 100644
--- a/include/server/request.h
+++ b/include/server/request.h
@@ -24,7 +24,6 @@
REQ_RELEASE_SEMAPHORE,
REQ_OPEN_NAMED_OBJ,
REQ_CREATE_FILE,
- REQ_GET_UNIX_HANDLE,
REQ_GET_READ_FD,
REQ_GET_WRITE_FD,
REQ_SET_FILE_POINTER,
@@ -35,6 +34,8 @@
REQ_CREATE_CONSOLE,
REQ_SET_CONSOLE_FD,
REQ_CREATE_CHANGE_NOTIFICATION,
+ REQ_CREATE_MAPPING,
+ REQ_GET_MAPPING_INFO,
REQ_NB_REQUESTS
};
@@ -62,7 +63,6 @@
DECL_HANDLER(release_semaphore);
DECL_HANDLER(open_named_obj);
DECL_HANDLER(create_file);
-DECL_HANDLER(get_unix_handle);
DECL_HANDLER(get_read_fd);
DECL_HANDLER(get_write_fd);
DECL_HANDLER(set_file_pointer);
@@ -73,6 +73,8 @@
DECL_HANDLER(create_console);
DECL_HANDLER(set_console_fd);
DECL_HANDLER(create_change_notification);
+DECL_HANDLER(create_mapping);
+DECL_HANDLER(get_mapping_info);
static const struct handler {
void (*handler)();
@@ -97,7 +99,6 @@
{ (void(*)())req_release_semaphore, sizeof(struct release_semaphore_request) },
{ (void(*)())req_open_named_obj, sizeof(struct open_named_obj_request) },
{ (void(*)())req_create_file, sizeof(struct create_file_request) },
- { (void(*)())req_get_unix_handle, sizeof(struct get_unix_handle_request) },
{ (void(*)())req_get_read_fd, sizeof(struct get_read_fd_request) },
{ (void(*)())req_get_write_fd, sizeof(struct get_write_fd_request) },
{ (void(*)())req_set_file_pointer, sizeof(struct set_file_pointer_request) },
@@ -108,6 +109,8 @@
{ (void(*)())req_create_console, sizeof(struct create_console_request) },
{ (void(*)())req_set_console_fd, sizeof(struct set_console_fd_request) },
{ (void(*)())req_create_change_notification, sizeof(struct create_change_notification_request) },
+ { (void(*)())req_create_mapping, sizeof(struct create_mapping_request) },
+ { (void(*)())req_get_mapping_info, sizeof(struct get_mapping_info_request) },
};
#endif /* WANT_REQUEST_HANDLERS */
diff --git a/include/server/thread.h b/include/server/thread.h
index 9931301..1977152 100644
--- a/include/server/thread.h
+++ b/include/server/thread.h
@@ -52,7 +52,7 @@
struct get_thread_info_reply *reply );
extern int send_reply( struct thread *thread, int pass_fd,
int n, ... /* arg_1, len_1, ..., arg_n, len_n */ );
-extern void add_queue( struct object *obj, struct wait_queue_entry *entry );
+extern int add_queue( struct object *obj, struct wait_queue_entry *entry );
extern void remove_queue( struct object *obj, struct wait_queue_entry *entry );
extern void kill_thread( struct thread *thread, int exit_code );
extern void thread_killed( struct thread *thread, int exit_code );