mirror of https://github.com/red-prig/fpPS4.git
112 lines
1.5 KiB
Plaintext
112 lines
1.5 KiB
Plaintext
unit sys_sysinit;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
{$CALLING SysV_ABI_CDecl}
|
|
|
|
interface
|
|
|
|
procedure sys_init;
|
|
|
|
implementation
|
|
|
|
uses
|
|
time,
|
|
kern_time,
|
|
subr_sleepqueue,
|
|
kern_sysctl,
|
|
kern_thr,
|
|
kern_thread,
|
|
kern_sig,
|
|
kern_timeout,
|
|
kern_synch,
|
|
kern_umtx,
|
|
kern_namedobj,
|
|
vmount,
|
|
vfiledesc,
|
|
vm_map,
|
|
kern_dmem,
|
|
kern_mtxpool,
|
|
vsys_generic,
|
|
vfs_subr,
|
|
vfs_lookup,
|
|
vfs_init,
|
|
kern_event,
|
|
devfs,
|
|
devfs_devs,
|
|
devfs_vfsops,
|
|
fdesc_vfsops,
|
|
null_vfsops,
|
|
ufs,
|
|
kern_descrip,
|
|
vfs_mountroot,
|
|
kern_conf,
|
|
dev_null,
|
|
dev_tty,
|
|
dev_dmem;
|
|
|
|
var
|
|
daemon_thr:p_kthread;
|
|
|
|
//Daemon for a separate thread
|
|
procedure sys_daemon(arg:Pointer);
|
|
begin
|
|
repeat
|
|
vnlru_proc;
|
|
pause('sys_daemon',hz);
|
|
until false;
|
|
kthread_exit();
|
|
end;
|
|
|
|
procedure sys_daemon_init;
|
|
var
|
|
n:Integer;
|
|
begin
|
|
n:=kthread_add(@sys_daemon,nil,@daemon_thr,'sys_daemon');
|
|
Assert(n=0,'sys_daemon');
|
|
end;
|
|
|
|
procedure module_init;
|
|
begin
|
|
vfs_register(@devfs_vfsconf);
|
|
vfs_register(@fdescfs_vfsconf);
|
|
vfs_register(@nullfs_vfsconf);
|
|
vfs_register(@ufs_vfsconf);
|
|
vfs_mountroot.vfs_mountroot();
|
|
fildesc_drvinit;
|
|
//
|
|
null_modevent(0,MOD_LOAD);
|
|
ttyconsdev_init();
|
|
dmemdev_init();
|
|
end;
|
|
|
|
//Manual order of lazy initialization
|
|
procedure sys_init;
|
|
begin
|
|
timeinit;
|
|
init_sleepqueues;
|
|
sysctl_register_all;
|
|
PROC_INIT;
|
|
threadinit;
|
|
siginit;
|
|
umtxq_sysinit;
|
|
kern_timeout_init;
|
|
named_table_init;
|
|
vmountinit;
|
|
fd_table_init;
|
|
vminit;
|
|
init_dmem_map;
|
|
mtx_pool_setup_dynamic;
|
|
selectinit;
|
|
vntblinit;
|
|
nameiinit;
|
|
knote_init;
|
|
vfs_event_init;
|
|
devfs_mtx_init;
|
|
devfs_devs_init;
|
|
module_init;
|
|
sys_daemon_init;
|
|
end;
|
|
|
|
end.
|
|
|