Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
42a73203
Commit
42a73203
authored
Nov 30, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Export the wine server functions from ntdll.
parent
a896531f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
39 deletions
+28
-39
ntdll.spec
dlls/ntdll/ntdll.spec
+5
-0
server.h
include/server.h
+11
-29
client.c
scheduler/client.c
+12
-10
No files found.
dlls/ntdll/ntdll.spec
View file @
42a73203
...
...
@@ -1026,3 +1026,8 @@ debug_channels (aspi atom cdrom console ddraw debug delayhlp dll dosfs dosmem
# Command-line
@ cdecl __wine_get_main_args(ptr) __wine_get_main_args
# Server interface
@ cdecl -norelay wine_server_call(long) wine_server_call
@ cdecl -norelay wine_server_alloc_req(long long) wine_server_alloc_req
@ cdecl -norelay __wine_server_exception_handler(ptr ptr ptr ptr) __wine_server_exception_handler
include/server.h
View file @
42a73203
...
...
@@ -1616,12 +1616,16 @@ struct server_buffer_info
/* client communication functions */
extern
unsigned
int
server_call_noerr
(
enum
request
req
);
extern
unsigned
int
wine_server_call
(
enum
request
req
);
extern
unsigned
int
server_call_fd
(
enum
request
req
,
int
fd_out
,
int
*
fd_in
);
extern
void
server_protocol_error
(
const
char
*
err
,
...
)
WINE_NORETURN
;
extern
void
*
server_alloc_req
(
size_t
fixed_size
,
size_t
var_size
);
extern
void
*
wine_
server_alloc_req
(
size_t
fixed_size
,
size_t
var_size
);
extern
const
char
*
get_config_dir
(
void
);
/* compatibility macros */
#define server_alloc_req(f,v) wine_server_alloc_req(f,v)
#define server_call_noerr(req) wine_server_call(req)
/* get a pointer to the request buffer */
static
inline
void
WINE_UNUSED
*
get_req_buffer
(
void
)
{
...
...
@@ -1635,35 +1639,13 @@ static inline int WINE_UNUSED server_remaining( const void *ptr )
}
/* do a server call and set the last error code */
static
inline
int
server_call
(
enum
request
req
)
inline
static
unsigned
int
server_call
(
enum
request
req
)
{
unsigned
int
res
=
server_call_noerr
(
req
);
unsigned
int
res
=
wine_server_call
(
req
);
if
(
res
)
SetLastError
(
RtlNtStatusToDosError
(
res
)
);
return
res
;
}
/* copy a Unicode string to the server buffer */
static
inline
void
server_strcpyW
(
WCHAR
*
dst
,
const
WCHAR
*
src
)
{
if
(
src
)
{
WCHAR
*
end
=
(
WCHAR
*
)
NtCurrentTeb
()
->
buffer_info
-
1
;
while
((
dst
<
end
)
&&
*
src
)
*
dst
++
=
*
src
++
;
}
*
dst
=
0
;
}
/* copy and convert an ASCII string to the server buffer */
static
inline
void
server_strcpyAtoW
(
WCHAR
*
dst
,
const
char
*
src
)
{
if
(
src
)
{
WCHAR
*
end
=
(
WCHAR
*
)
NtCurrentTeb
()
->
buffer_info
-
1
;
while
((
dst
<
end
)
&&
*
src
)
*
dst
++
=
(
WCHAR
)(
unsigned
char
)
*
src
++
;
}
*
dst
=
0
;
}
/* get a pointer to the variable part of the request */
inline
static
void
*
server_data_ptr
(
const
void
*
req
)
{
...
...
@@ -1679,8 +1661,8 @@ inline static size_t server_data_size( const void *req )
/* exception support for server calls */
extern
DWORD
server_exception_handler
(
PEXCEPTION_RECORD
record
,
EXCEPTION_FRAME
*
frame
,
CONTEXT
*
context
,
EXCEPTION_FRAME
**
pdispatcher
);
extern
DWORD
__wine_
server_exception_handler
(
PEXCEPTION_RECORD
record
,
EXCEPTION_FRAME
*
frame
,
CONTEXT
*
context
,
EXCEPTION_FRAME
**
pdispatcher
);
struct
__server_exception_frame
{
...
...
@@ -1691,7 +1673,7 @@ struct __server_exception_frame
#define SERVER_START_REQ \
do { \
struct __server_exception_frame __f; \
__f.frame.Handler = server_exception_handler; \
__f.frame.Handler =
__wine_
server_exception_handler; \
__f.info = *NtCurrentTeb()->buffer_info; \
__wine_push_frame( &__f.frame ); \
do {
...
...
scheduler/client.c
View file @
42a73203
...
...
@@ -46,6 +46,8 @@
#define SERVERDIR "/wineserver-"
/* server socket directory (hostname appended) */
#define SOCKETNAME "socket"
/* name of the socket file */
#undef server_alloc_req
/* data structure used to pass an fd with sendmsg/recvmsg */
struct
cmsg_fd
{
...
...
@@ -112,10 +114,10 @@ static void server_perror( const char *err )
/***********************************************************************
* server_exception_handler
*
__wine_
server_exception_handler
*/
DWORD
server_exception_handler
(
PEXCEPTION_RECORD
record
,
EXCEPTION_FRAME
*
frame
,
CONTEXT
*
context
,
EXCEPTION_FRAME
**
pdispatcher
)
DWORD
__wine_
server_exception_handler
(
PEXCEPTION_RECORD
record
,
EXCEPTION_FRAME
*
frame
,
CONTEXT
*
context
,
EXCEPTION_FRAME
**
pdispatcher
)
{
struct
__server_exception_frame
*
server_frame
=
(
struct
__server_exception_frame
*
)
frame
;
if
((
record
->
ExceptionFlags
&
(
EH_UNWINDING
|
EH_EXIT_UNWIND
)))
...
...
@@ -125,9 +127,9 @@ DWORD server_exception_handler( PEXCEPTION_RECORD record, EXCEPTION_FRAME *frame
/***********************************************************************
* server_alloc_req
*
wine_
server_alloc_req
*/
void
*
server_alloc_req
(
size_t
fixed_size
,
size_t
var_size
)
void
*
wine_
server_alloc_req
(
size_t
fixed_size
,
size_t
var_size
)
{
unsigned
int
pos
=
NtCurrentTeb
()
->
buffer_info
->
cur_pos
;
union
generic_request
*
req
=
(
union
generic_request
*
)((
char
*
)
NtCurrentTeb
()
->
buffer
+
pos
);
...
...
@@ -287,11 +289,11 @@ static void wait_reply_fd( int *fd )
/***********************************************************************
*
server_call_noerr
*
wine_server_call
*
* Perform a server call.
*/
unsigned
int
server_call_noerr
(
enum
request
req
)
unsigned
int
wine_server_call
(
enum
request
req
)
{
void
*
req_ptr
=
get_req_buffer
();
send_request
(
req
,
req_ptr
);
...
...
@@ -586,11 +588,11 @@ int CLIENT_InitThread(void)
SERVER_START_REQ
{
struct
init_thread_request
*
req
=
server_alloc_req
(
sizeof
(
*
req
),
0
);
struct
init_thread_request
*
req
=
wine_
server_alloc_req
(
sizeof
(
*
req
),
0
);
req
->
unix_pid
=
getpid
();
req
->
teb
=
teb
;
req
->
entry
=
teb
->
entry_point
;
ret
=
server_call_noerr
(
REQ_INIT_THREAD
);
ret
=
wine_server_call
(
REQ_INIT_THREAD
);
}
SERVER_END_REQ
;
return
ret
;
...
...
@@ -606,7 +608,7 @@ int CLIENT_BootDone( int debug_level )
int
ret
;
SERVER_START_REQ
{
struct
boot_done_request
*
req
=
server_alloc_req
(
sizeof
(
*
req
),
0
);
struct
boot_done_request
*
req
=
wine_
server_alloc_req
(
sizeof
(
*
req
),
0
);
req
->
debug_level
=
debug_level
;
ret
=
server_call
(
REQ_BOOT_DONE
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment