Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
a3e73fc6
Commit
a3e73fc6
authored
Dec 23, 2004
by
wax@mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/wax/mysql/mysql-4.1
into mysql.com:/home/wax/mysql/mysql-4.1smemory
parents
ed3e1bb0
0c8a78cc
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
50 additions
and
12 deletions
+50
-12
include/violite.h
include/violite.h
+3
-1
sql-common/client.c
sql-common/client.c
+11
-1
sql/mysqld.cc
sql/mysqld.cc
+10
-1
vio/vio.c
vio/vio.c
+3
-1
vio/viosocket.c
vio/viosocket.c
+23
-8
No files found.
include/violite.h
View file @
a3e73fc6
...
@@ -45,7 +45,8 @@ Vio* vio_new_win32shared_memory(NET *net,HANDLE handle_file_map,
...
@@ -45,7 +45,8 @@ Vio* vio_new_win32shared_memory(NET *net,HANDLE handle_file_map,
HANDLE
event_server_wrote
,
HANDLE
event_server_wrote
,
HANDLE
event_server_read
,
HANDLE
event_server_read
,
HANDLE
event_client_wrote
,
HANDLE
event_client_wrote
,
HANDLE
event_client_read
);
HANDLE
event_client_read
,
HANDLE
event_conn_closed
);
int
vio_read_pipe
(
Vio
*
vio
,
gptr
buf
,
int
size
);
int
vio_read_pipe
(
Vio
*
vio
,
gptr
buf
,
int
size
);
int
vio_write_pipe
(
Vio
*
vio
,
const
gptr
buf
,
int
size
);
int
vio_write_pipe
(
Vio
*
vio
,
const
gptr
buf
,
int
size
);
int
vio_close_pipe
(
Vio
*
vio
);
int
vio_close_pipe
(
Vio
*
vio
);
...
@@ -197,6 +198,7 @@ struct st_vio
...
@@ -197,6 +198,7 @@ struct st_vio
HANDLE
event_server_read
;
HANDLE
event_server_read
;
HANDLE
event_client_wrote
;
HANDLE
event_client_wrote
;
HANDLE
event_client_read
;
HANDLE
event_client_read
;
HANDLE
event_conn_closed
;
long
shared_memory_remain
;
long
shared_memory_remain
;
char
*
shared_memory_pos
;
char
*
shared_memory_pos
;
NET
*
net
;
NET
*
net
;
...
...
sql-common/client.c
View file @
a3e73fc6
...
@@ -396,6 +396,7 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
...
@@ -396,6 +396,7 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
HANDLE
event_server_read
=
NULL
;
HANDLE
event_server_read
=
NULL
;
HANDLE
event_client_wrote
=
NULL
;
HANDLE
event_client_wrote
=
NULL
;
HANDLE
event_client_read
=
NULL
;
HANDLE
event_client_read
=
NULL
;
HANDLE
event_conn_closed
=
NULL
;
HANDLE
handle_file_map
=
NULL
;
HANDLE
handle_file_map
=
NULL
;
ulong
connect_number
;
ulong
connect_number
;
char
connect_number_char
[
22
],
*
p
;
char
connect_number_char
[
22
],
*
p
;
...
@@ -508,6 +509,13 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
...
@@ -508,6 +509,13 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout)
error_allow
=
CR_SHARED_MEMORY_EVENT_ERROR
;
error_allow
=
CR_SHARED_MEMORY_EVENT_ERROR
;
goto
err2
;
goto
err2
;
}
}
strmov
(
suffix_pos
,
"CONNECTION_CLOSED"
);
if
((
event_conn_closed
=
OpenEvent
(
EVENT_ALL_ACCESS
,
FALSE
,
tmp
))
==
NULL
)
{
error_allow
=
CR_SHARED_MEMORY_EVENT_ERROR
;
goto
err2
;
}
/*
/*
Set event that server should send data
Set event that server should send data
*/
*/
...
@@ -519,7 +527,7 @@ err2:
...
@@ -519,7 +527,7 @@ err2:
net
->
vio
=
vio_new_win32shared_memory
(
net
,
handle_file_map
,
handle_map
,
net
->
vio
=
vio_new_win32shared_memory
(
net
,
handle_file_map
,
handle_map
,
event_server_wrote
,
event_server_wrote
,
event_server_read
,
event_client_wrote
,
event_server_read
,
event_client_wrote
,
event_client_read
);
event_client_read
,
event_conn_closed
);
}
}
else
else
{
{
...
@@ -532,6 +540,8 @@ err2:
...
@@ -532,6 +540,8 @@ err2:
CloseHandle
(
event_client_read
);
CloseHandle
(
event_client_read
);
if
(
event_client_wrote
)
if
(
event_client_wrote
)
CloseHandle
(
event_client_wrote
);
CloseHandle
(
event_client_wrote
);
if
(
event_conn_closed
)
CloseHandle
(
event_conn_closed
);
if
(
handle_map
)
if
(
handle_map
)
UnmapViewOfFile
(
handle_map
);
UnmapViewOfFile
(
handle_map
);
if
(
handle_file_map
)
if
(
handle_file_map
)
...
...
sql/mysqld.cc
View file @
a3e73fc6
...
@@ -3822,6 +3822,7 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
...
@@ -3822,6 +3822,7 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
HANDLE
event_client_read
=
0
;
// for transfer data server <-> client
HANDLE
event_client_read
=
0
;
// for transfer data server <-> client
HANDLE
event_server_wrote
=
0
;
HANDLE
event_server_wrote
=
0
;
HANDLE
event_server_read
=
0
;
HANDLE
event_server_read
=
0
;
HANDLE
event_conn_closed
=
0
;
THD
*
thd
=
0
;
THD
*
thd
=
0
;
p
=
int10_to_str
(
connect_number
,
connect_number_char
,
10
);
p
=
int10_to_str
(
connect_number
,
connect_number_char
,
10
);
...
@@ -3875,6 +3876,12 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
...
@@ -3875,6 +3876,12 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
errmsg
=
"Could not create server write event"
;
errmsg
=
"Could not create server write event"
;
goto
errorconn
;
goto
errorconn
;
}
}
strmov
(
suffix_pos
,
"CONNECTION_CLOSED"
);
if
((
event_conn_closed
=
CreateEvent
(
0
,
TRUE
,
FALSE
,
tmp
))
==
0
)
{
errmsg
=
"Could not create closed connection event"
;
goto
errorconn
;
}
if
(
abort_loop
)
if
(
abort_loop
)
goto
errorconn
;
goto
errorconn
;
if
(
!
(
thd
=
new
THD
))
if
(
!
(
thd
=
new
THD
))
...
@@ -3898,7 +3905,8 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
...
@@ -3898,7 +3905,8 @@ pthread_handler_decl(handle_connections_shared_memory,arg)
event_client_wrote
,
event_client_wrote
,
event_client_read
,
event_client_read
,
event_server_wrote
,
event_server_wrote
,
event_server_read
))
||
event_server_read
,
event_conn_closed
))
||
my_net_init
(
&
thd
->
net
,
thd
->
net
.
vio
))
my_net_init
(
&
thd
->
net
,
thd
->
net
.
vio
))
{
{
close_connection
(
thd
,
ER_OUT_OF_RESOURCES
,
1
);
close_connection
(
thd
,
ER_OUT_OF_RESOURCES
,
1
);
...
@@ -3925,6 +3933,7 @@ errorconn:
...
@@ -3925,6 +3933,7 @@ errorconn:
if
(
event_server_read
)
CloseHandle
(
event_server_read
);
if
(
event_server_read
)
CloseHandle
(
event_server_read
);
if
(
event_client_wrote
)
CloseHandle
(
event_client_wrote
);
if
(
event_client_wrote
)
CloseHandle
(
event_client_wrote
);
if
(
event_client_read
)
CloseHandle
(
event_client_read
);
if
(
event_client_read
)
CloseHandle
(
event_client_read
);
if
(
event_conn_closed
)
CloseHandle
(
event_conn_closed
);
delete
thd
;
delete
thd
;
}
}
...
...
vio/vio.c
View file @
a3e73fc6
...
@@ -171,7 +171,8 @@ Vio *vio_new_win32pipe(HANDLE hPipe)
...
@@ -171,7 +171,8 @@ Vio *vio_new_win32pipe(HANDLE hPipe)
#ifdef HAVE_SMEM
#ifdef HAVE_SMEM
Vio
*
vio_new_win32shared_memory
(
NET
*
net
,
HANDLE
handle_file_map
,
HANDLE
handle_map
,
Vio
*
vio_new_win32shared_memory
(
NET
*
net
,
HANDLE
handle_file_map
,
HANDLE
handle_map
,
HANDLE
event_server_wrote
,
HANDLE
event_server_read
,
HANDLE
event_server_wrote
,
HANDLE
event_server_read
,
HANDLE
event_client_wrote
,
HANDLE
event_client_read
)
HANDLE
event_client_wrote
,
HANDLE
event_client_read
,
HANDLE
event_conn_closed
)
{
{
Vio
*
vio
;
Vio
*
vio
;
DBUG_ENTER
(
"vio_new_win32shared_memory"
);
DBUG_ENTER
(
"vio_new_win32shared_memory"
);
...
@@ -184,6 +185,7 @@ Vio *vio_new_win32shared_memory(NET *net,HANDLE handle_file_map, HANDLE handle_m
...
@@ -184,6 +185,7 @@ Vio *vio_new_win32shared_memory(NET *net,HANDLE handle_file_map, HANDLE handle_m
vio
->
event_server_read
=
event_server_read
;
vio
->
event_server_read
=
event_server_read
;
vio
->
event_client_wrote
=
event_client_wrote
;
vio
->
event_client_wrote
=
event_client_wrote
;
vio
->
event_client_read
=
event_client_read
;
vio
->
event_client_read
=
event_client_read
;
vio
->
event_conn_closed
=
event_conn_closed
;
vio
->
shared_memory_remain
=
0
;
vio
->
shared_memory_remain
=
0
;
vio
->
shared_memory_pos
=
handle_map
;
vio
->
shared_memory_pos
=
handle_map
;
vio
->
net
=
net
;
vio
->
net
=
net
;
...
...
vio/viosocket.c
View file @
a3e73fc6
...
@@ -381,10 +381,21 @@ int vio_read_shared_memory(Vio * vio, gptr buf, int size)
...
@@ -381,10 +381,21 @@ int vio_read_shared_memory(Vio * vio, gptr buf, int size)
{
{
if
(
vio
->
shared_memory_remain
==
0
)
if
(
vio
->
shared_memory_remain
==
0
)
{
{
if
(
WaitForSingleObject
(
vio
->
event_server_wrote
,
vio
->
net
->
read_timeout
*
1000
)
!=
WAIT_OBJECT_0
)
HANDLE
events
[
2
];
events
[
0
]
=
vio
->
event_server_wrote
;
events
[
1
]
=
vio
->
event_conn_closed
;
/*
WaitForMultipleObjects can return next values:
WAIT_OBJECT_0+0 - event from vio->event_server_wrote
WAIT_OBJECT_0+1 - event from vio->event_conn_closed. We can't read anything
WAIT_ABANDONED_0 and WAIT_TIMEOUT - fail. We can't read anything
*/
if
(
WaitForMultipleObjects
(
2
,(
HANDLE
*
)
&
events
,
FALSE
,
vio
->
net
->
read_timeout
*
1000
)
!=
WAIT_OBJECT_0
)
{
{
DBUG_RETURN
(
-
1
);
DBUG_RETURN
(
-
1
);
};
};
vio
->
shared_memory_pos
=
vio
->
handle_map
;
vio
->
shared_memory_pos
=
vio
->
handle_map
;
vio
->
shared_memory_remain
=
uint4korr
((
ulong
*
)
vio
->
shared_memory_pos
);
vio
->
shared_memory_remain
=
uint4korr
((
ulong
*
)
vio
->
shared_memory_pos
);
vio
->
shared_memory_pos
+=
4
;
vio
->
shared_memory_pos
+=
4
;
...
@@ -454,17 +465,21 @@ int vio_close_shared_memory(Vio * vio)
...
@@ -454,17 +465,21 @@ int vio_close_shared_memory(Vio * vio)
{
{
int
r
;
int
r
;
DBUG_ENTER
(
"vio_close_shared_memory"
);
DBUG_ENTER
(
"vio_close_shared_memory"
);
if
(
vio
->
type
!=
VIO_CLOSED
)
{
SetEvent
(
vio
->
event_conn_closed
);
r
=
UnmapViewOfFile
(
vio
->
handle_map
)
||
CloseHandle
(
vio
->
event_server_wrote
)
||
r
=
UnmapViewOfFile
(
vio
->
handle_map
)
||
CloseHandle
(
vio
->
event_server_wrote
)
||
CloseHandle
(
vio
->
event_server_read
)
||
CloseHandle
(
vio
->
event_client_wrote
)
||
CloseHandle
(
vio
->
event_server_read
)
||
CloseHandle
(
vio
->
event_client_wrote
)
||
CloseHandle
(
vio
->
event_client_read
)
||
CloseHandle
(
vio
->
handle_file_map
);
CloseHandle
(
vio
->
event_client_read
)
||
CloseHandle
(
vio
->
handle_file_map
);
if
(
r
)
if
(
!
r
)
{
{
DBUG_PRINT
(
"vio_error"
,
(
"close() failed, error: %d"
,
r
));
DBUG_PRINT
(
"vio_error"
,
(
"close() failed, error: %d"
,
r
));
/* FIXME: error handling (not critical for MySQL) */
/* FIXME: error handling (not critical for MySQL) */
}
}
}
vio
->
type
=
VIO_CLOSED
;
vio
->
type
=
VIO_CLOSED
;
vio
->
sd
=
-
1
;
vio
->
sd
=
-
1
;
DBUG_RETURN
(
r
);
DBUG_RETURN
(
!
r
);
}
}
#endif
/* HAVE_SMEM */
#endif
/* HAVE_SMEM */
#endif
/* __WIN__ */
#endif
/* __WIN__ */
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