12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- {
- This file is part of the Free Pascal run time library.
- Copyright (c) 2003 Marco van de Voort
- member of the Free Pascal development team.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY;without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- **********************************************************************}
- (*
- function clone(func:TCloneFunc;sp:pointer;flags:longint;args:pointer):longint;
- {NOT IMPLEMENTED YET UNDER BSD}
- begin // perhaps it is better to implement the hack from solaris then this msg
- HALT;
- END;
- if (pointer(func)=nil) or (sp=nil) then
- begin
- Lfpseterrno(EsysEInval);
- exit(-1);
- end;
- asm
- { Insert the argument onto the new stack. }
- movl sp,%ecx
- subl $8,%ecx
- movl args,%eax
- movl %eax,4(%ecx)
- { Save the function pointer as the zeroth argument.
- It will be popped off in the child in the ebx frobbing below. }
- movl func,%eax
- movl %eax,0(%ecx)
- { Do the system call }
- pushl %ebx
- pushl %ebx
- // movl flags,%ebx
- movl $251,%eax
- int $0x80
- popl %ebx
- popl %ebx
- test %eax,%eax
- jnz .Lclone_end
- { We're in the new thread }
- subl %ebp,%ebp { terminate the stack frame }
- call *%ebx
- { exit process }
- movl %eax,%ebx
- movl $1,%eax
- int $0x80
- .Lclone_end:
- movl %eax,__RESULT
- end;
- end;
- *)
- Function fpfStatFS (Fd: cint; Info:pstatfs):cint;
- begin
- fpfstatfs:=do_SysCall(SysCall_nr_fstatfs,fd,TSysParam(info))
- end;
- Function fpStatFS (Path:pchar; Info:pstatfs):cint;
- begin
- fpstatfs:=do_SysCall(SysCall_nr_statfs,TSysParam(path),TSysParam(Info))
- end;
- Function fpfsync (fd : cint) : cint;
- begin
- fpfsync:=do_SysCall(syscall_nr_fsync, fd);
- end;
- Function fpFlock (fd,mode : longint) : cint;
- begin
- fpFlock:=do_syscall(syscall_nr_flock,fd,mode);
- end;
- function MUnMap (P : Pointer; Size : size_t) : cint;
- begin
- MUnMap:=do_syscall(syscall_nr_munmap,TSysParam(P),Size);
- end;
|