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)}},
|
{34, {"rendezvous", "XX", code(*sysrendezvous:list)}},
|
||||||
{35, {"unmount", "ss", code(*sysunmount:list)}},
|
{35, {"unmount", "ss", code(*sysunmount:list)}},
|
||||||
{36, {"_wait", "X", code(*sys_wait: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)}},
|
{39, {"seek", "XDVD", code(*sysseek:list)}},
|
||||||
{40, {"fversion", "DDsD", code(*sysfversion:list)}},
|
{40, {"fversion", "DDsD", code(*sysfversion:list)}},
|
||||||
{41, {"errstr", "TD", code(*syserrstr:list)}},
|
{41, {"errstr", "TD", code(*syserrstr:list)}},
|
||||||
|
@ -127,6 +129,7 @@ syscalls = {
|
||||||
{47, {"await", "TD", code(*sysawait:list)}},
|
{47, {"await", "TD", code(*sysawait:list)}},
|
||||||
{50, {"pread", "DXDZ", code(*syspread:list)}},
|
{50, {"pread", "DXDZ", code(*syspread:list)}},
|
||||||
{51, {"pwrite", "DTDZ", code(*syspwrite:list)}},
|
{51, {"pwrite", "DTDZ", code(*syspwrite:list)}},
|
||||||
|
{52, {"tsemacquire", "XD", code(*systsemacquire:list)}},
|
||||||
};
|
};
|
||||||
|
|
||||||
defn syscall() {
|
defn syscall() {
|
||||||
|
|
|
@ -84,6 +84,8 @@ trusscalls = {
|
||||||
"rendezvous",
|
"rendezvous",
|
||||||
"unmount",
|
"unmount",
|
||||||
"_wait",
|
"_wait",
|
||||||
|
"semacquire",
|
||||||
|
"semrelease",
|
||||||
"seek",
|
"seek",
|
||||||
"fversion",
|
"fversion",
|
||||||
"errstr",
|
"errstr",
|
||||||
|
@ -95,6 +97,7 @@ trusscalls = {
|
||||||
"await",
|
"await",
|
||||||
"pread",
|
"pread",
|
||||||
"pwrite",
|
"pwrite",
|
||||||
|
"tsemacquire",
|
||||||
};
|
};
|
||||||
|
|
||||||
trussapecalls = {
|
trussapecalls = {
|
||||||
|
@ -135,6 +138,8 @@ trussapecalls = {
|
||||||
"_RENDEZVOUS",
|
"_RENDEZVOUS",
|
||||||
"_UNMOUNT",
|
"_UNMOUNT",
|
||||||
"__WAIT",
|
"__WAIT",
|
||||||
|
"_SEMACQUIRE",
|
||||||
|
"_SEMRELEASE",
|
||||||
"_SEEK",
|
"_SEEK",
|
||||||
"__NFVERSION",
|
"__NFVERSION",
|
||||||
"__NERRSTR",
|
"__NERRSTR",
|
||||||
|
@ -146,13 +151,16 @@ trussapecalls = {
|
||||||
"__NAWAIT",
|
"__NAWAIT",
|
||||||
"_PREAD",
|
"_PREAD",
|
||||||
"_PWRITE",
|
"_PWRITE",
|
||||||
|
"_TSEMACQUIRE",
|
||||||
};
|
};
|
||||||
|
|
||||||
defn addressof(pattern) {
|
defn addressof(pattern) {
|
||||||
// translate to ape system calls if we have an ape binary
|
// 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(pattern);
|
||||||
return _addressof(trussapecalls[match(pattern, trusscalls)]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
defn setuptruss() {
|
defn setuptruss() {
|
||||||
|
|
Loading…
Reference in a new issue