mirror of https://github.com/red-prig/fpPS4.git
This commit is contained in:
parent
c487f219f2
commit
6fcd0f4b14
|
@ -564,7 +564,7 @@ var
|
||||||
),
|
),
|
||||||
(//[101]
|
(//[101]
|
||||||
sy_narg:2;
|
sy_narg:2;
|
||||||
sy_call:nil;
|
sy_call:@sys_netabort;
|
||||||
sy_name:'sys_netabort'
|
sy_name:'sys_netabort'
|
||||||
),
|
),
|
||||||
(//[102]
|
(//[102]
|
||||||
|
|
|
@ -5,14 +5,15 @@ unit uipc_syscalls;
|
||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
function sys_socket(domain,stype,protocol:Integer):Integer;
|
function sys_socket (domain,stype,protocol:Integer):Integer;
|
||||||
function sys_socketex(name:pchar;domain,stype,protocol:Integer):Integer;
|
function sys_socketex (name:pchar;domain,stype,protocol:Integer):Integer;
|
||||||
function sys_socketclose(fd:Integer):Integer;
|
function sys_socketclose(fd:Integer):Integer;
|
||||||
function sys_bind(s:Integer;name:Pointer;namelen:Integer):Integer;
|
function sys_bind (s:Integer;name:Pointer;namelen:Integer):Integer;
|
||||||
function sys_listen(s,backlog:Integer):Integer;
|
function sys_listen (s,backlog:Integer):Integer;
|
||||||
function sys_accept(s:Integer;aname,anamelen:Pointer):Integer;
|
function sys_accept (s:Integer;aname,anamelen:Pointer):Integer;
|
||||||
function sys_connect(fd:Integer;name:Pointer;namelen:Integer):Integer;
|
function sys_connect (fd:Integer;name:Pointer;namelen:Integer):Integer;
|
||||||
function sys_setsockopt(s,level,name:Integer;val:Pointer;valsize:Integer):Integer;
|
function sys_setsockopt (s,level,name:Integer;val:Pointer;valsize:Integer):Integer;
|
||||||
|
function sys_netabort (fd,flags:Integer):Integer;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -608,6 +609,34 @@ begin
|
||||||
Result:=kern_setsockopt(s,level,name,val,UIO_USERSPACE,valsize);
|
Result:=kern_setsockopt(s,level,name,val,UIO_USERSPACE,valsize);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
const
|
||||||
|
SOCKET_ABORT_FLAG_RCV =$00000001;
|
||||||
|
SOCKET_ABORT_FLAG_SND =$00000002;
|
||||||
|
SOCKET_ABORT_FLAG_SND_AGAIN=$00000004;
|
||||||
|
|
||||||
|
function sys_netabort(fd,flags:Integer):Integer;
|
||||||
|
var
|
||||||
|
error:Integer;
|
||||||
|
fp:p_file;
|
||||||
|
begin
|
||||||
|
|
||||||
|
if ((flags and $1000000)=0) then
|
||||||
|
begin
|
||||||
|
error:=getsock_cap(fd, flags, @fp, nil);
|
||||||
|
if (error=0) then
|
||||||
|
begin
|
||||||
|
//error:=bnet_netabort(td,fp->f_data,flags);
|
||||||
|
fdrop(fp);
|
||||||
|
end;
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
flags:=flags and $feffffff;
|
||||||
|
error:=0;
|
||||||
|
//error:=kern_epollabort(td,fd,flags);
|
||||||
|
end;
|
||||||
|
|
||||||
|
Exit(error);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@ function socket(domain,stype,protocol:Integer):Integer;
|
||||||
function _connect(fd:Integer;name:Pointer;namelen:Integer):Integer;
|
function _connect(fd:Integer;name:Pointer;namelen:Integer):Integer;
|
||||||
function __sys_netcontrol(fd,op:Integer;buf:Pointer;nbuf:DWORD):Integer;
|
function __sys_netcontrol(fd,op:Integer;buf:Pointer;nbuf:DWORD):Integer;
|
||||||
function getpriority(which,who:Integer):Integer;
|
function getpriority(which,who:Integer):Integer;
|
||||||
|
function __sys_netabort(fd,flags:Integer):Integer;
|
||||||
function _bind(s:Integer;name:Pointer;namelen:Integer):Integer;
|
function _bind(s:Integer;name:Pointer;namelen:Integer):Integer;
|
||||||
function _setsockopt(s,level,name:Integer;val:Pointer;valsize:Integer):Integer;
|
function _setsockopt(s,level,name:Integer;val:Pointer;valsize:Integer):Integer;
|
||||||
function _listen(s,backlog:Integer):Integer;
|
function _listen(s,backlog:Integer):Integer;
|
||||||
|
@ -675,6 +676,13 @@ asm
|
||||||
jmp cerror
|
jmp cerror
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function __sys_netabort(fd,flags:Integer):Integer; assembler; nostackframe;
|
||||||
|
asm
|
||||||
|
movq $101,%rax
|
||||||
|
call fast_syscall
|
||||||
|
jmp cerror
|
||||||
|
end;
|
||||||
|
|
||||||
function _bind(s:Integer;name:Pointer;namelen:Integer):Integer; assembler; nostackframe;
|
function _bind(s:Integer;name:Pointer;namelen:Integer):Integer; assembler; nostackframe;
|
||||||
asm
|
asm
|
||||||
movq $104,%rax
|
movq $104,%rax
|
||||||
|
|
Loading…
Reference in New Issue