]> git.lizzy.rs Git - plan9front.git/commitdiff
acid: add semacquire/semrelease/tsemacquire syscalls, handle _seek hack for amd64...
authorcinap_lenrek <cinap_lenrek@felloff.net>
Fri, 14 Feb 2014 13:02:33 +0000 (14:02 +0100)
committercinap_lenrek <cinap_lenrek@felloff.net>
Fri, 14 Feb 2014 13:02:33 +0000 (14:02 +0100)
sys/lib/acid/syscall
sys/lib/acid/truss

index 003e8c6ecf67b59d5a9810f5372a822d133b4863..ef69e64ef60eacc671866a85be5664e0aeb04318 100644 (file)
@@ -106,7 +106,7 @@ syscalls = {
        {24, {"brk_",           "X",            code(*sysbrk_:list)}},
        {25, {"remove",         "s",            code(*sysremove:list)}},
        {26, {"_wstat",         "sX",           code(*sys_wstat:list)}},
-       {27, {"_fwstat",                "DX",           code(*sys_fwstat:list)}},
+       {27, {"_fwstat",        "DX",           code(*sys_fwstat:list)}},
        {28, {"notify",         "X",            code(*sysnotify:list)}},
        {29, {"noted",          "D",            code(*sysnoted:list)}},
        {30, {"segattach",      "DsXD",         code(*syssegattach:list)}},
@@ -116,6 +116,8 @@ syscalls = {
        {34, {"rendezvous",     "XX",           code(*sysrendezvous:list)}},
        {35, {"unmount",        "ss",           code(*sysunmount:list)}},
        {36, {"_wait",          "X",            code(*sys_wait:list)}},
+       {37, {"semacquire",     "XD",           code(*syssemacquire:list)}},
+       {38, {"semrelease",     "XD",           code(*syssemrelease:list)}},
        {39, {"seek",           "XDVD",         code(*sysseek:list)}},
        {40, {"fversion",       "DDsD",         code(*sysfversion:list)}},
        {41, {"errstr",         "TD",           code(*syserrstr:list)}},
@@ -123,10 +125,11 @@ syscalls = {
        {43, {"fstat",          "DXD",          code(*sysfstat:list)}},
        {44, {"wstat",          "sXD",          code(*syswstat:list)}},
        {45, {"fwstat",         "DXD",          code(*sysfwstat:list)}},
-       {46, {"mount",          "DDsXs",                code(*sysmount:list)}},
+       {46, {"mount",          "DDsXs",        code(*sysmount:list)}},
        {47, {"await",          "TD",           code(*sysawait:list)}},
        {50, {"pread",          "DXDZ",         code(*syspread:list)}},
        {51, {"pwrite",         "DTDZ",         code(*syspwrite:list)}},
+       {52, {"tsemacquire",    "XD",           code(*systsemacquire:list)}},
 };
 
 defn syscall() {
index 1e0689dcb6072ed5fadf321bc23dba22b72894fc..93970d494c79c80b15cb19ae98eeea229cc9797a 100644 (file)
@@ -84,6 +84,8 @@ trusscalls = {
                "rendezvous",
                "unmount",
                "_wait",
+               "semacquire",
+               "semrelease",
                "seek",
                "fversion",
                "errstr",
@@ -95,6 +97,7 @@ trusscalls = {
                "await",
                "pread",
                "pwrite",
+               "tsemacquire",
        };
 
 trussapecalls = {
@@ -135,6 +138,8 @@ trussapecalls = {
                "_RENDEZVOUS",
                "_UNMOUNT",
                "__WAIT",
+               "_SEMACQUIRE",
+               "_SEMRELEASE",
                "_SEEK",
                "__NFVERSION",
                "__NERRSTR",
@@ -146,13 +151,16 @@ trussapecalls = {
                "__NAWAIT",
                "_PREAD",
                "_PWRITE",
+               "_TSEMACQUIRE",
        };
 
 defn addressof(pattern) {
        // translate to ape system calls if we have an ape binary
-       if _addressof("_EXITS") == 0 then
-               return _addressof(pattern);
-       return _addressof(trussapecalls[match(pattern, trusscalls)]);
+       if _addressof("_EXITS") != 0 then
+               pattern = trussapecalls[match(pattern, trusscalls)];
+       if regexp("(seek|_SEEK)", pattern) && (objtype=="amd64" || objtype == "power64" || objtype == "alpha") then
+               pattern = "_" + pattern;
+       return _addressof(pattern);
 }
 
 defn setuptruss() {