acid: add semacquire/semrelease/tsemacquire syscalls, handle _seek hack for amd64 (thanks erik)
This commit is contained in:
parent
7d73312def
commit
38c35d6195
2 changed files with 16 additions and 5 deletions
|
@ -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)}},
|
||||
|
@ -127,6 +129,7 @@ syscalls = {
|
|||
{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() {
|
||||
|
|
|
@ -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
|
||||
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);
|
||||
return _addressof(trussapecalls[match(pattern, trusscalls)]);
|
||||
}
|
||||
|
||||
defn setuptruss() {
|
||||
|
|
Loading…
Reference in a new issue