Browse Source

Merged revisions 7973,8022 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r7973 | Almindor | 2007-07-07 11:13:23 +0200 (Sat, 07 Jul 2007) | 4 lines

* fix IPC for FPC_USE_LIBS
* fix shmget to use size_t as per manpage
* directly use external, don't depend on ipccdecl.inc (may be removed if confirmed)

........
r8022 | Almindor | 2007-07-11 23:10:27 +0200 (Wed, 11 Jul 2007) | 2 lines

* add comment about stat.h source

........

git-svn-id: branches/fixes_2_2@8089 -

joost 18 years ago
parent
commit
e866ccbfd7
6 changed files with 21 additions and 29 deletions
  1. 1 1
      rtl/bsd/ipcbsd.inc
  2. 1 1
      rtl/linux/ipccall.inc
  3. 1 1
      rtl/linux/ipcsys.inc
  4. 1 2
      rtl/linux/x86_64/stat.inc
  5. 14 21
      rtl/unix/ipc.pp
  6. 3 3
      rtl/unix/ipccdecl.inc

+ 1 - 1
rtl/bsd/ipcbsd.inc

@@ -25,7 +25,7 @@ begin
    ftok:=key_t( byte(id) shl 24 + ((st.st_dev and 255) shl 16) + (st.st_ino and $ffff));
 end;
 
-function shmget(key:key_t;size:cint;flag:cint):cint;
+function shmget(key:key_t;size:size_t;flag:cint):cint;
 begin
 {$ifdef NetBSD}
   shmget:=do_syscall(syscall_nr_shmget,3, key, size, flag);

+ 1 - 1
rtl/linux/ipccall.inc

@@ -46,7 +46,7 @@ begin
 // ipcerror:=fpgetErrno;
 end;
 
-function shmget(key: Tkey; size:cint; flag:cint):cint;
+function shmget(key: Tkey; size:size_t; flag:cint):cint;
 begin
   shmget:=ipccall (CALL_SHMGET,key,size,flag,nil);
 end;

+ 1 - 1
rtl/linux/ipcsys.inc

@@ -26,7 +26,7 @@ begin
 end;
 
 
-function shmget(key: Tkey; size:cint; flag:cint):cint;
+function shmget(key: Tkey; size:size_t; flag:cint):cint;
 begin
   shmget:=do_syscall (syscall_nr_SHMGET,TSysParam(key),TSysParam(size),TSysParam(flag));
 end;

+ 1 - 2
rtl/linux/x86_64/stat.inc

@@ -63,8 +63,7 @@
 {$else}
 
 {$packrecords C}
-// (* get it from glibc/sysdeps/unix/sysv/linux/x86_64/bits/stat.h and check defines with gcc *)
-// kill the one who made the st_less idea!
+// god from /usr/include/asm-x86_64 some -dev of linux-headers must be installed
 
   Stat = record
   case Byte of

+ 14 - 21
rtl/unix/ipc.pp

@@ -13,12 +13,7 @@
 
  **********************************************************************}
 
-{$ifdef linux}
-{$ifdef FPC_USE_LIBC}
-  {$fatal This unit must be completely overhauled for use with libc on linux}
-{$endif}
-{$endif linux}
-Unit ipc;
+unit ipc;
 
 interface
 
@@ -106,7 +101,7 @@ type
 {$endif}
 
 { Function to generate a IPC key. }
