mirror of https://github.com/red-prig/fpPS4.git
This commit is contained in:
parent
8b241bf02e
commit
b16871aed4
|
@ -610,7 +610,7 @@ begin
|
|||
|
||||
if (Result<>0) then Exit;
|
||||
|
||||
Writeln('SetFlipRate:',data^.arg2,' ',data^.arg3);
|
||||
Writeln('SetFlipRate:',data^.arg3);
|
||||
|
||||
Exit(0);
|
||||
end;
|
||||
|
|
|
@ -1073,7 +1073,7 @@ var
|
|||
),
|
||||
(//[203]
|
||||
sy_narg:2;
|
||||
sy_call:nil;
|
||||
sy_call:@sys_mlock;
|
||||
sy_name:'sys_mlock'
|
||||
),
|
||||
(//[204]
|
||||
|
|
|
@ -856,12 +856,13 @@ begin
|
|||
break;
|
||||
end;
|
||||
tv:=ets-rts;
|
||||
tv:=tvtohz(tv);
|
||||
end else
|
||||
begin
|
||||
tv:=0;
|
||||
end;
|
||||
|
||||
Result:=msleep(@p_sigacts,@p_proc.p_mtx,PPAUSE or PCATCH,'sigwait',tvtohz(tv));
|
||||
Result:=msleep(@p_sigacts,@p_proc.p_mtx,PPAUSE or PCATCH,'sigwait',tv);
|
||||
|
||||
if (timeout<>nil) then
|
||||
begin
|
||||
|
|
|
@ -712,6 +712,12 @@ begin
|
|||
|
||||
lock:=pmap_wlock(pmap,start,__end);
|
||||
|
||||
//fixup writeonly
|
||||
if ((prot and VM_PROT_RWX)=VM_PROT_WRITE) then
|
||||
begin
|
||||
prot:=prot or VM_PROT_READ;
|
||||
end;
|
||||
|
||||
ppmap_mark_rwx(start,__end,prot);
|
||||
|
||||
r:=0;
|
||||
|
@ -988,6 +994,12 @@ begin
|
|||
|
||||
lock:=pmap_rlock(pmap,start,__end);
|
||||
|
||||
//fixup writeonly
|
||||
if ((prot and VM_PROT_RWX)=VM_PROT_WRITE) then
|
||||
begin
|
||||
prot:=prot or VM_PROT_READ;
|
||||
end;
|
||||
|
||||
ppmap_mark_rwx(start,__end,prot);
|
||||
|
||||
case vm_object_type(obj) of
|
||||
|
|
|
@ -101,6 +101,7 @@ function getrlimit(which:Integer;rlp:Pointer):Integer;
|
|||
function setrlimit(which:Integer;rlp:Pointer):Integer;
|
||||
function _getdirentries(fd:Integer;buf:Pointer;count:DWORD;basep:PInt64):Integer;
|
||||
function __sysctl(name:PInteger;namelen:DWORD;old:Pointer;oldlenp:PQWORD;new:Pointer;newlen:QWORD):Integer;
|
||||
function mlock(addr:Pointer;len:QWORD):Integer;
|
||||
function futimes(fd:Integer;tptr:Pointer):Integer;
|
||||
function getpgid(pid:Integer):Integer;
|
||||
function poll(fds:Pointer;nfds:DWORD;timeout:Integer):Integer;
|
||||
|
@ -924,6 +925,13 @@ asm
|
|||
jmp cerror
|
||||
end;
|
||||
|
||||
function mlock(addr:Pointer;len:QWORD):Integer; assembler; nostackframe;
|
||||
asm
|
||||
movq $203,%rax
|
||||
call fast_syscall
|
||||
jmp cerror
|
||||
end;
|
||||
|
||||
function futimes(fd:Integer;tptr:Pointer):Integer; assembler; nostackframe;
|
||||
asm
|
||||
movq $206,%rax
|
||||
|
|
|
@ -268,7 +268,13 @@ end;
|
|||
|
||||
function tvtohz(time:Int64):Int64;
|
||||
begin
|
||||
Result:=time;
|
||||
if (time=0) then
|
||||
begin
|
||||
Result:=1;
|
||||
end else
|
||||
begin
|
||||
Result:=time;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure usec2timespec(ts:p_timespec;timeo:DWORD);
|
||||
|
|
|
@ -1936,6 +1936,11 @@ var
|
|||
sb:t_stat;
|
||||
error:Integer;
|
||||
begin
|
||||
|
||||
begin
|
||||
Writeln('sys_stat(',path,')');
|
||||
end;
|
||||
|
||||
error:=kern_stat(path, UIO_USERSPACE, @sb);
|
||||
if (error=0) then
|
||||
begin
|
||||
|
|
|
@ -20,6 +20,8 @@ type
|
|||
end;
|
||||
{$IF sizeof(t_query_memory_prot)<>24}{$STOP sizeof(t_query_memory_prot)<>24}{$ENDIF}
|
||||
|
||||
function sys_mlock(addr:Pointer;len:QWORD):Integer;
|
||||
|
||||
function sys_mmap(vaddr:Pointer;
|
||||
vlen :QWORD;
|
||||
prot :Integer;
|
||||
|
@ -77,6 +79,37 @@ uses
|
|||
sys_conf,
|
||||
vm_pager;
|
||||
|
||||
function sys_mlock(addr:Pointer;len:QWORD):Integer;
|
||||
var
|
||||
_adr,_end,last,start,size:vm_offset_t;
|
||||
map:vm_map_t;
|
||||
error:Integer;
|
||||
begin
|
||||
_adr :=vm_offset_t(addr);
|
||||
size :=len;
|
||||
last :=_adr + size;
|
||||
start:=trunc_page(_adr);
|
||||
_end :=round_page(last);
|
||||
|
||||
if (last < _adr) or (_end < _adr) then
|
||||
begin
|
||||
Exit(EINVAL);
|
||||
end;
|
||||
|
||||
map:=p_proc.p_vmspace;
|
||||
|
||||
error:=0;
|
||||
//error:=vm_map_wire(map, start, _end, VM_MAP_WIRE_USER or VM_MAP_WIRE_NOHOLES);
|
||||
|
||||
if (error=KERN_SUCCESS) then
|
||||
begin
|
||||
Result:=0;
|
||||
end else
|
||||
begin
|
||||
Result:=ENOMEM;
|
||||
end;
|
||||
end;
|
||||
|
||||
function vm_mmap_cdev(objsize :vm_size_t;
|
||||
prot :vm_prot_t;
|
||||
maxprotp :p_vm_prot_t;
|
||||
|
|
Loading…
Reference in New Issue