diff options
author | google <google@daverabbitz.ath.cx> | 2012-09-20 22:39:48 +1200 |
---|---|---|
committer | google <google@daverabbitz.ath.cx> | 2012-09-20 22:39:48 +1200 |
commit | fa7fb8b66b9ff50029532d09315f03896f2ac4c4 (patch) | |
tree | 262cfe8966f3c07a5ad6ed61fda028f6fa928a36 /sys/src/cmd/atazz/bit.c | |
parent | 913afc39c9b4750e630c7f4ff3161a37602b006b (diff) |
Add Erik Quanstrom's atazz
(needed to disable power management/head unload on 2.5" drive)
Diffstat (limited to 'sys/src/cmd/atazz/bit.c')
-rw-r--r-- | sys/src/cmd/atazz/bit.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/sys/src/cmd/atazz/bit.c b/sys/src/cmd/atazz/bit.c new file mode 100644 index 000000000..9e1f39352 --- /dev/null +++ b/sys/src/cmd/atazz/bit.c @@ -0,0 +1,71 @@ +#include <u.h> +#include <libc.h> +#include <fis.h> +#include "atazz.h" + +char* +sebtab(char *p, char *e, Btab *t, int nt, uint u) +{ + char *p0; + int i; + + p0 = p; + for(i = 0; i < nt; i++) + if(u & 1<< t[i].bit) + p = seprint(p, e, "%s ", t[i].name); + if(p > p0) + p--; + *p = 0; + return p; +} + +void +pw(uchar *p, ushort i) +{ + p[0] = i >> 0; + p[1] = i >> 8; +} + +void +pdw(uchar *p, uint i) +{ + p[0] = i >> 0; + p[1] = i >> 8; + p[2] = i >> 16; + p[3] = i >> 24; +} + +void +pqw(uchar *p, uvlong i) +{ + pdw(p, i); + pdw(p + 4, i >> 32); +} + +ushort +w(uchar *u) +{ + ushort r; + + r = u[0] << 0; + r |= u[1] << 8; + return r; +} + +uint +dw(uchar *u) +{ + ulong r; + + r = u[0] << 0; + r |= u[1] << 8; + r |= u[2] << 16; + r |= u[3] << 24; + return r; +} + +uvlong +qw(uchar *u) +{ + return dw(u) | (uvlong)dw(u + 4)<<32; +} |