-Function ftok (Path : pchar;  ID : cint) : TKey;
+Function ftok (Path : pchar;  ID : cint) : TKey; {$ifdef FPC_USE_LIBC} cdecl; external name 'ftok'; {$endif}
 
 { ----------------------------------------------------------------------
   Sys V Shared memory stuff
@@ -203,10 +198,10 @@ type            // the shm*info kind is "kernel" only.
   end;
 {$endif}
 
-Function shmget(key: Tkey; size:cint; flag:cint):cint;
-Function shmat (shmid:cint; shmaddr:pointer; shmflg:cint):pointer;
-Function shmdt (shmaddr:pointer):cint;
-Function shmctl(shmid:cint; cmd:cint; buf: pshmid_ds): cint;
+Function shmget(key: Tkey; size:size_t; flag:cint):cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'shmget'; {$endif}
+Function shmat (shmid:cint; shmaddr:pointer; shmflg:cint):pointer; {$ifdef FPC_USE_LIBC} cdecl; external name 'shmat'; {$endif}
+Function shmdt (shmaddr:pointer):cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'shmdt'; {$endif}
+Function shmctl(shmid:cint; cmd:cint; buf: pshmid_ds): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'shmctl'; {$endif}
 
 { ----------------------------------------------------------------------
   Message queue stuff
@@ -306,10 +301,10 @@ type
   end;
 {$endif}
 
-Function msgget(key: TKey; msgflg:cint):cint;
-Function msgsnd(msqid:cint; msgp: PMSGBuf; msgsz: size_t; msgflg:cint): cint;
-Function msgrcv(msqid:cint; msgp: PMSGBuf; msgsz: size_t; msgtyp:cint; msgflg:cint):cint;
-Function msgctl(msqid:cint; cmd: cint; buf: PMSQid_ds): cint;
+Function msgget(key: TKey; msgflg:cint):cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'msgget'; {$endif}
+Function msgsnd(msqid:cint; msgp: PMSGBuf; msgsz: size_t; msgflg:cint): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'msgsnd'; {$endif}
+Function msgrcv(msqid:cint; msgp: PMSGBuf; msgsz: size_t; msgtyp:cint; msgflg:cint):cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'msgrcv'; {$endif}
+Function msgctl(msqid:cint; cmd: cint; buf: PMSQid_ds): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'msgctl'; {$endif}
 
 { ----------------------------------------------------------------------
   Semaphores stuff
@@ -422,17 +417,15 @@ Type
 {$endif}
    end;
 
-Function semget(key:Tkey; nsems:cint; semflg:cint): cint;
-Function semop(semid:cint; sops: psembuf; nsops: cuint): cint;
-Function semctl(semid:cint; semnum:cint; cmd:cint; var arg: tsemun): longint;
+Function semget(key:Tkey; nsems:cint; semflg:cint): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'semget'; {$endif}
+Function semop(semid:cint; sops: psembuf; nsops: cuint): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'semop'; {$endif}
+Function semctl(semid:cint; semnum:cint; cmd:cint; var arg: tsemun): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'semctl'; {$endif}
 
 implementation
 
 uses Syscall;
 
-{$ifdef FPC_USE_LIBC}
- {$i ipccdecl.inc}
-{$else}
+{$ifndef FPC_USE_LIBC}
  {$ifdef Linux}
   {$ifdef cpux86_64}
     {$i ipcsys.inc}

+ 3 - 3
rtl/unix/ipccdecl.inc

@@ -15,7 +15,7 @@
  **********************************************************************}
 
 
-function cshmget(key:key_t;size:cint;shmflg:cint):cint; cdecl; external;
+function cshmget(key:key_t;size:size_t;shmflg:cint):cint; cdecl; external;
 Function cshmat (shmid:cint; shmaddr:pointer; shmflg:cint):pointer; cdecl;external;
 Function cshmdt (shmaddr:pointer):cint;  cdecl; external;
 Function cshmctl(shmid:cint; cmd:cint; buf: pshmid_ds): cint; cdecl; external;
@@ -37,7 +37,7 @@ begin
   ftok:=cftok(path,id);
 end;
 
-function shmget(key:key_t;size:cint;flag:cint):cint;
+function shmget(key:key_t;size:size_t;flag:cint):cint;
 begin
   shmget:=cshmget(key, size, flag);
 end;
@@ -69,7 +69,7 @@ begin
   semop:=csemop(semid, sops, nsops);
 end;
 
-Function semctl(semid:cint; semnum:cint; cmd:cint; var arg: tsemun): longint;
+Function semctl(semid:cint; semnum:cint; cmd:cint; var arg: tsemun): cint;
 begin
   semctl:=csemctl(semid, semnum, cmd, arg);
 end;