Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
1b2d57dc
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1b2d57dc
编写于
8月 07, 2001
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
A small patch to keep postgres working on the latest BeOS.
Cyril VELTER
上级
d8783c51
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
53 addition
and
20 deletion
+53
-20
src/backend/port/beos/support.c
src/backend/port/beos/support.c
+45
-1
src/backend/port/dynloader/beos.c
src/backend/port/dynloader/beos.c
+3
-18
src/include/port/beos.h
src/include/port/beos.h
+5
-1
未找到文件。
src/backend/port/beos/support.c
浏览文件 @
1b2d57dc
...
...
@@ -115,6 +115,22 @@ beos_dl_open(char *filename)
}
}
void
beos_dl_sym
(
image_id
im
,
char
*
symname
,
void
**
fptr
)
{
/* Send command '3' (get symbol) to the support server */
write_port
(
beos_dl_port_in
,
3
,
symname
,
strlen
(
symname
)
+
1
);
write_port
(
beos_dl_port_in
,
im
,
NULL
,
0
);
/* Read sym address */
read_port
(
beos_dl_port_out
,
(
int32
*
)(
fptr
),
NULL
,
0
);
if
(
fptr
==
NULL
)
{
elog
(
NOTICE
,
"loading symbol '%s' failed "
,
symname
);
}
}
status_t
beos_dl_close
(
image_id
im
)
{
...
...
@@ -164,12 +180,13 @@ beos_startup(int argc, char **argv)
* server
*/
read_port
(
port_in
,
&
opcode
,
datas
,
4000
);
switch
(
opcode
)
{
image_id
addon
;
image_info
info_im
;
area_info
info_ar
;
void
*
fpt
;
/* Load Add-On */
case
1
:
...
...
@@ -208,6 +225,33 @@ beos_startup(int argc, char **argv)
write_port
(
port_out
,
unload_add_on
(
*
((
int
*
)
(
datas
))),
NULL
,
0
);
break
;
/* Cleanup and exit */
case
3
:
/* read image Id on the input port */
read_port
(
port_in
,
&
addon
,
NULL
,
0
);
/* Loading symbol */
fpt
=
NULL
;
if
(
get_image_symbol
(
addon
,
datas
,
B_SYMBOL_TYPE_TEXT
,
&
fpt
)
==
B_OK
);
{
/*
* Sometime the loader return B_OK for an inexistant function
* with an invalid address !!! Check that the return address
* is in the image range
*/
get_image_info
(
addon
,
&
info_im
);
if
((
fpt
<
info_im
.
text
)
||
(
fpt
>=
(
info_im
.
text
+
info_im
.
text_size
)))
fpt
=
NULL
;
}
/* Send back fptr of data segment */
write_port
(
port_out
,
(
int32
)(
fpt
),
NULL
,
0
);
break
;
default:
/* Free system resources */
delete_port
(
port_in
);
...
...
src/backend/port/dynloader/beos.c
浏览文件 @
1b2d57dc
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/port/dynloader/Attic/beos.c,v 1.
7 2001/03/22 03:59:42
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/port/dynloader/Attic/beos.c,v 1.
8 2001/08/07 16:56:17
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -49,23 +49,8 @@ pg_dlsym(void *handle, char *funcname)
/* Checking that "Handle" is valid */
if
((
handle
)
&&
((
*
(
int
*
)
(
handle
))
>=
0
))
{
/* Loading symbol */
if
(
get_image_symbol
(
*
((
int
*
)
(
handle
)),
funcname
,
B_SYMBOL_TYPE_TEXT
,
(
void
**
)
&
fpt
)
==
B_OK
);
{
/*
* Sometime the loader return B_OK for an inexistant function
* with an invalid address !!! Check that the return address
* is in the image range
*/
image_info
info
;
get_image_info
(
*
((
int
*
)
(
handle
)),
&
info
);
if
((
fpt
<
info
.
text
)
||
(
fpt
>=
(
info
.
text
+
info
.
text_size
)))
return
NULL
;
return
fpt
;
}
elog
(
NOTICE
,
"loading symbol '%s' failed "
,
funcname
);
beos_dl_sym
(
*
((
int
*
)
(
handle
)),
funcname
,(
void
**
)
&
fpt
);
return
fpt
;
}
elog
(
NOTICE
,
"add-on not loaded correctly"
);
return
NULL
;
...
...
src/include/port/beos.h
浏览文件 @
1b2d57dc
#include <kernel/OS.h>
#include "kernel/image.h"
#include <kernel/image.h>
#include <sys/ioctl.h>
#define HAS_TEST_AND_SET
...
...
@@ -69,6 +70,9 @@ void beos_startup(int argc, char **argv);
/* Load a shared library */
image_id
beos_dl_open
(
char
*
filename
);
/* Find symbol */
void
beos_dl_sym
(
image_id
im
,
char
*
symname
,
void
**
fptr
);
/* UnLoad a shared library */
status_t
beos_dl_close
(
image_id
im
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录