diff --git a/sys/errno.pas b/sys/errno.pas new file mode 100644 index 00000000..6ceda038 --- /dev/null +++ b/sys/errno.pas @@ -0,0 +1,55 @@ +unit errno; + +{$mode ObjFPC}{$H+} +{$CALLING SysV_ABI_CDecl} + +interface + +{$I sce_errno.inc} +{$I errno.inc} + +function px2sce(e:Integer):Integer; +function sce2px(e:Integer):Integer; + +function _set_errno(r:Integer):Integer; +function _set_sce_errno(r:Integer):Integer; + +implementation + +uses + thr_error; + +function px2sce(e:Integer):Integer; +begin + if (e=0) then + Result:=0 + else + Result:=e-$7ffe0000; +end; + +function sce2px(e:Integer):Integer; +begin + if (e=0) then + Result:=0 + else + Result:=e+$7ffe0000; +end; + +function _set_errno(r:Integer):Integer; +begin + Result:=0; + __error^:=r; + if (r<>0) then + begin + Result:=-1; + end; +end; + +function _set_sce_errno(r:Integer):Integer; +begin + __error^:=sce2px(r); + Result:=r; +end; + +end. + diff --git a/sys/test/project1.lpi b/sys/test/project1.lpi index 18b60240..d6b0fb4a 100644 --- a/sys/test/project1.lpi +++ b/sys/test/project1.lpi @@ -33,10 +33,6 @@ - - - - @@ -141,10 +137,6 @@ - - - - @@ -153,6 +145,18 @@ + + + + + + + + + + + + diff --git a/sys/test/project1.lpr b/sys/test/project1.lpr index b320d05c..e2ca2d42 100644 --- a/sys/test/project1.lpr +++ b/sys/test/project1.lpr @@ -6,7 +6,6 @@ uses signal, ucontext, _umtx, - kern_umtx, sys_umtx, time, kern_time, @@ -18,10 +17,12 @@ uses trap, sys_sig, md_psl, - pthread_md, + kern_umtx, thr_init, thr_error, - sysutils; + pthread_md, + sysutils, + errno; var mtx:umutex;