Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
44f90212
Commit
44f90212
authored
Jan 05, 2006
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove BEOS port.
parent
6f84b2da
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
28 additions
and
1253 deletions
+28
-1253
configure
configure
+0
-79
configure.in
configure.in
+1
-7
doc/src/sgml/installation.sgml
doc/src/sgml/installation.sgml
+1
-8
doc/src/sgml/runtime.sgml
doc/src/sgml/runtime.sgml
+4
-4
src/Makefile.shlib
src/Makefile.shlib
+1
-17
src/backend/main/main.c
src/backend/main/main.c
+1
-12
src/backend/port/Makefile
src/backend/port/Makefile
+1
-10
src/backend/port/beos/Makefile
src/backend/port/beos/Makefile
+0
-30
src/backend/port/beos/sem.c
src/backend/port/beos/sem.c
+0
-312
src/backend/port/beos/shm.c
src/backend/port/beos/shm.c
+0
-137
src/backend/port/beos/support.c
src/backend/port/beos/support.c
+0
-344
src/backend/port/dynloader/beos.c
src/backend/port/dynloader/beos.c
+0
-69
src/backend/port/dynloader/beos.h
src/backend/port/dynloader/beos.h
+0
-17
src/backend/postmaster/fork_process.c
src/backend/postmaster/fork_process.c
+2
-19
src/backend/storage/lmgr/proc.c
src/backend/storage/lmgr/proc.c
+1
-35
src/backend/tcop/postgres.c
src/backend/tcop/postgres.c
+1
-2
src/backend/utils/init/miscinit.c
src/backend/utils/init/miscinit.c
+3
-7
src/bin/initdb/initdb.c
src/bin/initdb/initdb.c
+1
-4
src/bin/pg_ctl/pg_ctl.c
src/bin/pg_ctl/pg_ctl.c
+1
-3
src/bin/pg_resetxlog/pg_resetxlog.c
src/bin/pg_resetxlog/pg_resetxlog.c
+1
-3
src/include/c.h
src/include/c.h
+1
-7
src/include/pg_config.h.in
src/include/pg_config.h.in
+0
-3
src/include/pg_config_manual.h
src/include/pg_config_manual.h
+3
-4
src/include/port/beos.h
src/include/port/beos.h
+0
-82
src/interfaces/ecpg/include/ecpglib.h
src/interfaces/ecpg/include/ecpglib.h
+0
-4
src/makefiles/Makefile.beos
src/makefiles/Makefile.beos
+0
-19
src/port/noblock.c
src/port/noblock.c
+3
-13
src/template/beos
src/template/beos
+0
-0
src/test/regress/pg_regress.sh
src/test/regress/pg_regress.sh
+2
-2
No files found.
configure
View file @
44f90212
...
...
@@ -1496,7 +1496,6 @@ else
case
$host_os
in
aix
*
)
template
=
aix
;;
beos
*
)
template
=
beos
;;
bsdi
*
)
template
=
bsdi
;;
cygwin
*
)
template
=
cygwin
;;
darwin
*
)
template
=
darwin
;;
...
...
@@ -6166,84 +6165,6 @@ if test "$ac_cv_search_crypt" != no; then
fi
# BeOS:
if
test
"
$PORTNAME
"
=
"beos"
then
echo
"
$as_me
:
$LINENO
: checking for __inet_ntoa in -lbind"
>
&5
echo
$ECHO_N
"checking for __inet_ntoa in -lbind...
$ECHO_C
"
>
&6
if
test
"
${
ac_cv_lib_bind___inet_ntoa
+set
}
"
=
set
;
then
echo
$ECHO_N
"(cached)
$ECHO_C
"
>
&6
else
ac_check_lib_save_LIBS
=
$LIBS
LIBS
=
"-lbind
$LIBS
"
cat
>
conftest.
$ac_ext
<<
_ACEOF
/* confdefs.h. */
_ACEOF
cat
confdefs.h
>>
conftest.
$ac_ext
cat
>>
conftest.
$ac_ext
<<
_ACEOF
/* end confdefs.h. */
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char __inet_ntoa ();
int
main ()
{
__inet_ntoa ();
;
return 0;
}
_ACEOF
rm
-f
conftest.
$ac_objext
conftest
$ac_exeext
if
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_link
\"
"
)
>
&5
(
eval
$ac_link
)
2>conftest.er1
ac_status
=
$?
grep
-v
'^ *+'
conftest.er1
>
conftest.err
rm
-f
conftest.er1
cat
conftest.err
>
&5
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
&&
{
ac_try
=
'test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
&&
{
ac_try
=
'test -s conftest$ac_exeext'
{
(
eval echo
"
$as_me
:
$LINENO
:
\"
$ac_try
\"
"
)
>
&5
(
eval
$ac_try
)
2>&5
ac_status
=
$?
echo
"
$as_me
:
$LINENO
:
\$
? =
$ac_status
"
>
&5
(
exit
$ac_status
)
;
}
;
}
;
then
ac_cv_lib_bind___inet_ntoa
=
yes
else
echo
"
$as_me
: failed program was:"
>
&5
sed
's/^/| /'
conftest.
$ac_ext
>
&5
ac_cv_lib_bind___inet_ntoa
=
no
fi
rm
-f
conftest.err conftest.
$ac_objext
\
conftest
$ac_exeext
conftest.
$ac_ext
LIBS
=
$ac_check_lib_save_LIBS
fi
echo
"
$as_me
:
$LINENO
: result:
$ac_cv_lib_bind___inet_ntoa
"
>
&5
echo
"
${
ECHO_T
}
$ac_cv_lib_bind___inet_ntoa
"
>
&6
if
test
$ac_cv_lib_bind___inet_ntoa
=
yes
;
then
cat
>>
confdefs.h
<<
_ACEOF
#define HAVE_LIBBIND 1
_ACEOF
LIBS
=
"-lbind
$LIBS
"
fi
fi
# Solaris:
echo
"
$as_me
:
$LINENO
: checking for library containing fdatasync"
>
&5
echo
$ECHO_N
"checking for library containing fdatasync...
$ECHO_C
"
>
&6
...
...
configure.in
View file @
44f90212
dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.44
0 2006/01/05 01:56:28
momjian Exp $
dnl $PostgreSQL: pgsql/configure.in,v 1.44
1 2006/01/05 03:01:32
momjian Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
...
...
@@ -49,7 +49,6 @@ PGAC_ARG_REQ(with, template, [],
case $host_os in
aix*) template=aix ;;
beos*) template=beos ;;
bsdi*) template=bsdi ;;
cygwin*) template=cygwin ;;
darwin*) template=darwin ;;
...
...
@@ -614,11 +613,6 @@ AC_SEARCH_LIBS(getopt_long, [getopt gnugetopt])
# QNX:
AC_CHECK_LIB(unix, main)
AC_SEARCH_LIBS(crypt, crypt)
# BeOS:
if test "$PORTNAME" = "beos"
then
AC_CHECK_LIB(bind, __inet_ntoa)
fi
# Solaris:
AC_SEARCH_LIBS(fdatasync, [rt posix4])
# Cygwin:
...
...
doc/src/sgml/installation.sgml
View file @
44f90212
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.25
1 2006/01/05 01:56:28
momjian Exp $ -->
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.25
2 2006/01/05 03:01:32
momjian Exp $ -->
<
chapter
id
=
"installation"
>
<
title
><
![%standalone-include[<productname>PostgreSQL</>]]>
...
...
@@ -1995,13 +1995,6 @@ kill `cat /usr/local/pgsql/data/postmaster.pid`
</thead>
<tbody>
<row>
<entry><systemitem class="osname">BeOS</></entry>
<entry><systemitem>x86</></entry>
<entry>7.2</entry>
<entry>Cyril Velter (<email>cyril.velter@libertysurf.fr</email>), 2001-11-29</entry>
<entry>needs updates to semaphore code</entry>
</row>
<row>
<entry><systemitem class="osname">Linux</></entry>
<entry><systemitem>PlayStation 2</></entry>
...
...
doc/src/sgml/runtime.sgml
View file @
44f90212
<!--
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.36
0 2006/01/05 01:56:28
momjian Exp $
$PostgreSQL: pgsql/doc/src/sgml/runtime.sgml,v 1.36
1 2006/01/05 03:01:33
momjian Exp $
-->
<chapter Id="runtime">
...
...
@@ -480,9 +480,9 @@ psql: could not connect to server: No such file or directory
relevant for <productname>PostgreSQL</>). Almost all modern
operating systems provide these features, but not all of them have
them turned on or sufficiently sized by default, especially systems
with BSD heritage. (For the <systemitem class="osname">Windows</>
and
<systemitem class="osname">BeOS</> ports, <productname>PostgreSQL</>
provides its own replacement
implementation of these facilities.)
with BSD heritage. (For the <systemitem class="osname">Windows</>
port, <productname>PostgreSQL</> provides its own replacement
implementation of these facilities.)
</para>
<para>
...
...
src/Makefile.shlib
View file @
44f90212
...
...
@@ -6,7 +6,7 @@
# Copyright (c) 1998, Regents of the University of California
#
# IDENTIFICATION
# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.10
1 2005/12/30 21:43:41
momjian Exp $
# $PostgreSQL: pgsql/src/Makefile.shlib,v 1.10
2 2006/01/05 03:01:34
momjian Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -246,12 +246,6 @@ ifeq ($(PORTNAME), win32)
haslibarule
=
yes
endif
ifeq
($(PORTNAME), beos)
shlib
=
lib
$(NAME)$(DLSUFFIX)
LINK.shared
=
$(LD)
-nostart
SHLIB_LINK
+=
-ltermcap
-lstdc
++.r4
-lbind
-lsocket
-L
/boot/develop/lib/x86
endif
ifeq
($(enable_rpath), yes)
SHLIB_LINK
+=
$(rpath)
endif
...
...
@@ -290,7 +284,6 @@ ifeq ($(enable_shared), yes)
ifneq
($(PORTNAME), win32)
ifneq
($(PORTNAME), cygwin)
ifneq
($(PORTNAME), beos)
ifneq
($(PORTNAME), aix)
# Normal case
...
...
@@ -316,15 +309,6 @@ $(shlib): lib$(NAME).a
endif
# PORTNAME == aix
else
# PORTNAME == beos
# BEOS case
$(shlib)
:
$(OBJS)
ln
-fs
$(top_srcdir)
/src/backend/postgres _APP_
$(CC)
-Xlinker
-soname
=
$@
$(LDFLAGS_SL)
-o
$@
_APP_
$(OBJS)
$(SHLIB_LINK)
endif
# PORTNAME == beos
else
# PORTNAME == cygwin
# Cygwin case
...
...
src/backend/main/main.c
View file @
44f90212
...
...
@@ -13,7 +13,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/main/main.c,v 1.9
8 2005/12/28 23:22:51 tgl
Exp $
* $PostgreSQL: pgsql/src/backend/main/main.c,v 1.9
9 2006/01/05 03:01:34 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -118,11 +118,6 @@ main(int argc, char *argv[])
}
#endif
#ifdef __BEOS__
/* BeOS-specific actions on startup */
beos_startup
(
argc
,
argv
);
#endif
/*
* Not-quite-so-platform-specific startup environment checks. Still best
* to minimize these.
...
...
@@ -205,13 +200,8 @@ main(int argc, char *argv[])
strcmp
(
argv
[
1
],
"-V"
)
==
0
)))
{
#ifndef WIN32
#ifndef __BEOS__
/*
* Make sure we are not running as root.
*
* BeOS currently runs everything as root :-(, so this check must be
* temporarily disabled there...
*/
if
(
geteuid
()
==
0
)
{
...
...
@@ -221,7 +211,6 @@ main(int argc, char *argv[])
"more information on how to properly start the server.
\n
"
);
exit
(
1
);
}
#endif
/* !__BEOS__ */
/*
* Also make sure that real and effective uids are the same. Executing
...
...
src/backend/port/Makefile
View file @
44f90212
...
...
@@ -13,7 +13,7 @@
# be converted to Method 2.
#
# IDENTIFICATION
# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.2
1 2006/01/05 01:56:29
momjian Exp $
# $PostgreSQL: pgsql/src/backend/port/Makefile,v 1.2
2 2006/01/05 03:01:35
momjian Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -25,9 +25,6 @@ OBJS+=dynloader.o pg_sema.o pg_shmem.o
OBJS
+=
$(TAS)
ifeq
($(PORTNAME), beos)
OBJS
+=
beos/SUBSYS.o
endif
ifeq
($(PORTNAME), darwin)
OBJS
+=
darwin/SUBSYS.o
endif
...
...
@@ -40,11 +37,6 @@ all: SUBSYS.o
SUBSYS.o
:
$(OBJS)
$(LD)
$(LDREL)
$(LDOUT)
$@
$^
beos/SUBSYS.o
:
beos.dir
beos.dir
:
$(MAKE)
-C
beos all
darwin/SUBSYS.o
:
darwin.dir
darwin.dir
:
...
...
@@ -64,7 +56,6 @@ ipc_test: ipc_test.o pg_sema.o pg_shmem.o
distclean clean
:
rm
-f
SUBSYS.o
$(OBJS)
ipc_test ipc_test.o
$(MAKE)
-C
beos clean
$(MAKE)
-C
darwin clean
$(MAKE)
-C
win32 clean
src/backend/port/beos/Makefile
deleted
100644 → 0
View file @
6f84b2da
#-------------------------------------------------------------------------
#
# Makefile--
# Makefile for port/beos
#
# IDENTIFICATION
# $PostgreSQL: pgsql/src/backend/port/beos/Makefile,v 1.4 2003/11/29 19:51:54 pgsql Exp $
#
#-------------------------------------------------------------------------
subdir
=
src/backend/port/beos
top_builddir
=
../../../..
include
$(top_builddir)/src/Makefile.global
OBJS
=
sem.o shm.o support.o
all
:
SUBSYS.o
SUBSYS.o
:
$(OBJS)
$(LD)
$(LDREL)
$(LDOUT)
SUBSYS.o
$(OBJS)
depend dep
:
$(CC)
-MM
$(CFLAGS)
$(CPPFLAGS)
*
.c
>
depend
clean
:
rm
-f
SUBSYS.o
$(OBJS)
ifeq
(depend,$(wildcard depend))
include
depend
endif
src/backend/port/beos/sem.c
deleted
100644 → 0
View file @
6f84b2da
/*-------------------------------------------------------------------------
*
* sem.c
* BeOS System V Semaphores Emulation
*
* Copyright (c) 1999-2000, Cyril VELTER
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include <errno.h>
#include <unistd.h>
#include <OS.h>
/*#define TDBG*/
#ifdef TDBG
#define TRACEDBG(x) printf(x);printf("\n")
#define TRACEDBGP(x,y) printf(x,y);printf("\n")
#define TRACEDBGPP(x,y,z) printf(x,y,z);printf("\n")
#else
#define TRACEDBG(x)
#define TRACEDBGP(x,y)
#define TRACEDBGPP(x,y,z)
#endif
/* Control of a semaphore pool. The pool is an area in which we stored all
the semIds of the pool. The first 4 bytes are the number of semaphore allocated
in the pool followed by SemIds */
int
semctl
(
int
semId
,
int
semNum
,
int
flag
,
union
semun
semun
)
{
int32
*
Address
;
area_info
info
;
TRACEDBG
(
"->semctl"
);
/* Try to find the pool */
if
(
get_area_info
(
semId
,
&
info
)
!=
B_OK
)
{
/* pool is invalid (BeOS area id is invalid) */
errno
=
EINVAL
;
TRACEDBG
(
"<-semctl invalid pool"
);
return
-
1
;
}
/* Get the pool address */
Address
=
(
int32
*
)
info
.
address
;
TRACEDBGP
(
"--semctl address %d"
,
Address
);
/* semNum might be 0 */
/* semun.array contain the sem initial values */
/* Fix the count of all sem of the pool to semun.array */
if
(
flag
==
SETALL
)
{
long
i
;
TRACEDBG
(
"--semctl setall"
);
for
(
i
=
0
;
i
<
Address
[
0
];
i
++
)
{
int32
cnt
;
/* Get the current count */
get_sem_count
(
Address
[
2
*
i
+
1
],
&
cnt
);
TRACEDBGP
(
"--semctl setall %d"
,
semun
.
array
[
i
]);
/* Compute and set the new count (relative to the old one) */
cnt
-=
semun
.
array
[
i
];
TRACEDBGPP
(
"--semctl acquire id : %d cnt : %d"
,
Address
[
2
*
i
+
1
],
cnt
);
if
(
cnt
>
0
)
while
(
acquire_sem_etc
(
Address
[
2
*
i
+
1
],
cnt
,
0
,
0
)
==
B_INTERRUPTED
);
if
(
cnt
<
0
)
release_sem_etc
(
Address
[
2
*
i
+
1
],
-
cnt
,
0
);
}
return
1
;
}
/* Fix the count of one semaphore to semun.val */
if
(
flag
==
SETVAL
)
{
int32
cnt
;
TRACEDBGP
(
"--semctl setval %d"
,
semun
.
val
);
/* Get the current count */
get_sem_count
(
Address
[
2
*
semNum
+
1
],
&
cnt
);
/* Compute and set the new count (relative to the old one) */
cnt
-=
semun
.
val
;
TRACEDBGPP
(
"--semctl acquire id : %d cnt : %d"
,
Address
[
2
*
semNum
+
1
],
cnt
);
if
(
cnt
>
0
)
while
(
acquire_sem_etc
(
Address
[
2
*
semNum
+
1
],
cnt
,
0
,
0
)
==
B_INTERRUPTED
);
if
(
cnt
<
0
)
release_sem_etc
(
Address
[
2
*
semNum
+
1
],
-
cnt
,
0
);
return
1
;
}
/* Get the last pid which accessed the sem */
if
(
flag
==
GETPID
)
{
TRACEDBG
(
"->semctl getpid"
);
return
Address
[
2
*
semNum
+
2
];
}
/* Delete the pool */
if
(
flag
==
IPC_RMID
)
{
long
i
;
thread_info
ti
;
TRACEDBG
(
"->semctl rmid"
);
get_thread_info
(
find_thread
(
NULL
),
&
ti
);
/* Loop over all semaphore to delete them */
TRACEDBGP
(
"->semctl nmbre %d"
,
Address
[
0
]);
for
(
i
=
0
;
i
<
Address
[
0
];
i
++
)
{
/*
* Make sure to have ownership of the semaphore (if created by
* another team)
*/
TRACEDBGP
(
"->semctl id %d"
,
Address
[
2
*
i
+
1
]);
set_sem_owner
(
Address
[
2
*
i
+
1
],
ti
.
team
);
/* Delete the semaphore */
delete_sem
(
Address
[
2
*
i
+
1
]);
/*
* Reset to an invalid semId (in case other process try to get the
* infos from a cloned area
*/
Address
[
2
*
i
+
1
]
=
0
;
}
/* Set the semaphore count to 0 */
Address
[
0
]
=
0
;
/*
* Delete the area (it might be cloned by other process. Let them live
* with it, in all cases semIds are 0 so if another process try to use
* it, it will fail
*/
delete_area
(
semId
);
return
1
;
}
/* Get the current semaphore count */
if
(
flag
==
GETNCNT
)
{
/* TO BE IMPLEMENTED */
TRACEDBG
(
"--semctl getncnt"
);
elog
(
ERROR
,
"semctl error: GETNCNT not implemented"
);
return
0
;
}
/* Get the current semaphore count of the first semaphore in the pool */
if
(
flag
==
GETVAL
)
{
int32
cnt
;
TRACEDBG
(
"--semctl getval"
);
get_sem_count
(
Address
[
2
*
semNum
+
1
],
&
cnt
);
TRACEDBGP
(
"--semctl val %d"
,
cnt
);
return
cnt
;
}
elog
(
ERROR
,
"semctl error: unknown flag"
);
TRACEDBG
(
"<-semctl unknown flag"
);
return
0
;
}
/* Find a pool id based on IPC key */
int
semget
(
int
semKey
,
int
semNum
,
int
flags
)
{
char
Nom
[
50
];
area_id
parea
;
void
*
Address
;
TRACEDBGPP
(
"->semget key : %d num : %d"
,
semKey
,
semNum
);
/* Name of the area to find */
sprintf
(
Nom
,
"SYSV_IPC_SEM : %d"
,
semKey
);
/* find area */
parea
=
find_area
(
Nom
);
/* Test of area existence */
if
(
parea
!=
B_NAME_NOT_FOUND
)
{
/* Area exist and creation is requested, error */
if
((
flags
&
IPC_CREAT
)
&&
(
flags
&
IPC_EXCL
))
{
errno
=
EEXIST
;
return
-
1
;
}
/* Get an area clone (in case it's not in our address space) */
/*
* TODO : a check of address space might be done to avoid duplicate
* areas in the same address space
*/
parea
=
clone_area
(
Nom
,
&
Address
,
B_ANY_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
parea
);
return
parea
;
}
else
{
/* Area does not exist, but creation is requested, so create it */
if
(
flags
&
IPC_CREAT
)
{
int32
*
Address
;
void
*
Ad
;
long
i
;
/*
* Limit to 250 (8 byte per sem : 4 for the semid and 4 for the
* last pid which accessed the semaphore in a pool
*/
if
(
semNum
>
250
)
{
errno
=
ENOSPC
;
return
-
1
;
}
/* Create the shared memory area which will hold the pool */
parea
=
create_area
(
Nom
,
&
Ad
,
B_ANY_ADDRESS
,
4096
,
B_NO_LOCK
,
B_READ_AREA
|
B_WRITE_AREA
);
if
((
parea
==
B_BAD_VALUE
)
||
(
parea
==
B_NO_MEMORY
)
||
(
parea
==
B_ERROR
))
{
errno
=
ENOMEM
;
return
-
1
;
}
/* fill up informations (sem number and sem ids) */
Address
=
(
int32
*
)
Ad
;
Address
[
0
]
=
semNum
;
for
(
i
=
0
;
i
<
Address
[
0
];
i
++
)
{
/* Create the semaphores */
Address
[
2
*
i
+
1
]
=
create_sem
(
0
,
Nom
);
if
((
Address
[
2
*
i
+
1
]
==
B_BAD_VALUE
)
||
(
Address
[
2
*
i
+
1
]
==
B_NO_MEMORY
)
||
(
Address
[
2
*
i
+
1
]
==
B_NO_MORE_SEMS
))
{
errno
=
ENOMEM
;
return
-
1
;
}
}
return
parea
;
}
else
{
/* Area does not exist and no creation is requested */
errno
=
ENOENT
;
return
-
1
;
}
}
}
/* Acquire or release in the semaphore pool */
int
semop
(
int
semId
,
struct
sembuf
*
sops
,
int
nsops
)
{
int32
*
Address
;
/* Pool address */
area_info
info
;
long
i
;
long
ret
;
/* Get the pool address (semId IS an area id) */
get_area_info
(
semId
,
&
info
);
Address
=
(
int32
*
)
info
.
address
;
/* Check the validity of semId (it should be an area id) */
if
((
semId
==
B_BAD_VALUE
)
||
(
semId
==
B_NO_MEMORY
)
||
(
semId
==
B_ERROR
))
{
errno
=
EINVAL
;
return
-
1
;
}
/* Perform acquire or release */
for
(
i
=
0
;
i
<
nsops
;
i
++
)
{
/* remember the PID */
Address
[
2
*
(
sops
[
i
].
sem_num
)
+
2
]
=
getpid
();
/* For each sem in the pool, check the operation to perform */
if
(
sops
[
i
].
sem_op
<
0
)
{
/*
* Try acquiring the semaphore till we are not interrupted by a
* signal
*/
if
(
sops
[
i
].
sem_flg
==
IPC_NOWAIT
)
{
/* Try to lock ... */
while
((
ret
=
acquire_sem_etc
(
Address
[
2
*
(
sops
[
i
].
sem_num
)
+
1
],
-
sops
[
i
].
sem_op
,
B_RELATIVE_TIMEOUT
,
0
))
==
B_INTERRUPTED
);
if
(
ret
!=
B_OK
)
return
EWOULDBLOCK
;
}
else
while
(
acquire_sem_etc
(
Address
[
2
*
(
sops
[
i
].
sem_num
)
+
1
],
-
sops
[
i
].
sem_op
,
0
,
0
)
==
B_INTERRUPTED
);
}
if
(
sops
[
i
].
sem_op
>
0
)
release_sem_etc
(
Address
[
2
*
(
sops
[
i
].
sem_num
)
+
1
],
sops
[
i
].
sem_op
,
0
);
}
return
0
;
}
src/backend/port/beos/shm.c
deleted
100644 → 0
View file @
6f84b2da
/*-------------------------------------------------------------------------
*
* shm.c
* BeOS System V Shared Memory Emulation
*
* Copyright (c) 1999-2001, Cyril VELTER
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include <OS.h>
#include <errno.h>
/* Emulating SYS shared memory with beos areas. WARNING : fork clone
areas in copy on write mode */
/* Detach from a shared mem area based on its address */
int
shmdt
(
char
*
shmaddr
)
{
/* Find area id for this address */
area_id
s
;
s
=
area_for
(
shmaddr
);
/* Delete area */
return
delete_area
(
s
);
}
/* Attach to an existing area */
int
*
shmat
(
int
memId
,
int
m1
,
int
m2
)
{
/* Get our team id */
thread_info
thinfo
;
team_info
teinfo
;
area_info
ainfo
;
get_thread_info
(
find_thread
(
NULL
),
&
thinfo
);
get_team_info
(
thinfo
.
team
,
&
teinfo
);
/* Get area teamid */
if
(
get_area_info
(
memId
,
&
ainfo
)
!=
B_OK
)
printf
(
"AREA %d Invalide
\n
"
,
memId
);
if
(
ainfo
.
team
==
teinfo
.
team
)
{
/*
* the area is already in our address space, just return the address
*/
return
(
int
*
)
ainfo
.
address
;
}
else
{
/*
* the area is not in our address space, clone it before and return
* the address
*/
area_id
narea
;
narea
=
clone_area
(
ainfo
.
name
,
&
(
ainfo
.
address
),
B_CLONE_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
memId
);
get_area_info
(
narea
,
&
ainfo
);
return
(
int
*
)
ainfo
.
address
;
}
}
/* Control a shared mem area */
int
shmctl
(
int
shmid
,
int
flag
,
struct
shmid_ds
*
dummy
)
{
if
(
flag
==
IPC_RMID
)
{
/* Delete the area */
delete_area
(
shmid
);
return
0
;
}
if
(
flag
==
IPC_STAT
)
{
/* Find any SYSV area with the shmid in its name */
area_info
inf
;
team_info
infteam
;
int32
cookteam
=
0
;
char
name
[
50
];
sprintf
(
name
,
"SYSV_IPC %d"
,
shmid
);
dummy
->
shm_nattch
=
0
;
while
(
get_next_team_info
(
&
cookteam
,
&
infteam
)
==
B_OK
)
{
int32
cook
=
0
;
while
(
get_next_area_info
(
infteam
.
team
,
&
cook
,
&
inf
)
==
B_OK
)
{
if
(
strcmp
(
name
,
inf
.
name
)
==
0
)
dummy
->
shm_nattch
++
;
}
}
errno
=
0
;
return
0
;
}
errno
=
EINVAL
;
return
-
1
;
}
/* Get an area based on the IPC key */
int
shmget
(
int
memKey
,
int
size
,
int
flag
)
{
char
nom
[
50
];
void
*
Address
;
area_id
parea
;
/* Area name */
sprintf
(
nom
,
"SYSV_IPC_SHM : %d"
,
memKey
);
/* Find area */
parea
=
find_area
(
nom
);
/* area exist, just return its id */
if
(
parea
!=
B_NAME_NOT_FOUND
)
return
parea
;
/* area does not exist and no creation is requested : error */
if
(
flag
==
0
)
return
-
1
;
/*
* area does not exist and its creation is requested, create it (be sure
* to have a 4ko multiple size
*/
return
create_area
(
nom
,
&
Address
,
B_ANY_ADDRESS
,
((
size
/
4096
)
+
1
)
*
4096
,
B_NO_LOCK
,
B_READ_AREA
|
B_WRITE_AREA
);
}
src/backend/port/beos/support.c
deleted
100644 → 0
View file @
6f84b2da
/*-------------------------------------------------------------------------
*
* support.c
* BeOS Support functions
*
* Copyright (c) 1999-2001, Cyril VELTER
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
/* Support Globals */
port_id
beos_dl_port_in
=
0
;
port_id
beos_dl_port_out
=
0
;
sem_id
beos_shm_sem
;
/* Global var containing the postgres path */
extern
char
my_exec_path
[];
/* Shared library loading doesn't work after fork in beos. The solution is to use an exact
copy of the process and use it to perform the loading, then just map the Text and Data segment
of the add-on in our address space. Both process must have the exact same memory mapping, so
we use the postgres executable. When it's lauched with the -beossupportserver parameter, the
postgres executable just run a loop to wait command on a port. Its only action is to load the addon,
the beos_dl_open will then remap the good areas in the backend address space. */
image_id
beos_dl_open
(
char
*
filename
)
{
image_id
im
;
/* If a port doesn't exist, lauch support server */
if
((
beos_dl_port_in
<=
0
)
||
(
beos_dl_port_out
<=
0
))
{
/* Create communication port */
beos_dl_port_in
=
create_port
(
50
,
"beos_support_in"
);
beos_dl_port_out
=
create_port
(
50
,
"beos_support_in"
);
if
((
beos_dl_port_in
<=
0
)
||
(
beos_dl_port_out
<=
0
))
{
elog
(
WARNING
,
"error loading BeOS support server: could not create communication ports"
);
return
B_ERROR
;
}
else
{
char
Cmd
[
4000
];
/* Build arg list */
sprintf
(
Cmd
,
"%s -beossupportserver %d %d &"
,
my_exec_path
,
(
int
)
beos_dl_port_in
,
(
int
)
beos_dl_port_out
);
/* Lauch process */
system
(
Cmd
);
}
}
/* Add-on loading */
/* Send command '1' (load) to the support server */
write_port
(
beos_dl_port_in
,
1
,
filename
,
strlen
(
filename
)
+
1
);
/* Read Object Id */
read_port
(
beos_dl_port_out
,
&
im
,
NULL
,
0
);
/* Checking integrity */
if
(
im
<
0
)
{
elog
(
WARNING
,
"could not load this add-on"
);
return
B_ERROR
;
}
else
{
/* Map text and data segment in our address space */
char
datas
[
4000
];
int32
area
;
int32
resu
;
void
*
add
;
/* read text segment id and address */
read_port
(
beos_dl_port_out
,
&
area
,
datas
,
4000
);
read_port
(
beos_dl_port_out
,
(
void
*
)
&
add
,
datas
,
4000
);
/* map text segment in our address space */
resu
=
clone_area
(
datas
,
&
add
,
B_EXACT_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
area
);
if
(
resu
<
0
)
{
/* If we can't map, we are in reload case */
/* delete the mapping */
resu
=
delete_area
(
area_for
(
add
));
/* Remap */
resu
=
clone_area
(
datas
,
&
add
,
B_EXACT_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
area
);
if
(
resu
<
0
)
elog
(
WARNING
,
"could not load this add-on: map text error"
);
}
/* read text segment id and address */
read_port
(
beos_dl_port_out
,
&
area
,
datas
,
4000
);
read_port
(
beos_dl_port_out
,
(
void
*
)
&
add
,
datas
,
4000
);
/* map text segment in our address space */
resu
=
clone_area
(
datas
,
&
add
,
B_EXACT_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
area
);
if
(
resu
<
0
)
{
/* If we can't map, we are in reload case */
/* delete the mapping */
resu
=
delete_area
(
area_for
(
add
));
/* Remap */
resu
=
clone_area
(
datas
,
&
add
,
B_EXACT_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
area
);
if
(
resu
<
0
)
elog
(
WARNING
,
"could not load this add-on: map data error"
);
}
return
im
;
}
}
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
(
WARNING
,
"loading symbol
\"
%s
\"
failed"
,
symname
);
}
status_t
beos_dl_close
(
image_id
im
)
{
/* unload add-on */
int32
resu
;
write_port
(
beos_dl_port_in
,
2
,
&
im
,
4
);
read_port
(
beos_dl_port_out
,
&
resu
,
NULL
,
0
);
return
resu
;
}
/* Main support server loop */
void
beos_startup
(
int
argc
,
char
**
argv
)
{
if
(
strlen
(
argv
[
0
])
>=
10
&&
!
strcmp
(
argv
[
0
]
+
strlen
(
argv
[
0
])
-
10
,
"postmaster"
))
{
/*
* We are in the postmaster, create the protection semaphore for
* shared mem remapping
*/
beos_shm_sem
=
create_sem
(
1
,
"beos_shm_sem"
);
}
if
(
argc
>
1
&&
strcmp
(
argv
[
1
],
"-beossupportserver"
)
==
0
)
{
/* We are in the support server, run it ... */
port_id
port_in
;
port_id
port_out
;
/* Get back port ids from arglist */
sscanf
(
argv
[
2
],
"%d"
,
(
int
*
)
(
&
port_in
));
sscanf
(
argv
[
3
],
"%d"
,
(
int
*
)
(
&
port_out
));
/* Main server loop */
for
(;;)
{
int32
opcode
=
0
;
char
datas
[
4000
];
/*
* Wait for a message from the backend : 1 : load a shared object
* 2 : unload a shared object any other : exit support 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
:
/* Load shared object */
addon
=
load_add_on
(
datas
);
/* send back the shared object Id */
write_port
(
port_out
,
addon
,
NULL
,
0
);
/* Get Shared Object infos */
get_image_info
(
addon
,
&
info_im
);
/* get text segment info */
get_area_info
(
area_for
(
info_im
.
text
),
&
info_ar
);
/* Send back area_id of text segment */
write_port
(
port_out
,
info_ar
.
area
,
info_ar
.
name
,
strlen
(
info_ar
.
name
)
+
1
);
/* Send back real address of text segment */
write_port
(
port_out
,
(
int
)
info_ar
.
address
,
info_ar
.
name
,
strlen
(
info_ar
.
name
)
+
1
);
/* get data segment info */
get_area_info
(
area_for
(
info_im
.
data
),
&
info_ar
);
/* Send back area_id of data segment */
write_port
(
port_out
,
info_ar
.
area
,
info_ar
.
name
,
strlen
(
info_ar
.
name
)
+
1
);
/* Send back real address of data segment */
write_port
(
port_out
,
(
int
)
info_ar
.
address
,
info_ar
.
name
,
strlen
(
info_ar
.
name
)
+
1
);
break
;
/* UnLoad Add-On */
case
2
:
/*
* Unload shared object and send back the result of the
* operation
*/
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
);
delete_port
(
port_out
);
/* Exit */
exit
(
0
);
break
;
}
}
/* Never be there */
exit
(
1
);
}
}
/* The behavior of fork is broken on beos regarding shared memory. In fact
all shared memory areas are clones in copy on write mode in the new process.
We need to do a remapping of these areas. Just afer the fork we performe the
following actions :
* Find all areas with a name begining by SYS_V_IPC_ in our process
(areas created by the SYSV IPC emulation functions). The name is
followed by the IPC KEY in decimal format
* For each area we do :
* 1 : Get its name
* 2 : destroy it
* 3 : find another area with the exact same name
* 4 : clone it in our address space with a different name
There is a race condition in 3-4 : if there two fork in a very short
time, in step 3 we might end up with two areas with the same name, and no
possibility to find the postmaster one. So the whole process is protected
by a semaphore which is acquires just before the fork and released in case
of fork failure or just after the end of the remapping.*/
void
beos_before_backend_startup
(
void
)
{
/* Just before forking, acquire the semaphore */
if
(
acquire_sem
(
beos_shm_sem
)
!=
B_OK
)
exit
(
1
);
/* Fatal error, exiting with error */
}
void
beos_backend_startup_failed
(
void
)
{
/* The fork failed, just release the semaphore */
release_sem
(
beos_shm_sem
);
}
void
beos_backend_startup
(
void
)
{
char
nom
[
50
];
char
nvnom
[
50
];
area_info
inf
;
int32
cook
=
0
;
/* Perform the remapping process */
/* Loop in all our team areas */
while
(
get_next_area_info
(
0
,
&
cook
,
&
inf
)
==
B_OK
)
{
strcpy
(
nom
,
inf
.
name
);
strcpy
(
nvnom
,
inf
.
name
);
nom
[
9
]
=
0
;
nvnom
[
5
]
=
'i'
;
/* Is it a SYS V area ? */
if
(
!
strcmp
(
nom
,
"SYSV_IPC_"
))
{
void
*
area_address
;
area_id
area_postmaster
;
/* Get the area address */
area_address
=
inf
.
address
;
/* Destroy the bad area */
delete_area
(
inf
.
area
);
/* Find the postmaster area */
area_postmaster
=
find_area
(
inf
.
name
);
/* Compute new area name */
sprintf
(
nvnom
,
"SYSV_IPC %d"
,
area_postmaster
);
/* Clone it at the exact same address */
clone_area
(
nvnom
,
&
area_address
,
B_CLONE_ADDRESS
,
B_READ_AREA
|
B_WRITE_AREA
,
area_postmaster
);
}
}
/* remapping done release semaphore to allow other backend to startup */
release_sem
(
beos_shm_sem
);
}
src/backend/port/dynloader/beos.c
deleted
100644 → 0
View file @
6f84b2da
/*-------------------------------------------------------------------------
*
* dynloader.c
* Dynamic Loader for Postgres for BeOS
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/port/dynloader/beos.c,v 1.15 2004/12/31 22:00:32 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
#include "postgres.h"
#include "utils/dynamic_loader.h"
void
*
pg_dlopen
(
char
*
filename
)
{
image_id
*
im
;
/* Handle memory allocation to store the Id of the shared object */
im
=
(
image_id
*
)
(
malloc
(
sizeof
(
image_id
)));
/* Add-on loading */
*
im
=
beos_dl_open
(
filename
);
return
im
;
}
char
*
pg_dlerror
()
{
static
char
errmsg
[]
=
"Load Add-On failed"
;
return
errmsg
;
}
PGFunction
pg_dlsym
(
void
*
handle
,
char
*
funcname
)
{
PGFunction
fpt
;
/* Checking that "Handle" is valid */
if
((
handle
)
&&
((
*
(
int
*
)
(
handle
))
>=
0
))
{
beos_dl_sym
(
*
((
int
*
)
(
handle
)),
funcname
,
(
void
**
)
&
fpt
);
return
fpt
;
}
elog
(
WARNING
,
"add-on not loaded correctly"
);
return
NULL
;
}
void
pg_dlclose
(
void
*
handle
)
{
/* Checking that "Handle" is valid */
if
((
handle
)
&&
((
*
(
int
*
)
(
handle
))
>=
0
))
{
if
(
beos_dl_close
(
*
(
image_id
*
)
handle
)
!=
B_OK
)
elog
(
WARNING
,
"error while unloading add-on"
);
free
(
handle
);
}
}
src/backend/port/dynloader/beos.h
deleted
100644 → 0
View file @
6f84b2da
/*-------------------------------------------------------------------------
*
* port_protos.h
* port-specific prototypes for BeOS
*
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/port/dynloader/beos.h,v 1.11 2004/12/31 22:00:32 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef PORT_PROTOS_H
#define PORT_PROTOS_H
#endif
/* PORT_PROTOS_H */
src/backend/postmaster/fork_process.c
View file @
44f90212
...
...
@@ -7,7 +7,7 @@
* Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/postmaster/fork_process.c,v 1.
4 2005/10/15 02:49:23
momjian Exp $
* $PostgreSQL: pgsql/src/backend/postmaster/fork_process.c,v 1.
5 2006/01/05 03:01:35
momjian Exp $
*/
#include "postgres.h"
#include "postmaster/fork_process.h"
...
...
@@ -52,31 +52,14 @@ fork_process(void)
getitimer
(
ITIMER_PROF
,
&
prof_itimer
);
#endif
#ifdef __BEOS__
/* Specific beos actions before backend startup */
beos_before_backend_startup
();
#endif
result
=
fork
();
if
(
result
==
(
pid_t
)
-
1
)
{
/* fork failed */
#ifdef __BEOS__
/* Specific beos backend startup actions */
beos_backend_startup_failed
();
#endif
}
else
if
(
result
==
0
)
if
(
result
==
0
)
{
/* fork succeeded, in child */
#ifdef LINUX_PROFILE
setitimer
(
ITIMER_PROF
,
&
prof_itimer
,
NULL
);
#endif
#ifdef __BEOS__
/* Specific beos backend startup actions */
beos_backend_startup
();
#endif
}
return
result
;
...
...
src/backend/storage/lmgr/proc.c
View file @
44f90212
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.17
1 2006/01/04 21:06:31 tgl
Exp $
* $PostgreSQL: pgsql/src/backend/storage/lmgr/proc.c,v 1.17
2 2006/01/05 03:01:35 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1113,12 +1113,7 @@ bool
enable_sig_alarm
(
int
delayms
,
bool
is_statement_timeout
)
{
struct
timeval
fin_time
;
#ifndef __BEOS__
struct
itimerval
timeval
;
#else
bigtime_t
time_interval
;
#endif
/* Compute target timeout time if we will need it */
if
(
is_statement_timeout
||
statement_timeout_active
)
...
...
@@ -1170,18 +1165,11 @@ enable_sig_alarm(int delayms, bool is_statement_timeout)
}
/* If we reach here, okay to set the timer interrupt */
#ifndef __BEOS__
MemSet
(
&
timeval
,
0
,
sizeof
(
struct
itimerval
));
timeval
.
it_value
.
tv_sec
=
delayms
/
1000
;
timeval
.
it_value
.
tv_usec
=
(
delayms
%
1000
)
*
1000
;
if
(
setitimer
(
ITIMER_REAL
,
&
timeval
,
NULL
))
return
false
;
#else
/* BeOS doesn't have setitimer, but has set_alarm */
time_interval
=
delayms
*
1000
;
/* usecs */
if
(
set_alarm
(
time_interval
,
B_ONE_SHOT_RELATIVE_ALARM
)
<
0
)
return
false
;
#endif
return
true
;
}
...
...
@@ -1204,7 +1192,6 @@ disable_sig_alarm(bool is_statement_timeout)
*/
if
(
statement_timeout_active
||
deadlock_timeout_active
)
{
#ifndef __BEOS__
struct
itimerval
timeval
;
MemSet
(
&
timeval
,
0
,
sizeof
(
struct
itimerval
));
...
...
@@ -1215,16 +1202,6 @@ disable_sig_alarm(bool is_statement_timeout)
deadlock_timeout_active
=
false
;
return
false
;
}
#else
/* BeOS doesn't have setitimer, but has set_alarm */
if
(
set_alarm
(
B_INFINITE_TIMEOUT
,
B_PERIODIC_ALARM
)
<
0
)
{
statement_timeout_active
=
false
;
cancel_from_timeout
=
false
;
deadlock_timeout_active
=
false
;
return
false
;
}
#endif
}
/* Always cancel deadlock timeout, in case this is error cleanup */
...
...
@@ -1274,7 +1251,6 @@ CheckStatementTimeout(void)
else
{
/* Not time yet, so (re)schedule the interrupt */
#ifndef __BEOS__
struct
itimerval
timeval
;
MemSet
(
&
timeval
,
0
,
sizeof
(
struct
itimerval
));
...
...
@@ -1287,16 +1263,6 @@ CheckStatementTimeout(void)
}
if
(
setitimer
(
ITIMER_REAL
,
&
timeval
,
NULL
))
return
false
;
#else
/* BeOS doesn't have setitimer, but has set_alarm */
bigtime_t
time_interval
;
time_interval
=
(
statement_fin_time
.
tv_sec
-
now
.
tv_sec
)
*
1000000
+
(
statement_fin_time
.
tv_usec
-
now
.
tv_usec
);
if
(
set_alarm
(
time_interval
,
B_ONE_SHOT_RELATIVE_ALARM
)
<
0
)
return
false
;
#endif
}
return
true
;
...
...
src/backend/tcop/postgres.c
View file @
44f90212
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.47
5 2006/01/04 21:06:31 tgl
Exp $
* $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.47
6 2006/01/05 03:01:35 momjian
Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
...
...
@@ -3520,7 +3520,6 @@ ShowUsage(const char *title)
(
long
)
user
.
tv_usec
,
(
long
)
sys
.
tv_sec
,
(
long
)
sys
.
tv_usec
);
/* BeOS has rusage but only has some fields, and not these... */
#if defined(HAVE_GETRUSAGE)
appendStringInfo
(
&
str
,
"!
\t
%ld/%ld [%ld/%ld] filesystem blocks in/out
\n
"
,
...
...
src/backend/utils/init/miscinit.c
View file @
44f90212
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.15
1 2005/11/22 18:17:25
momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/init/miscinit.c,v 1.15
2 2006/01/05 03:01:36
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -777,7 +777,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
* using real kill() either...
*
* Normally kill() will fail with ESRCH if the given PID doesn't
* exist.
BeOS returns EINVAL for some silly reason, however.
* exist.
*/
if
(
other_pid
!=
my_pid
#ifndef WIN32
...
...
@@ -786,11 +786,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
)
{
if
(
kill
(
other_pid
,
0
)
==
0
||
(
errno
!=
ESRCH
&&
#ifdef __BEOS__
errno
!=
EINVAL
&&
#endif
errno
!=
EPERM
))
(
errno
!=
ESRCH
&&
errno
!=
EPERM
))
{
/* lockfile belongs to a live process */
ereport
(
FATAL
,
...
...
src/bin/initdb/initdb.c
View file @
44f90212
...
...
@@ -42,7 +42,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
* Portions taken from FreeBSD.
*
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.10
4 2006/01/02 16:45:12 adunst
an Exp $
* $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.10
5 2006/01/05 03:01:36 momji
an Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -633,8 +633,6 @@ get_id(void)
pw
=
getpwuid
(
geteuid
());
#ifndef __BEOS__
/* no root check on BEOS */
if
(
geteuid
()
==
0
)
/* 0 is root's uid */
{
fprintf
(
stderr
,
...
...
@@ -645,7 +643,6 @@ get_id(void)
progname
);
exit
(
1
);
}
#endif
#else
/* the windows code */
struct
passwd_win32
...
...
src/bin/pg_ctl/pg_ctl.c
View file @
44f90212
...
...
@@ -4,7 +4,7 @@
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
* $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.6
2 2005/11/22 18:17:28
momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.6
3 2006/01/05 03:01:37
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1322,7 +1322,6 @@ main(int argc, char **argv)
* Disallow running as root, to forestall any possible security holes.
*/
#ifndef WIN32
#ifndef __BEOS__
/* no root check on BEOS */
if
(
geteuid
()
==
0
)
{
write_stderr
(
_
(
"%s: cannot be run as root
\n
"
...
...
@@ -1332,7 +1331,6 @@ main(int argc, char **argv)
progname
);
exit
(
1
);
}
#endif
#endif
/*
...
...
src/bin/pg_resetxlog/pg_resetxlog.c
View file @
44f90212
...
...
@@ -23,7 +23,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.3
8 2005/10/15 02:49:40
momjian Exp $
* $PostgreSQL: pgsql/src/bin/pg_resetxlog/pg_resetxlog.c,v 1.3
9 2006/01/05 03:01:37
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -220,7 +220,6 @@ main(int argc, char *argv[])
* the data directory.
*/
#ifndef WIN32
#ifndef __BEOS__
/* no root check on BeOS */
if
(
geteuid
()
==
0
)
{
fprintf
(
stderr
,
_
(
"%s: cannot be executed by
\"
root
\"\n
"
),
...
...
@@ -229,7 +228,6 @@ main(int argc, char *argv[])
progname
);
exit
(
1
);
}
#endif
#endif
DataDir
=
argv
[
optind
];
...
...
src/include/c.h
View file @
44f90212
...
...
@@ -12,7 +12,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/c.h,v 1.19
3 2005/12/25 02:14:18
momjian Exp $
* $PostgreSQL: pgsql/src/include/c.h,v 1.19
4 2006/01/05 03:01:37
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -170,11 +170,6 @@
* built-in definition of bool.
*/
/* BeOS defines bool already, but the compiler chokes on the
* #ifndef unless we wrap it in this check.
*/
#ifndef __BEOS__
#ifndef __cplusplus
#ifndef bool
...
...
@@ -189,7 +184,6 @@ typedef char bool;
#define false ((bool) 0)
#endif
#endif
/* not C++ */
#endif
/* __BEOS__ */
typedef
bool
*
BoolPtr
;
...
...
src/include/pg_config.h.in
View file @
44f90212
...
...
@@ -200,9 +200,6 @@
/* Define to 1 if you have the <langinfo.h> header file. */
#undef HAVE_LANGINFO_H
/* Define to 1 if you have the `bind' library (-lbind). */
#undef HAVE_LIBBIND
/* Define to 1 if you have the `BSD' library (-lBSD). */
#undef HAVE_LIBBSD
...
...
src/include/pg_config_manual.h
View file @
44f90212
...
...
@@ -6,7 +6,7 @@
* for developers. If you edit any of these, be sure to do a *full*
* rebuild (and an initdb if noted).
*
* $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.
19 2006/01/05 01:56:29
momjian Exp $
* $PostgreSQL: pgsql/src/include/pg_config_manual.h,v 1.
20 2006/01/05 03:01:37
momjian Exp $
*------------------------------------------------------------------------
*/
...
...
@@ -155,15 +155,14 @@
/*
* Disable UNIX sockets for those operating system.
*/
#if defined(
__BEOS__) || defined(
WIN32)
#if defined(WIN32)
#undef HAVE_UNIX_SOCKETS
#endif
/*
* Define this if your operating system supports link()
*/
#if !defined(__BEOS__) && \
!defined(WIN32) && !defined(__CYGWIN__)
#if !defined(WIN32) && !defined(__CYGWIN__)
#define HAVE_WORKING_LINK 1
#endif
...
...
src/include/port/beos.h
deleted
100644 → 0
View file @
6f84b2da
#include <kernel/OS.h>
#include <kernel/image.h>
#include <sys/ioctl.h>
#define AF_UNIX 10
/* no domain sockets on BeOS */
/* Beos doesn't have all the required getrusage fields */
#undef HAVE_GETRUSAGE
/* SYS V emulation */
#undef HAVE_UNION_SEMUN
#define HAVE_UNION_SEMUN 1
#define IPC_RMID 256
#define IPC_CREAT 512
#define IPC_EXCL 1024
#define IPC_PRIVATE 234564
#define IPC_NOWAIT 2048
#define IPC_STAT 4096
#define EACCESS 2048
#define EIDRM 4096
#define SETALL 8192
#define GETNCNT 16384
#define GETVAL 65536
#define SETVAL 131072
#define GETPID 262144
union
semun
{
int
val
;
struct
semid_ds
*
buf
;
unsigned
short
*
array
;
};
struct
sembuf
{
int
sem_flg
;
int
sem_op
;
int
sem_num
;
};
struct
shmid_ds
{
int
dummy
;
int
shm_nattch
;
};
int
semctl
(
int
semId
,
int
semNum
,
int
flag
,
union
semun
);
int
semget
(
int
semKey
,
int
semNum
,
int
flags
);
int
semop
(
int
semId
,
struct
sembuf
*
sops
,
int
flag
);
int
shmdt
(
char
*
shmaddr
);
int
*
shmat
(
int
memId
,
int
m1
,
int
m2
);
int
shmctl
(
int
shmid
,
int
flag
,
struct
shmid_ds
*
dummy
);
int
shmget
(
int
memKey
,
int
size
,
int
flag
);
/* Support functions */
/* Specific beos action made on postgres/postmaster startup */
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
);
/* Specific beos action made on backend startup */
void
beos_before_backend_startup
(
void
);
/* Specific beos action made on backend startup */
void
beos_backend_startup
(
void
);
/* Specific beos action made on backend startup failure*/
void
beos_backend_startup_failed
(
void
);
src/interfaces/ecpg/include/ecpglib.h
View file @
44f90212
...
...
@@ -10,7 +10,6 @@
#include "ecpgtype.h"
#include <string.h>
#ifndef __BEOS__
#ifndef __cplusplus
#ifndef bool
#define bool char
...
...
@@ -23,9 +22,6 @@
#define false ((bool) 0)
#endif
/* ndef false */
#endif
/* not C++ */
#else
/* __BEOS__ */
#include <SupportDefs.h>
#endif
/* __BEOS__ */
#ifndef TRUE
#define TRUE 1
...
...
src/makefiles/Makefile.beos
deleted
100644 → 0
View file @
6f84b2da
MK_NO_LORDER
=
true
AROPT
=
crs
ifdef
ELF_SYSTEM
export_dynamic
=
-Wl
,-E
endif
DLSUFFIX
=
.so
CFLAGS_SL
=
-fpic
-DPIC
%.so
:
%.o
ifdef
PGXS
ln
-fs
$(DESTDIR)$(bindir)
/postgres _APP_
else
ln
-fs
$(top_builddir)
/src/backend/postgres _APP_
endif
$(CC)
-nostart
-Xlinker
-soname
=
$@
-o
$@
_APP_
$<
sqlmansect
=
7
src/port/noblock.c
View file @
44f90212
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/port/noblock.c,v 1.
8 2005/10/15 02:49:51
momjian Exp $
* $PostgreSQL: pgsql/src/port/noblock.c,v 1.
9 2006/01/05 03:01:38
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -20,26 +20,21 @@
bool
pg_set_noblock
(
int
sock
)
{
#if !defined(WIN32)
&& !defined(__BEOS__)
#if !defined(WIN32)
return
(
fcntl
(
sock
,
F_SETFL
,
O_NONBLOCK
)
!=
-
1
);
#else
long
ioctlsocket_ret
=
1
;
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
#ifdef WIN32
return
(
ioctlsocket
(
sock
,
FIONBIO
,
&
ioctlsocket_ret
)
==
0
);
#endif
#ifdef __BEOS__
return
(
ioctl
(
sock
,
FIONBIO
,
&
ioctlsocket_ret
)
==
0
);
#endif
#endif
}
bool
pg_set_block
(
int
sock
)
{
#if !defined(WIN32)
&& !defined(__BEOS__)
#if !defined(WIN32)
int
flags
;
flags
=
fcntl
(
sock
,
F_GETFL
);
...
...
@@ -50,11 +45,6 @@ pg_set_block(int sock)
long
ioctlsocket_ret
=
0
;
/* Returns non-0 on failure, while fcntl() returns -1 on failure */
#ifdef WIN32
return
(
ioctlsocket
(
sock
,
FIONBIO
,
&
ioctlsocket_ret
)
==
0
);
#endif
#ifdef __BEOS__
return
(
ioctl
(
sock
,
FIONBIO
,
&
ioctlsocket_ret
)
==
0
);
#endif
#endif
}
src/template/beos
deleted
100644 → 0
View file @
6f84b2da
src/test/regress/pg_regress.sh
View file @
44f90212
#! /bin/sh
# $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.6
3 2006/01/05 01:56:30
momjian Exp $
# $PostgreSQL: pgsql/src/test/regress/pg_regress.sh,v 1.6
4 2006/01/05 03:01:38
momjian Exp $
me
=
`
basename
$0
`
:
${
TMPDIR
=/tmp
}
...
...
@@ -216,7 +216,7 @@ esac
# On some platforms we can't use Unix sockets.
# ----------
case
$host_platform
in
*
-
*
-cygwin
*
|
*
-
*
-mingw32
*
|
*
beos
*
)
*
-
*
-cygwin
*
|
*
-
*
-mingw32
*
)
unix_sockets
=
no
;;
*
)
unix_sockets
=
yes
;;
...
...
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