mirror of https://github.com/red-prig/fpPS4.git
60 lines
901 B
Plaintext
60 lines
901 B
Plaintext
unit nullfs;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
{$CALLING SysV_ABI_CDecl}
|
|
|
|
interface
|
|
|
|
uses
|
|
mqueue,
|
|
vmount,
|
|
vnode;
|
|
|
|
const
|
|
NULLM_CACHE=$0001;
|
|
|
|
NULLV_NOUNLOCK=$0001;
|
|
NULLV_DROP =$0002;
|
|
|
|
type
|
|
p_null_mount=^t_null_mount;
|
|
t_null_mount=packed record
|
|
nullm_vfs :p_mount;
|
|
nullm_rootvp:p_vnode; { Reference to root null_node }
|
|
nullm_flags :QWORD;
|
|
end;
|
|
|
|
p_null_node=^t_null_node;
|
|
t_null_node=packed record
|
|
null_hash :LIST_ENTRY; { Hash list }
|
|
null_lowervp:p_vnode; { VREFed once }
|
|
null_vnode :p_vnode; { Back pointer }
|
|
null_flags :DWORD;
|
|
end;
|
|
|
|
function NULLVPTOLOWERVP(vp:p_vnode):p_vnode;
|
|
|
|
implementation
|
|
|
|
function VTONULL(vp:p_vnode):p_null_node; inline;
|
|
begin
|
|
Result:=vp^.v_data;
|
|
end;
|
|
|
|
function NULLVPTOLOWERVP(vp:p_vnode):p_vnode;
|
|
var
|
|
xp:p_null_node;
|
|
begin
|
|
xp:=VTONULL(vp);
|
|
if (xp<>nil) then
|
|
begin
|
|
Result:=xp^.null_lowervp;
|
|
end else
|
|
begin
|
|
Result:=nil;
|
|
end;
|
|
end;
|
|
|
|
end.
|
|
|