diff 3504122012e3f7ee778efa048e462510619c13b4 uncommitted --- a/sys/src/libmach/8db.c +++ b/sys/src/libmach/8db.c @@ -127,6 +127,8 @@ if(++i > 1000) break; } + if(i == 0) + werrstr("no pc for sp %#llux", pc); return i; } --- a/sys/src/libmach/machdata.c +++ b/sys/src/libmach/machdata.c @@ -359,6 +359,8 @@ if(++i > 40) break; } + if(i == 0) + werrstr("no pc for sp %#llux", pc); return i; } @@ -395,6 +397,8 @@ if(++i > 40) break; } + if(i == 0) + werrstr("no pc for sp %#llux", pc); return i; }
Fri Sep 22 16:41:31 EDT 2023
Spgneler Spengler Spengler Spengler Spengler
Fri Sep 22 12:24:19 EDT 2023
From: Russ Cox <rsc@swtch.com> Date: Sat, 18 Jul 2020 23:52:58 +0000 Subject: [PATCH] acme: add font control message --- diff 4e5f39796d548fc1b530ae87e25f2db0830b5851 3504122012e3f7ee778efa048e462510619c13b4 --- a/sys/man/4/acme +++ b/sys/man/4/acme @@ -31,7 +31,7 @@ windows. Some of them are virtual versions of system files for dealing with the virtual console; others control operations -of +of .I acme itself. When a command is run under @@ -252,6 +252,11 @@ Equivalent to the .B Get interactive command with no arguments; accepts no arguments. +.TP +.BI font " path +Equivalent to the +.B Font +interactive command with a single (required) argument. .TP .B limit=addr When the --- a/sys/src/cmd/acme/xfid.c +++ b/sys/src/cmd/acme/xfid.c @@ -664,6 +664,24 @@ winsetname(w, r, nr); m += (q+1) - pp; }else + if(strncmp(p, "font ", 5) == 0){ /* execute font command */ + pp = p+5; + m = 5; + q = memchr(pp, '\n', e-pp); + if(q==nil || q==pp){ + err = Ebadctl; + break; + } + *q = 0; + nulls = FALSE; + cvttorunes(pp, q-pp, r, &nb, &nr, &nulls); + if(nulls){ + err = "nulls in font string"; + break; + } + fontx(&w->body, nil, nil, FALSE, XXX, r, nr); + m += (q+1) - pp; + }else if(strncmp(p, "dump ", 5) == 0){ /* set dump string */ pp = p+5; m = 5;
Fri Sep 22 03:46:15 EDT 2023
diff --git a/src/tipideed/send_file.c b/src/tipideed/send_file.c index 23a0373..d6f9122 100644 --- a/src/tipideed/send_file.c +++ b/src/tipideed/send_file.c @@ -102,7 +102,7 @@ void send_file (int fd, uint64_t n, char const *fn) while (n) { ssize_t r ; - buffer_rpeek(buffer_1, v) ; + buffer_wpeek(buffer_1, v) ; r = allreadv(fd, v, 2) ; if (r == -1) strerr_diefu2sys(111, "read from ", fn) ; if (!r) strerr_diefu3x(111, "serve ", fn, ": file was truncated") ; @@ -112,7 +112,7 @@ void send_file (int fd, uint64_t n, char const *fn) if (g.verbosity >= 2) strerr_warnw2x("serving elongated file: ", fn) ; } - buffer_rseek(buffer_1, r) ; + buffer_wseek(buffer_1, r) ; tain_add_g(&deadline, &g.writetto) ; if (!buffer_timed_flush_g(buffer_1, &deadline)) strerr_diefu1sys(111, "write to stdout") ;
Thu Sep 21 21:33:56 EDT 2023
From: Douglas McIlroy <douglas.mcilroy@dartmouth.edu> Date: Thu, 21 Sep 2023 21:08:13 -0400 To: TUHS main list <tuhs@tuhs.org> Message-ID-Hash: QSX7M7I6NWPMR333IXMFB6F2J7CEKHHK Subject: [TUHS] Re: UNIX Influence on Teletype and Vice Versa Archived-At: <https://www.tuhs.org/mailman3/hyperkitty/list/tuhs@tuhs.org/message/QSX7M7I6NWPMR333IXMFB6F2J7CEKHHK/> I omitted one crucial fact from my post about Joe Ossanna's influence on the TTY 37. That happened not in connection with Unix, but with Multics. When Unix came on the scene, model 37 was already in production. Doug
Thu Sep 21 20:15:14 EDT 2023
# Yes. /> Indeed. <i>Or is it?</i>
Thu Sep 21 20:13:56 EDT 2023
gmake --version
Thu Sep 21 17:10:11 EDT 2023
$ cat localhost:80/empty $ cat localhost:80/asdf asdf $ ktrace tipideed -f ../etc/tipidee.conf.cdb -v 5 tipideed: pid 3025: info: new connection from ip 1.0.0.0 (1.0.0.0) port 1234 GET /empty HTTP/1.1 host: localhost tipideed: pid 3025: info: request GET for host localhost path /empty tipideed: pid 3025: info: sending regular file localhost:80/empty (0 bytes) with type application/octet-stream GET /asdf HTTP/1.1 host: localhost connection: close tipideed: pid 3025: info: request GET for host localhost path /asdf tipideed: pid 3025: info: sending regular file localhost:80/asdf (5 bytes) with type application/octet-stream 1.1 200 OK Date: Thu, 21 Sep 2023 21:06:57 GMT Accept-Ranges: none Cache-Control: private Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe-inline'; Referrer-Policy: no-referrer-when-downgrade Server: tipidee/0.0.1.0 Vary: Accept-Encoding X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode=block Last-Modified: Thu, 21 Sep 2023 20:56:08 GMT Content-Type: application/octet-stream Content-Length: 0 HTTP/1.1 200 OK Date: Thu, 21 Sep 2023 21:07:10 GMT Accept-Ranges: none Cache-Control: private Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe-inline'; Referrer-Policy: no-referrer-when-downgrade Server: tipidee/0.0.1.0 Vary: Accept-Encoding X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode=block Connection: close Last-Modified: Thu, 21 Sep 2023 20:51:46 GMT Content-Type: application/octet-stream Content-Length: 5 tipideed: pid 3025: info: exiting 0 $ kdump 3025 ktrace RET ktrace 0 3025 ktrace CALL mmap(0,0xfd,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 ktrace RET mmap 17479103983616/0xfe5abc8b000 3025 ktrace CALL execve(0x7ef307604ba0,0x7ef307605190,0x7ef3076051c0) 3025 ktrace NAMI "/home/humm/bin/tipideed" 3025 ktrace ARGS [0] = "tipideed" [1] = "-f" [2] = "../etc/tipidee.conf.cdb" [3] = "-v" [4] = "5" 3025 tipideed NAMI "/usr/libexec/ld.so" 3025 tipideed RET execve JUSTRETURN 3025 tipideed CALL getentropy(0x7a901c79a670,40) 3025 tipideed RET getentropy 0 3025 tipideed CALL getentropy(0x7a901c79a670,40) 3025 tipideed RET getentropy 0 3025 tipideed CALL mmap(0,0x4000,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7181146914816/0x687fdb60000 3025 tipideed CALL mprotect(0x687fdb61000,0x2000,0x3<PROT_READ|PROT_WRITE>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179615981568/0x687a275d000 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL mprotect(0x6878cc6c000,0x1000,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mimmutable(0x6878cc6c000,0x1000) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178105749504/0x68748718000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178235310080/0x687502a7000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177807966208/0x68736b1b000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178624524288/0x687675d6000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179781206016/0x687ac4ef000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7180372881408/0x687cf933000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178386034688/0x68759265000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177478356992/0x687230c4000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179387437056/0x68794d68000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177782272000/0x6873529a000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7181070880768/0x687f92dd000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7180285292544/0x687ca5ab000 3025 tipideed CALL open(0x6878cb6c589,0x10000<O_RDONLY|O_CLOEXEC>) 3025 tipideed NAMI "/var/run/ld.so.hints" 3025 tipideed RET open 3 3025 tipideed CALL fstat(3,0x7a901c79a4a0) 3025 tipideed STRU struct stat { dev=1028, ino=259222, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=0<"wheel">, rdev=1040288, atime=1695280825<"Sep 21 09:20:25 2023">.039608300, mtime=1695280797<"Sep 21 09:19:57 2023">.239662656, ctime=1695280797<"Sep 21 09:19:57 2023">.239662656, size=50838, blocks=100, blksize=16384, flags=0x0, gen=0x0 } 3025 tipideed RET fstat 0 3025 tipideed CALL mmap(0,0xc696,0x1<PROT_READ>,0x2<MAP_PRIVATE>,3,0) 3025 tipideed RET mmap 7179602006016/0x687a1a09000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178866688000/0x68775cc8000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177660911616/0x6872dedd000 3025 tipideed CALL mimmutable(0x687a1a09000,0xc696) 3025 tipideed RET mimmutable 0 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL open(0x687a1a0fe6e,0x10000<O_RDONLY|O_CLOEXEC>) 3025 tipideed NAMI "/usr/lib/libc.so.97.1" 3025 tipideed RET open 3 3025 tipideed CALL fstat(3,0x7a901c79a570) 3025 tipideed STRU struct stat { dev=1029, ino=259309, mode=-r--r--r-- , nlink=1, uid=0<"root">, gid=7<"bin">, rdev=1097240, atime=1695330391<"Sep 21 23:06:31 2023">.659609445, mtime=1695280790<"Sep 21 09:19:50 2023">.409608139, ctime=1695280790<"Sep 21 09:19:50 2023">.499609234, size=3680384, blocks=7232, blksize=16384, flags=0x0, gen=0x0 } 3025 tipideed RET fstat 0 3025 tipideed CALL read(3,0x7a901c799060,0x1000) 3025 tipideed GIO fd 3 read 4096 bytes "\^?ELF\^B\^A\^A\0\0\0\0\0\0\0\0\0\^C\0>\0\^A\0\0\0\M^@y\^C\0\0\0\0\0@\ \0\0\0\0\0\0\0\M^@\^\8\0\0\0\0\0\0\0\0\0@\08\0\f\0@\0000\0.\0\^F\0\0\ \0\^D\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0\240\^B\0\0\0\ \0\0\0\240\^B\0\0\0\0\0\0\b\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\0\0\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ti\^C\0\0\0\0\0ti\^C\0\0\0\0\0\ \0\^P\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\M^@i\^C\0\0\0\0\0\M^@y\^C\0\0\0\0\ \0\M^@y\^C\0\0\0\0\0\M^P\M^^ \0\0\0\0\0\M^P\M^^ \0\0\0\0\0\0\^P\0\0\0\0\0\0\^A\0\0\0\^F\0\0\0\^P\b\^N\0\0\0\0\0\^P(\ \^N\0\0\0\0\0\^P(\^N\0\0\0\0\0pV\0\0\0\0\0\0pV\0\0\0\0\0\0\0\^P\0\0\0\ \0\0\0\^A\0\0\0\^F\0\0\0\M^@^\^N\0\0\0\0\0\M^@\M^N\^N\0\0\0\0\0\M^@\ \M^N\^N\0\0\0\0\0\M^@1\0\0\0\0\0\0\\ \^A\0\0\0\0\0\0\^P\0\0\0\0\0\ \0\^B\0\0\0\^F\0\0\0\b\\\^N\0\0\0\0\0\b|\^N\0\0\0\0\0\b|\^N\0\0\0\0\0\ @\^A\0\0\0\0\0\0@\^A\0\0\0\0\0\0\b\0\0\0\0\0\0\0R\M-etd\^D\0\0\0\^P\b\ \^N\0\0\0\0\0\^P(\^N\0\0\0\0\0\^P(\^N\0\0\0\0\0pV\0\0\0\0\0\0\M-pW\0\ \0\0\0\0\0\^A\0\0\0\0\0\0\0P\M-etd\^D\0\0\0\M-p"\^B\0\0\0\0\0\M-p"\^B\ \0\0\0\0\0\M-p"\^B\0\0\0\0\0L5\0\0\0\0\0\0L5\0\0\0\0\0\0\^D\0\0\0\0\0\ \0\0\M-e\M-[\M-#e\^F\0\0\0\0\M^@\^N\0\0\0\0\0\0\M-0\^N\0\0\0\0\0\0\ \M-0\^N\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\0\^P\0\0\0\0\0\0\ \M-f\M-[\M-#e\^F\0\0\0\^P\b\^N\0\0\0\0\0\^P(\^N\0\0\0\0\0\^P(\^N\0\0\ \0\0\0\M-03\0\0\0\0\0\0\M-03\0\0\0\0\0\0\b\0\0\0\0\0\0\0Q\M-etd\^F\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^D\0\0\0\^D\0\0\0\M-`\^B\0\0\0\0\0\0\ \M-`\^B\0\0\0\0\0\0\M-`\^B\0\0\0\0\0\0\^X\0\0\0\0\0\0\0\^X\0\0\0\0\0\ \0\0\^D\0\0\0\0\0\0\0\b\0\0\0\^D\0\0\0\^A\0\0\0OpenBSD\0\0\0\0\0\0\0\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0e\^P\0\0\^R\0\v\0\M-P\M-S\ \^E\0\0\0\0\0@\0\0\0\0\0\0\0&.\0\0"\0\v\0\M-p\\ \0\0\0\0\0M\0\0\0\0\0\0\0d2\0\0"\0\v\0\^P\M-e \0\0\0\0\0.\^B\0\0\0\0\0\0>3\0\0\^R\0\v\0\0\M-y \0\0\0\0\0P\0\0\0\0\0\0\0\M--B\0\0"\0\v\0\M-@\M^X\f\0\0\0\0\0\M-!\^A\ \0\0\0\0\0\0\M-\\^T\0\0"\0\v\0\M-0[\^F\0\0\0\0\0\^N\0\0\0\0\0\0\0\^^8\ \0\0\^R\0\v\0000\M^E\v\0\0\0\0\0p\0\0\0\0\0\0\0\M-m9\0\0\^R\0\v\0\M-`\ \M^]\v\0\0\0\0\0P\^C\0\0\0\0\0\0g*\0\0"\0\v\0p\M-l \0\0\0\0\0\ \M-5\0\0\0\0\0\0\0\^E\^C\0\0"\0\v\0\M-@\M-`\^C\0\0\0\0\0M\0\0\0\0\0\0\ \0\M-&\^E\0\0"\0\v\0\240\^Y\^D\0\0\0\0\0\240\0\0\0\0\0\0\0\M-X \0\0"\ \0\v\0\0\M^Z\^D\0\0\0\0\0M\0\0\0\0\0\0\0\M^M9\0\0"\0\v\0\M-p\M^[\v\0\ \0\0\0\0M\0\0\0\0\0\0\0\M--G\0\0"\0\v\0`\^C\r\0\0\0\0\0\^T\0\0\0\0\0\ \0\0\M-`\f\0\0"\0\v\0 $\^E\0\0\0\0\0\M^U\0\0\0\0\0\0\0@\^T\0\0"\0\v\0\ @W\^F\0\0\0\0\0@\0\0\0\0\0\0\0\M^O\^T\0\0"\0\v\0\M-0X\^F\0\0\0\0\0M\0\ \0\0\0\0\0\0\M-~#\0\0"\0\v\0\M-0\M-W\b\0\0\0\0\0M\0\0\0\0\0\0\00078\0\ \0\^R\0\v\0\M^P\M^G\v\0\0\0\0\0M\0\0\0\0\0\0\0\M-d'\0\0"\0\v\0\M-0K\ \0\0\0\0\0M\0\0\0\0\0\0\0\M^M.\0\0\^R\0\v\0\M-p` \0\0\0\0\0000\0\0\0\0\0\0\0c0\0\0"\0\v\0\M-p\M-= \0\0\0\0\0@\^A\0\0\0\0\0\0\M^W7\0\0"\0\v\0\240a\v\0\0\0\0\0\M^E\0\0\0\ \0\0\0\0,\r\0\0\^R\0\v\0\M-@5\^E\0\0\0\0\0\M-4\0\0\0\0\0\0\0D\^Z\0\0\ \^R\0\v\0pz\a\0\0\0\0\0m\0\0\0\0\0\0\0\M-I/\0\0"\0\v\0\M-P\240 \0\0\0\0\0\M-`\^E\0\0\0\0\0\00056\0\0"\0\v\0000D\v\0\0\0\0\0M\0\0\0\0\ \0\0\0\M^Y\r\0\0"\0\v\0 E\^E\0\0\0\0\0\M-0\0\0\0\0\0\0\0'\^\\0\0\^R\0\ \v\0 \M^W\a\0\0\0\0\0K\a\0\0\0\0\0\0>1\0\0\^Q\0\^S\08\M-!\^N\0\0\0\0\ \0\b\0\0\0\0\0\0\0\M-'E\0\0\^R\0\v\0 \M-Z\f\0\0\0\0\0p\0\0\0\0\0\0\0\ \M^@\^N\0\0"\0\v\0\M-Ps\^E\0\0\0\0\0007\^A\0\0\0\0\0\0\M-}\^\\0\0"\0\ \v\0\M-`\f\b\0\0\0\0\0p\0\0\0\0\0\0\0\M-Y\^_\0\0\^R\0\v\0\M^Pe\b\0\0\ \0\0\0@\0\0\0\0\0\0\0H\b\0\0"\0\v\0PJ\^D\0\0\0\0\0M\0\0\0\0\0\0\0H!\0\ \0"\0\v\0Pw\b\0\0\0\0\0K\^A\0\0\0\0\0\0G2\0\0"\0\v\0\0\M-a \0\0\0\0\0p\^A\0\0\0\0\0\0\M-z9\0\0"\0\v\0p\M-"\v\0\0\0\0\0]\0\0\0\0\ \0\0\0\M-9>\0\0"\0\v\0`A\f\0\0\0\0\0@\0\0\0\0\0\0\0\M-/\b\0\0\^R\0\v\ \0\M-pM\^D\0\0\0\0\0\M-0\^F\0\0\0\0\0\0\^W\^_\0\0\^R\0\v\00007\b\0\0\ \0\0\0n\^A\0\0\0\0\0\0\M-Y%\0\0\^R\0\v\0000- \0\0\0\0\0-\0\0\0\0\0\ \0\0+(\0\0\^R\0\v\0\M^PO \0\0\0\0\0\M^@\0\0\0\0\0\0\0\M->8\0\0\ \^R\0\v\0\M^P\M^R\v\0\0\0\0\0P\0\0\0\0\0\0\0\M-%;\0\0"\0\v\0\^P\M-O\v\ \0\0\0\0\0M\0\0\0\0\0\0\0\M-U\^N\0\0"\0\v\0\0x\^E\0\0\0\0\0\M-*\^A\0\ \0\0\0\0\0\M^I\b\0\0"\0\v\0`M\^D\0\0\0\0\0\M^@\0\0\0\0\0\0\0m&\0\0"\0\ \v\0\M-P; \0\0\0\0\0\M^P\0\0\0\0\0\0\0\M-s\^S\0\0"\0\v\0\M-p;\ \^F\0\0\0\0\0\240\0\0\0\0\0\0\0-\^Z\0\0"\0\v\0@y\a\0\0\0\0\0e\0\0\0\0\ \0\0\0\M-Z&\0\0\^R\0\v\0\^PA \0\0\0\0\0`\0\0\0\0\0\0\0\^Z(\0\0"\0\ \v\0\M-@M \0\0\0\0\0000\^A\0\0\0\0\0\0\^O;\0\0"\0\v\0\M-p\M-<\v\ \0\0\0\0\0\M-k\^B\0\0\0\0\0\09>\0\0"\0\v\0\0002\f\0\0\0\0\0|\^B\0\0\0\ \0\0\0\M^TF\0\0"\0\v\0\^P\M-n\f\0\0\0\0\0\M-@\0\0\0\0\0\0\0\M^_I\0\0"\ \0\v\0`&\r\0\0\0\0\0\M-0\0\0\0\0\0\0\0AL\0\0\^R\0\v\0\M^P\M^?\r\0\0\0\ \0\0-\0\0\0\0\0\0\0x\^]\0\0\^Q\0\^U\0X%\^O\0\0\0\0\0\^D\0\0\0\0\0\0\0\ [ \0\0\^R\0\v\0\M-0h\b\0\0\0\0\0M\0\0\0\0\0\0\0\^O,\0\0"\0\v\0\M-@! \0\0\0\0\0\M^@\0\0\0\0\0\0\0\M-S\^\\0\0"\0\v\0P\v\b\0\0\0\0\0`\0\0\0\ \0\0\0\0>#\0\0"\0\v\0\0\M-7\b\0\0\0\0\0\M-@\0\0\0\0\0\0\0X4\0\0\^R\0\ \v\0P(\v\0\0\0\0\0\M-@\0\0\0\0\0\0\0dF\0\0"\0\v\0\M-`\M-f\f\0\0\0\0\0\ \M-0\0\0\0\0\0\0\0\M-QG\0\0"\0\v\0 \^F\r\0\0\0\0\0P\^A\0\0\0\0\0\0\ \240\f\0\0"\0\v\0\M-P\^\\^E\0\0\0\0\0\M^@\0\0\0\0\0\0\0]/\0\0"\0\v\0`\ \M^Z \0\0\0\0\0\^R\0\0\0\0\0\0\0\M-LG\0\0"\0\v\0\M-P\^C\r\0\0\0\0\0P\^B\0\ \0\0\0\0\0-H\0\0"\0\v\0\M-p\r\r\0\0\0\0\0M\0\0\0\0\0\0\0Y\^T\0\0\^R\0\ \v\0`X\^F\0\0\0\0\0M\0\0\0\0\0\0\0\M-]$\0\0\^R\0\v\0\^P' \0\0\ \0\0\0P\0\0\0\0\0\0\0\M-_\^D\0\0"\0\v\0\0\^U\^D\0\0\0\0\0\^R\0\0\0\0\ \0\0\0W\^E\0\0\^R\0\v\0\M-`\^W\^D\0\0\0\0\0M\0\0\0\0\0\0\0qF\0\0"\0\v\ \0\M^P\M-g\f\0\0\0\0\0\240\0\0\0\0\0\0\0s\^[\0\0\^R\0\v\0\M^P\M^M\a\0\ \0\0\0\0P\0\0\0\0\0\0\0\M-y!\0\0"\0\v\0\M-p\M-$\b\0\0\0\0\0000\0\0\0\ \0\0\0\0\M-7\a\0\0!\0\b\0x\M-|\^A\0\0\0\0\0\^P\0\0\0\0\0\0\0\M-%\^U\0\ \0\^R\0\v\0\M-@f\^F\0\0\0\0\0M\0\0\0\0\0\0\0K\^W\0\0"\0\v\0\M-0\M^B\ \^F\0\0\0\0\0P\0\0\0\0\0\0\0\M-C\^Y\0\0\^R\0\v\0pt\a\0\0\0\0\0\M-p\0\ \0\0\0\0\0\0\M^V%\0\0\^R\0\v\0\M-0+ \0\0\0\0\0M\0\0\0\0\0\0\0\M^_\ &\0\0"\0\v\0\240= \0\0\0\0\0\M-D\0\0\0\0\0\0\0T(\0\0\^R\0\v\0\0\ \M^Y \0\0\0\0\0\^U\0\0\0\0\0\0\0E7\0\0"\0\v\0PV\v\0\0\0\0\0p\^A\0\ \0\0\0\0\0\M^B8\0\0"\0\v\0P\M^Q\v\0\0\0\0\0M\0\0\0\0\0\0\0006I\0\0"\0\ \v\0\M-p\^T\r\0\0\0\0\0000\0\0\0\0\0\0\0\M^PI\0\0"\0\v\0\M-P$\r\0\0\0\ \0\0%\^A\0\0\0\0\0\0\^V\^F\0\0"\0\v\0@&\^D\0\0\0\0\0000\0\0\0\0\0\0\0\ \M-H\a\0\0!\0\b\0\M^H\M-|\^A\0\0\0\0\0\^P\0\0\0\0\0\0\0\M-6\^R\0\0\^R\ \0\v\0\0\r\^F\0\0\0\0\0M\0\0\0\0\0\0\0\^[0\0\0"\0\v\0000\M-+ \0\0\0\0\0\M-p\0\0\0\0\0\0\0\\?\0\0\^R\0\v\0\0Q\f\0\0\0\0\0P\0\0\0\0\ \0\0\0\M^H?\0\0\^R\0\v\0\M-`z\f\0\0\0\0\0M\0\0\0\0\0\0\0\M-r?\0\0"\0\ \v\0P\M^D\f\0\0\0\0\0@\0\0\0\0\0\0\0\M-2L\0\0"\0\v\0\0\^B\^N\0\0\0\0\ \0P\0\0\0\0\0\0\0\M-GM\0\0"\0\v\0\M^@\^U\^N\0\0\0\0\0p\0\0\0\0\0\0\0\ \M-=\^D\0\0"\0\v\0P\^Q\^D\0\0\0\0\0\M-0\0\0\0\0\0\0\0\^D\f\0\0"\0\v\0\ \240\r\^E\0\0\0\0\0P\0\0\0\0\0\0\0c<\0\0\^R\0\v\0\M-p\M-r\v\0\0\0\0\0\ \M-p\0\0\0\0\0\0\0rH\0\0"\0\v\0000\^R\r\0\0\0\0\0000\0\0\0\0\0\0\0\ \M-Y\0\0\0\^R\0\v\0P\M^A\^C\0\0\0\0\0M\0\0\0\0\0\0\0 \^A\0\0"\0\v\ \0p\M^D\^C\0\0\0\0\0@\0\0\0\0\0\0\0002\^N\0\0"\0\v\0\M^@O\^E\0\0\0\0\ \0p\^N\0\0\0\0\0\0\M-@\^O\0\0"\0\v\0\M^@\M-B\^E\0\0\0\0\0000\0\0\0\0\ \0\0\0002\^_\0\0"\0\v\0\M-0?\b\0\0\0\0\0\^\\0\0\0\0\0\0\0L8\0\0"\0\v\ \0\M^P\M^G\v\0\0\0\0\0M\0\0\0\0\0\0\0\M-'I\0\0"\0\v\0\^P'\r\0\0\0\0\0\ @\^B\0\0\0\0\0\0\M-0I\0\0"\0\v\0P)\r\0\0\0\0\0\M-0\^B\0\0\0\0\0\0\M--\ /\0\0"\0\v\0000\240 \0\0\0\0\0\240\0\0\0\0\0\0\0\M^I0\0\0"\0\v\0000\M-@ \0\0\0\0\0M\0\0\0\0\0\0\0'G\0\0"\0\v\0P\M-v\f\0\0\0\0\0\^\\0\0\0\0\0\ \0\0\M-NK\0\0\^Q\0\^N\0\M-Pw\^N\0\0\0\0\0\0\^C\0\0\0\0\0\0\rN\0\0"\0\ \v\0\M^P\^W\^N\0\0\0\0\0M\0\0\0\0\0\0\0?\^P\0\0\^R\0\v\0\M-P\M-N\^E\0\ \0\0\0\0\^]\0\0\0\0\0\0\0&\^X\0\0"\0\v\0\M-P\M-8\^F\0\0\0\0\0\^B\a\0\ \0\0\0\0\0\f \0\0\^R\0\v\0\M^@g\b\0\0\0\0\0M\0\0\0\0\0\0\0\M-7@\0\0"\ \0\v\0\M-`\M^G\f\0\0\0\0\0@\0\0\0\0\0\0\0\M-{F\0\0\^R\0\v\0p\M-s\f\0\ \0\0\0\0M\0\0\0\0\0\0\0\M-YJ\0\0"\0\v\0\M-0\M-7\r\0\0\0\0\0\M-P\0\0\0\ \0\0\0\0JK\0\0"\0\v\0 \M-E\r\0\0\0\0\0\M^@\0\0\0\0\0\0\0S\^A\0\0"\0\v\ \0@\M^X\^C\0\0\0\0\0M\0\0\0\0\0\0\0`\^D\0\0\^R\0\v\0\240\M-r\^C\0\0\0\ \0\0M\0\0\0\0\0\0\0J(\0\0"\0\v\0\M-0\M^X \0\0\0\0\0M\0\0\0\0\0\ \0\0\M^M8\0\0\^R\0\v\0\240\M^Q\v\0\0\0\0\0M\0\0\0\0\0\0\0\^W\^E\0\0"\ \0\v\0\240\^V\^D\0\0\0\0\0`\0\0\0\0\0\0\0\M^W\^X\0\0"\0\v\0\M-pX\a\0\ \0\0\0\0\^N\0\0\0\0\0\0\0000$\0\0\^R\0\v\0@ \0\0\0\0\0p\0\0\0\0\0\0\0a$\0\0\^R\0\v\0000\^Y \0\0\0\0\0M\0\ \0\0\0\0\0\0P\0\0\0"\0\v\0\^P|\^C\0\0\0\0\0\M-+\0\0\0\0\0\0\0\M-L\b\0\ \0"\0\v\0\0W\^D\0\0\0\0\0=\0\0\0\0\0\0\0N\^X\0\0"\0\v\0\240\^F\a\0\0\ \0\0\0\240\^A\0\0\0\0\0\0\M-*\^\\0\0"\0\v\0@\b\b\0\0\0\0\0\M-`\0\0\0\ \0\0\0\0y>\0\0"\0\v\0\0005\f\0\0\0\0\0P\0\0\0\0\0\0\0\M-f\f\0\0\^R\0\ \v\0\M-@$\^E\0\0\0\0\0\M-P\0\0\0\0\0\0\0G\^Y\0\0"\0\v\0\M^@k\a\0\0\0\ \0\0\240\^A\0\0\0\0\0\0\M^A\^_\0\0"\0\v\0\M-pZ\b\0\0\0\0\0!\^B\0\0\0\ \0\0\0\M-M1\0\0\^R\0\v\0\M-@\M-P \0\0\0\0\0\^X\0\0\0\0\0\0\0\M-T$\0\0\^R\0\v\0\M-P& \0\0\0\0\0@\0\ \0\0\0\0\0\0" 3025 tipideed RET read 4096/0x1000 3025 tipideed CALL mmap(0,0xfa000,0<PROT_NONE>,0x2<MAP_PRIVATE>,3,0) 3025 tipideed RET mmap 7180002275328/0x687b97c3000 3025 tipideed CALL mmap(0x687b97c3000,0x37000,0x1<PROT_READ>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0) 3025 tipideed RET mmap 7180002275328/0x687b97c3000 3025 tipideed CALL mmap(0x687b97fa000,0xab000,0x4<PROT_EXEC>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0x36000) 3025 tipideed RET mmap 7180002500608/0x687b97fa000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177133252608/0x6870e7a6000 3025 tipideed CALL mmap(0x687b98a5000,0x6000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xe0000) 3025 tipideed RET mmap 7180003201024/0x687b98a5000 3025 tipideed CALL mmap(0x687b98ab000,0x4000,0x3<PROT_READ|PROT_WRITE>,0x12<MAP_PRIVATE|MAP_FIXED>,3,0xe5000) 3025 tipideed RET mmap 7180003225600/0x687b98ab000 3025 tipideed CALL mmap(0x687b98af000,0xe000,0x3<PROT_READ|PROT_WRITE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7180003241984/0x687b98af000 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178690117632/0x6876b464000 3025 tipideed CALL msyscall(0x687b97fa000,0xab000) 3025 tipideed RET msyscall 0 3025 tipideed CALL pinsyscall(0x3b,0x687b985f5a0,0x4d) 3025 tipideed RET pinsyscall 0 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178179813376/0x6874cdba000 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177518817280/0x6872575a000 3025 tipideed CALL getthrid() 3025 tipideed RET getthrid 186056/0x2d6c8 3025 tipideed CALL __set_tcb(0x687675d6a40) 3025 tipideed RET __set_tcb 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL mprotect(0x687b98a5810,0x57f0,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mimmutable(0x687b98a5810,0x57f0) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mimmutable(0x687b97c3000,0xe2810) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mimmutable(0x687b98ab000,0x3000) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mimmutable(0x687b98af000,0xe000) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mprotect(0x6850c80bdc0,0x1240,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mimmutable(0x6850c80bdc0,0x1240) 3025 tipideed RET mimmutable 0 3025 tipideed CALL kbind(0x7a901c79a6b8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c79a668,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL getentropy(0x7a901c79a670,40) 3025 tipideed RET getentropy 0 3025 tipideed CALL mmap(0,0x450,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177542619136/0x68726e0d000 3025 tipideed CALL minherit(0x68726e0d000,0x450,MAP_INHERIT_ZERO) 3025 tipideed RET minherit 0 3025 tipideed CALL kbind(0x7a901c79a648,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL sigaction(SIGTERM,0,0x7a901c79a718) 3025 tipideed STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> } 3025 tipideed RET sigaction 0 3025 tipideed CALL kbind(0x7a901c79a648,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL sigaction(SIGTERM,0x7a901c79a6e0,0x7a901c79a6d0) 3025 tipideed STRU struct sigaction { handler=0x6850c809190, mask=0<>, flags=0x2<SA_RESTART> } 3025 tipideed STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> } 3025 tipideed RET sigaction 0 3025 tipideed CALL sigaction(SIGCHLD,0x7a901c79a6e0,0x7a901c79a6d0) 3025 tipideed STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0x2<SA_RESTART> } 3025 tipideed STRU struct sigaction { handler=SIG_DFL, mask=0<>, flags=0<> } 3025 tipideed RET sigaction 0 3025 tipideed CALL kbind(0x7a901c79a648,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL write(199,0x7a901c79a734,0x4) 3025 tipideed RET write -1 errno 9 Bad file descriptor 3025 tipideed CALL kbind(0x7a901c79a7f8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL mmap(0x6878cb6f000,0x2000,0<PROT_NONE>,0x1012<MAP_PRIVATE|MAP_FIXED|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179251150848/0x6878cb6f000 3025 tipideed CALL mimmutable(0x6878cb6f000,0x2000) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mmap(0,0x1000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7180217962496/0x687c6575000 3025 tipideed CALL mprotect(0x687c6575000,0x1000,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL kbind(0x7a901c79a7e8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL mprotect(0x687c6575000,0x1000,0x3<PROT_READ|PROT_WRITE>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mprotect(0x687c6575000,0x1000,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL kbind(0x7a901c796fb8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL getpid() 3025 tipideed RET getpid 3025/0xbd1 3025 tipideed CALL kbind(0x7a901c796f38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL open(0x7a901c79ab84,0x10004<O_RDONLY|O_NONBLOCK|O_CLOEXEC>) 3025 tipideed NAMI "../etc/tipidee.conf.cdb" 3025 tipideed RET open 3 3025 tipideed CALL kbind(0x7a901c796eb8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL fstat(3,0x7a901c796f80) 3025 tipideed STRU struct stat { dev=1036, ino=52719, mode=-rw-r--r-- , nlink=1, uid=1000<"humm">, gid=1000<"humm">, rdev=269395, atime=1695327950<"Sep 21 22:25:50 2023">.209662843, mtime=1695327948<"Sep 21 22:25:48 2023">.339662704, ctime=1695327948<"Sep 21 22:25:48 2023">.349609889, size=5568, blocks=12, blksize=16384, flags=0x0, gen=0x0 } 3025 tipideed RET fstat 0 3025 tipideed CALL kbind(0x7a901c796eb8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL mmap(0,0x15c0,0x1<PROT_READ>,0x1<MAP_SHARED>,3,0) 3025 tipideed RET mmap 7180162752512/0x687c30ce000 3025 tipideed CALL kbind(0x7a901c796f48,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796f48,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL kbind(0x7a901c796b38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL sysctl(2.12<vm.malloc_conf>,0x7a901c796b50,0x7a901c796b68,0,0) 3025 tipideed RET sysctl 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL mmap(0,0xdcc0,0<PROT_NONE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178965946368/0x6877bb71000 3025 tipideed CALL mprotect(0x6877bb72000,0xbcc0,0x3<PROT_READ|PROT_WRITE>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mimmutable(0x6877bb71000,0xdcc0) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mprotect(0x687b98ae000,0x1000,0x1<PROT_READ>) 3025 tipideed RET mprotect 0 3025 tipideed CALL mimmutable(0x687b98ae000,0x1000) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mmap(0,0x2200,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7181175500800/0x687ff6a3000 3025 tipideed CALL mimmutable(0x687ff6a3000,0x2200) 3025 tipideed RET mimmutable 0 3025 tipideed CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7180760088576/0x687e6a78000 3025 tipideed CALL mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179578818560/0x687a03ec000 3025 tipideed CALL mmap(0,0x3000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7179342147584/0x68792237000 3025 tipideed CALL kbind(0x7a901c796b38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL __getcwd(0x687e6ab7600,128) 3025 tipideed NAMI "/home/humm/www" 3025 tipideed RET __getcwd 0 3025 tipideed CALL kbind(0x7a901c796b38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796b38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796b58,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796e08,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796f98,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL fcntl(0,F_GETFL) 3025 tipideed RET fcntl 2 3025 tipideed CALL fcntl(0,F_SETFL,0x6<O_RDWR|O_NONBLOCK>) 3025 tipideed RET fcntl 0 3025 tipideed CALL fcntl(1,F_GETFL) 3025 tipideed RET fcntl 6 3025 tipideed CALL sigaction(SIGCHLD,0x7a901c797020,0) 3025 tipideed STRU struct sigaction { handler=0x6850c7ef770, mask=~0x80000000<SIGTHR>, flags=0xa<SA_RESTART|SA_NOCLDSTOP> } 3025 tipideed RET sigaction 0 3025 tipideed CALL kbind(0x7a901c796f38,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796e58,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL writev(2,0x7a901c796f50,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812b50, len=77 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 77 bytes "tipideed: pid 3025: info: new connection from ip 1.0.0.0 (1.0.0.0) po\ rt 1234 " 3025 tipideed RET writev 77/0x4d 3025 tipideed CALL kbind(0x7a901c796da8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796d88,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL readv(0,0x7a901c796e80,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb50, len=8191 } { base=0x0, len=0 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL kbind(0x7a901c796de8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL ppoll(0x7a901c796f60,1,0x7a901c796eb0,0) 3025 tipideed STRU struct timespec { 2305843009213693952 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e80,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb50, len=8191 } { base=0x0, len=0 } 3025 tipideed GIO fd 0 read 20 bytes "GET /empty HTTP/1.1 " 3025 tipideed RET readv 20/0x14 3025 tipideed CALL kbind(0x7a901c796ee8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796ed8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796e78,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb64, len=8172 } { base=0x6850c80eb50, len=19 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796ed0,1,0x7a901c796e20,0) 3025 tipideed STRU struct timespec { 2305843009213693945.777006406 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb64, len=8172 } { base=0x6850c80eb50, len=19 } 3025 tipideed GIO fd 0 read 16 bytes "host: localhost " 3025 tipideed RET readv 16/0x10 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb74, len=8156 } { base=0x6850c80eb50, len=35 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796ed0,1,0x7a901c796e20,0) 3025 tipideed STRU struct timespec { 2305843009213693942.423024882 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb74, len=8156 } { base=0x6850c80eb50, len=35 } 3025 tipideed GIO fd 0 read 1 bytes " " 3025 tipideed RET readv 1 3025 tipideed CALL kbind(0x7a901c796e78,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796fb8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL writev(2,0x7a901c796ef0,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812b9d, len=69 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 69 bytes "tipideed: pid 3025: info: request GET for host localhost path /empty " 3025 tipideed RET writev 69/0x45 3025 tipideed CALL kbind(0x7a901c796db8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL stat(0x7a901c796e80,0x7a901c796f60) 3025 tipideed NAMI "localhost:80/empty" 3025 tipideed STRU struct stat { dev=1036, ino=53577, mode=-rw-r--r-- , nlink=1, uid=1000<"humm">, gid=1000<"humm">, rdev=0, atime=1695330072<"Sep 21 23:01:12 2023">.259663130, mtime=1695329805<"Sep 21 22:56:45 2023">.409608533, ctime=1695329805<"Sep 21 22:56:45 2023">.409608533, size=0, blocks=0, blksize=16384, flags=0x0, gen=0x0 } 3025 tipideed RET stat 0 3025 tipideed CALL kbind(0x7a901c796c58,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL __realpath(0x7a901c796e80,0x7a901c796900) 3025 tipideed NAMI "localhost:80/empty" 3025 tipideed NAMI "/home/humm/www/localhost:80/empty" 3025 tipideed RET __realpath 0 3025 tipideed CALL kbind(0x7a901c796c18,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL kbind(0x7a901c796a58,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL mmap(0,0x5000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178984497152/0x6877cd22000 3025 tipideed CALL mmap(0,0xb000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177982324736/0x68741163000 3025 tipideed CALL open(0x687b97e1b31,0<O_RDONLY>) 3025 tipideed NAMI "/etc/localtime" 3025 tipideed RET open 3 3025 tipideed CALL read(3,0x68741163000,0xa1e8) 3025 tipideed GIO fd 3 read 2309 bytes "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\b\0\0\0\0\0\0\0\M^P\ \0\0\0\b\0\0\0\^N\M^[\f\^W`\M^[\M-U\M-Z\M-p\M^\\M-Y\M-.\M^P\M^]\M-$\ \M-5\M^P\M^^\M-9\M^P\M^P\M^_\M^D\M^W\M^P\M-H q\M^P\M-L\M-gK\^P\M-M\ \M-)\^W\M^P\M-N\M-"C\^P\M-O\M^R4\^P\M-P\M^B%\^P\M-Qr\^V\^P\M-Q\M-6\ \M^V\0\M-RX\M->\M^@\M-R\M-!O\^P\M-R\M-[4\M-p\M-Sc\^[\M^P\M-TK#\M^P\ \M-U9\M-Q \M-Ug\M-g\M^P\M-U\M-(s\0\M-V)\M-4\^P\M-W,\^Z\^P\M-X \M^V\ \^P\M-Y\^B\M-A\M^P\M-Y\M-ix\^P\^R\M-N\M^W\M-p\^SMD\^P\^T3\M-z\M^P\^U#\ \M-k\M^P\^V\^S\M-\\M^P\^W\^C\M-M\M^P\^W\M-s\M->\M^P\^X\M-c\M-/\M^P\^Y\ \M-S\240\M^P\^Z\M-C\M^Q\M^P\^[\M-<\M-=\^P\^\\M-,\M-.\^P\^]\M^\\M^_\^P\ \^^\M^L\M^P\^P\^_|\M^A\^P lr\^P!\\c\^P"LT\^P#<E\^P$,6\^P%\^\'\^P&\f\ \^X\^P'\^EC\M^P'\M-u4\M^P(\M-e%\M^P)\M-U\^V\M^P*\M-E\a\M^P+\M-4\M-x\ \M^P,\M-$\M-i\M^P-\M^T\M-Z\M^P.\M^D\M-K\M^P/t\M-<\M^P0d\M--\M^P1]\M-Y\ \^P2r\M-4\^P3=\M-;\^P4R\M^V\^P5\^]\M^]\^P62x\^P6\M-}\^?\^P8\^[\M^T\ \M^P8\M-]a\^P9\M-{v\M^P:\M-=C\^P;\M-[X\M^P<\M-&_\M^P=\M-;:\M^P>\M^FA\ \M^P?\M^[\^\\M^P@f#\M^PA\M^D9\^PBF\^E\M^PCd\^[\^PD%\M-g\M^PEC\M-}\^PF\ \^E\M-I\M^PG#\M-_\^PG\M-n\M-f\^PI\^C\M-A\^PI\M-N\M-H\^PJ\M-c\M-#\^PK\ \M-.\M-*\^PL\M-L\M-?\M^PM\M^N\M^L\^PN\M-,\M-!\M^POnn\^PP\M^L\M^C\M^PQ\ W\M^J\M^PRle\M^PS7l\M^PTLG\M^PU\^WN\M^PV,)\M^PV\M-w0\M^PX\^UF\^PX\M-W\ \^R\M^PY\M-u(\^PZ\M-6\M-t\M^P[\M-U \^P\\\240\^Q\^P]\M-4\M-l\^P^\^?\M-s\^P_\M^T\M-N\^P`_\M-U\^Pa}\M-j\M^P\ b?\M-7\^Pc]\M-L\M^Pd\^_\M^Y\^Pe=\M-.\M^Pf\b\M-5\M^Pg\^]\M^P\M^Pg\M-h\ \M^W\M^Ph\M-}r\M^Pi\M-Hy\M^Pj\M-]T\M^Pk\M-([\M^Pl\M-Fq\^Pm\M^H=\M^Pn\ \M-&S\^Poh\^_\M^Pp\M^F5\^PqQ<\^Prf\^W\^Ps1\^^\^PtE\M-y\^Pu\^Q\0\^Pv/\ \^U\M^Pv\M-p\M-b\^Px\^N\M-w\M^Px\M-P\M-D\^Py\M-n\M-Y\M^Pz\M-0\M-&\^P{\ \M-N\M-;\M^P|\M^Y\M-B\M^P}\M-.\M^]\M^P~y\M-$\M^P\^?\M^N\^?\M^P\0\^A\ \^B\^C\^B\^C\^B\^C\^B\^C\^B\^C\^B\^D\0\^C\^A\^B\^C\^B\^E\0\^C\^B\^C\ \^B\^C\^A\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\ \^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\ \a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\ \^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\a\^F\ \a\^F\a\^F\a\^F\a\^F\a\^F\a\0\0\^\ \^A\0\0\0\^N\^P\0\^E\0\0\^\ \^A\0\ \0\0\^N\^P\0\^E\0\0*0\^A \0\0*0\^A \0\0\^\ \^A\0\0\0\^N\ \^P\0\^ECEST\0CET\0CEMT\0\0\0\^A\^A\0\^A\^A\^A\0\0\0\0\0\0\^A\^ATZif2\ \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0 \0\0\0\0\0\0\0\M^Q\0\ \0\0 \0\0\0\^R\M^?\M^?\M^?\M^?o\M-"a\M-x\M^?\M^?\M^?\M^?\M^[\f\^W`\ \M^?\M^?\M^?\M^?\M^[\M-U\M-Z\M-p\M^?\M^?\M^?\M^?\M^\\M-Y\M-.\M^P\M^?\ \M^?\M^?\M^?\M^]\M-$\M-5\M^P\M^?\M^?\M^?\M^?\M^^\M-9\M^P\M^P\M^?\M^?\ \M^?\M^?\M^_\M^D\M^W\M^P\M^?\M^?\M^?\M^?\M-H q\M^P\M^?\M^?\M^?\M^?\ \M-L\M-gK\^P\M^?\M^?\M^?\M^?\M-M\M-)\^W\M^P\M^?\M^?\M^?\M^?\M-N\M-"C\ \^P\M^?\M^?\M^?\M^?\M-O\M^R4\^P\M^?\M^?\M^?\M^?\M-P\M^B%\^P\M^?\M^?\ \M^?\M^?\M-Qr\^V\^P\M^?\M^?\M^?\M^?\M-Q\M-6\M^V\0\M^?\M^?\M^?\M^?\M-R\ X\M->\M^@\M^?\M^?\M^?\M^?\M-R\M-!O\^P\M^?\M^?\M^?\M^?\M-R\M-[4\M-p\ \M^?\M^?\M^?\M^?\M-Sc\^[\M^P\M^?\M^?\M^?\M^?\M-TK#\M^P\M^?\M^?\M^?\ \M^?\M-U9\M-Q \M^?\M^?\M^?\M^?\M-Ug\M-g\M^P\M^?\M^?\M^?\M^?\M-U\M-(s\ \0\M^?\M^?\M^?\M^?\M-V)\M-4\^P\M^?\M^?\M^?\M^?\M-W,\^Z\^P\M^?\M^?\M^?\ \M^?\M-X \M^V\^P\M^?\M^?\M^?\M^?\M-Y\^B\M-A\M^P\M^?\M^?\M^?\ \M^?\M-Y\M-ix\^P\0\0\0\0\^R\M-N\M^W\M-p\0\0\0\0\^SMD\^P\0\0\0\0\^T3\ \M-z\M^P\0\0\0\0\^U#\M-k\M^P\0\0\0\0\^V\^S\M-\\M^P\0\0\0\0\^W\^C\M-M\ \M^P\0\0\0\0\^W\M-s\M->\M^P\0\0\0\0\^X\M-c\M-/\M^P\0\0\0\0\^Y\M-S\240\ \M^P\0\0\0\0\^Z\M-C\M^Q\M^P\0\0\0\0\^[\M-<\M-=\^P\0\0\0\0\^\\M-,\M-.\ \^P\0\0\0\0\^]\M^\\M^_\^P\0\0\0\0\^^\M^L\M^P\^P\0\0\0\0\^_|\M^A\^P\0\ \0\0\0 lr\^P\0\0\0\0!\\c\^P\0\0\0\0"LT\^P\0\0\0\0#<E\^P\0\0\0\0$,6\^P\ \0\0\0\0%\^\'\^P\0\0\0\0&\f\^X\^P\0\0\0\0'\^EC\M^P\0\0\0\0'\M-u4\M^P\ \0\0\0\0(\M-e%\M^P\0\0\0\0)\M-U\^V\M^P\0\0\0\0*\M-E\a\M^P\0\0\0\0+\ \M-4\M-x\M^P\0\0\0\0,\M-$\M-i\M^P\0\0\0\0-\M^T\M-Z\M^P\0\0\0\0.\M^D\ \M-K\M^P\0\0\0\0/t\M-<\M^P\0\0\0\0000d\M--\M^P\0\0\0\0001]\M-Y\^P\0\0\ \0\0002r\M-4\^P\0\0\0\0003=\M-;\^P\0\0\0\0004R\M^V\^P\0\0\0\0005\^]\ \M^]\^P\0\0\0\00062x\^P\0\0\0\0006\M-}\^?\^P\0\0\0\08\^[\M^T\M^P\0\0\ \0\08\M-]a\^P\0\0\0\09\M-{v\M^P\0\0\0\0:\M-=C\^P\0\0\0\0;\M-[X\M^P\0\ \0\0\0<\M-&_\M^P\0\0\0\0=\M-;:\M^P\0\0\0\0>\M^FA\M^P\0\0\0\0?\M^[\^\\ \M^P\0\0\0\0@f#\M^P\0\0\0\0A\M^D9\^P\0\0\0\0BF\^E\M^P\0\0\0\0Cd\^[\^P\ \0\0\0\0D%\M-g\M^P\0\0\0\0EC\M-}\^P\0\0\0\0F\^E\M-I\M^P\0\0\0\0G#\M-_\ \^P\0\0\0\0G\M-n\M-f\^P\0\0\0\0I\^C\M-A\^P\0\0\0\0I\M-N\M-H\^P\0\0\0\ \0J\M-c\M-#\^P\0\0\0\0K\M-.\M-*\^P\0\0\0\0L\M-L\M-?\M^P\0\0\0\0M\M^N\ \M^L\^P\0\0\0\0N\M-,\M-!\M^P\0\0\0\0Onn\^P\0\0\0\0P\M^L\M^C\M^P\0\0\0\ \0QW\M^J\M^P\0\0\0\0Rle\M^P\0\0\0\0S7l\M^P\0\0\0\0TLG\M^P\0\0\0\0U\^W\ N\M^P\0\0\0\0V,)\M^P\0\0\0\0V\M-w0\M^P\0\0\0\0X\^UF\^P\0\0\0\0X\M-W\ \^R\M^P\0\0\0\0Y\M-u(\^P\0\0\0\0Z\M-6\M-t\M^P\0\0\0\0[\M-U \^P\0\0\0\0\\\240\^Q\^P\0\0\0\0]\M-4\M-l\^P\0\0\0\0^\^?\M-s\^P\0\0\0\ \0_\M^T\M-N\^P\0\0\0\0`_\M-U\^P\0\0\0\0a}\M-j\M^P\0\0\0\0b?\M-7\^P\0\ \0\0\0c]\M-L\M^P\0\0\0\0d\^_\M^Y\^P\0\0\0\0e=\M-.\M^P\0\0\0\0f\b\M-5\ \M^P\0\0\0\0g\^]\M^P\M^P\0\0\0\0g\M-h\M^W\M^P\0\0\0\0h\M-}r\M^P\0\0\0\ \0i\M-Hy\M^P\0\0\0\0j\M-]T\M^P\0\0\0\0k\M-([\M^P\0\0\0\0l\M-Fq\^P\0\0\ \0\0m\M^H=\M^P\0\0\0\0n\M-&S\^P\0\0\0\0oh\^_\M^P\0\0\0\0p\M^F5\^P\0\0\ \0\0qQ<\^P\0\0\0\0rf\^W\^P\0\0\0\0s1\^^\^P\0\0\0\0tE\M-y\^P\0\0\0\0u\ \^Q\0\^P\0\0\0\0v/\^U\M^P\0\0\0\0v\M-p\M-b\^P\0\0\0\0x\^N\M-w\M^P\0\0\ \0\0x\M-P\M-D\^P\0\0\0\0y\M-n\M-Y\M^P\0\0\0\0z\M-0\M-&\^P\0\0\0\0{\ \M-N\M-;\M^P\0\0\0\0|\M^Y\M-B\M^P\0\0\0\0}\M-.\M^]\M^P\0\0\0\0~y\M-$\ \M^P\0\0\0\0\^?\M^N\^?\M^P\^B\^A\^B\^C\^D\^C\^D\^C\^D\^C\^D\^C\^D\^C\ \^E\^A\^D\^B\^C\^D\^C\^F\^A\^D\^C\^D\^C\^D\^B\a\b\a\b\a\b\a\b\a\b\a\b\ \a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\ \a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\ \a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\a\b\ \a\b\0\0\f\M^H\0\0\0\0\^\ \^A\^D\0\0\^N\^P\0 \0\0\^\ \^A\^D\0\0\^N\ \^P\0 \0\0*0\^A\r\0\0*0\^A\r\0\0\^\ \^A\^D\0\0\^N\^P\0 LMT\0\ CEST\0CET\0CEMT\0\0\0\0\^A\^A\0\^A\^A\^A\0\0\0\0\0\0\0\^A\^A CET-1CEST,M3.5.0,M10.5.0/3 " 3025 tipideed RET read 2309/0x905 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL mmap(0,0xb000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7178257031168/0x6875175e000 3025 tipideed CALL open(0x7a901c78d9d0,0<O_RDONLY>) 3025 tipideed NAMI "/usr/share/zoneinfo/posixrules" 3025 tipideed RET open 3 3025 tipideed CALL read(3,0x6875175e000,0xa1e8) 3025 tipideed GIO fd 3 read 2835 bytes "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\0\0\0\^E\0\0\0\0\0\0\0\ \M-9\0\0\0\^E\0\0\0\^P\M^^\M-&H\240\M^_\M-;\^U\M^P\240\M^F*\240\M-!\ \M^Z\M-w\M^P\M-K\M^I\^Z\240\M-R#\M-tp\M-Ra&\^P\M-V\M-~t\\\M-X\M^@\M--\ \M^P\M-Z\M-~\M-C\M^P\M-[\M-@\M^P\^P\M-\\M-^\M-%\M^P\M-]\M-)\M-,\M^P\ \M-^\M->\M^G\M^P\M-_\M^I\M^N\M^P\M-`\M^^i\M^P\M-aip\M^P\M-b~K\M^P\M-c\ IR\M^P\M-d^-\M^P\M-e)4\M^P\M-fGJ\^P\M-g\^RQ\^P\M-h',\^P\M-h\M-r3\^P\ \M-j\a\^N\^P\M-j\M-R\^U\^P\M-k\M-f\M-p\^P\M-l\M-1\M-w\^P\M-m\M-F\M-R\ \^P\M-n\M^Q\M-Y\^P\M-o\M-/\M-n\M^P\M-pq\M-;\^P\M-q\M^O\M-P\M^P\M-r\^?\ \M-A\M^P\M-so\M-2\M^P\M-t_\M-#\M^P\M-uO\M^T\M^P\M-v?\M^E\M^P\M-w/v\ \M^P\M-x(\M-"\^P\M-y\^OX\M^P\M-z\b\M^D\^P\M-z\M-x\M^C \M-{\M-hf\^P\ \M-|\M-Xe \M-}\M-HH\^P\M-~\M-8G \M^?\M-(*\^P\0\M^X) \^A\M^H\f\^P\^Bx\ \v \^Cq(\M^P\^Da'\240\^EQ \M^P\^FA \240\a0\M-l\M^P\a\M^MC\240 \^P\M-N\M^P \M--\ \M-? \M-p\M-0\M^P\v\M-`\M-/\240\f\M-Y\M-M\^P\r\M-@\M^Q\240\^N\M-9\M-/\^P\ \^O\M-)\M-. \^P\M^Y\M^Q\^P\^Q\M^I\M^P \^Rys\^P\^Sir \^TYU\^P\^UIT \^V\ 97\^P\^W)6 \^X"S\M^P\^Y \^X \^Z\^B5\M^P\^Z\M-r4\240\^[\M-b\^W\M^P\^\\ \M-R\^V\240\^]\M-A\M-y\M^P\^^\M-1\M-x\240\^_\M-!\M-[\M^P v+ !\M^A\M-=\ \M^P"V\r #j\M-Z\^P$5\M-o %J\M-<\^P&\^U\M-Q '*\M^^\^P'\M-~\M-m\240) \M^@\^P)\M-^\M-O\240*\M-jb\^P+\M->\M-1\240,\M-S~\M^P-\M^^\M^S\240.\ \M-3`\M^P/~u\2400\M^SB\M^P1g\M^R 2s$\M^P3Gt 4S\^F\M^P5'V 62\M-h\M^P7\ \a8 8\^\\^E\^P8\M-g\^Z 9\M-{\M-g\^P:\M-F\M-| ;\M-[\M-I\^P<\M-0\^X\240\ =\M-;\M-+\^P>\M^O\M-z\240?\M^[\M^M\^P@o\M-\\240A\M^D\M-)\M^PBO\M->\ \240Cd\M^K\M^PD/\240\240EDm\M^PE\M-s\M-S G-\M^J\^PG\M-S\M-5 I\rl\^PI\ \M-3\M^W J\M-mN\^PK\M^\\M-3\240L\M-Vj\M^PM|\M^U\240N\M-6L\M^PO\\w\240\ P\M^V.\M^PQ<Y\240Rv\^P\M^PS\^\;\240TU\M-r\M^PT\M-|\^]\240V5\M-T\M^PV\ \M-e: X\^^\M-q\^PX\M-E\^\ Y\M-~\M-S\^PZ\M-$\M-~ [\M-^\M-5\^P\\\M^D\ \M-` ]\M->\M^W\^P^d\M-B _\M^^y\^P`M\M-^\240a\M^G\M^U\M^Pb-\M-@\240cgw\ \M^Pd\r\M-"\240eGY\M^Pe\M-m\M^D\240g';\M^Pg\M-Mf\240i\a\^]\M^Pi\M--H\ \240j\M-f\M^?\M^Pk\M^Ve l\M-P\^\\^PmvG n\M-/\M-~\^PoV) p\M^O\M-`\^Pq6\ \v ro\M-B\^Ps\^U\M-m tO\M-$\^Pt\M^? \240v8\M-@\M^Pv\M-^\M-k\240x\ \^X\M-"\M^Px\M->\M-M\240y\M-x\M^D\M^Pz\M^^\M-/\240{\M-Xf\M^P|~\M^Q\ \240}\M-8H\M^P~^s\240\^?\M^X*\M^P\0\^A\0\^A\^B\^C\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\M^?\M^?\M^]\M^P\^A\0\M^?\M^?\M^O\M^@\0\^D\M^?\ \M^?\M^]\M^P\^A\b\M^?\M^?\M^]\M^P\^A\f\M^?\M^?\M^O\M^@\0\^DPDT\0PST\0\ PWT\0PPT\0\0\0\0\^A\^A\0\0\0\^A\^ATZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ \0\0\0\^F\0\0\0\^F\0\0\0\0\0\0\0\M-:\0\0\0\^F\0\0\0\^T\M^?\M^?\M^?\ \M^?^\^D\^Z\M-@\M^?\M^?\M^?\M^?\M^^\M-&H\240\M^?\M^?\M^?\M^?\M^_\M-;\ \^U\M^P\M^?\M^?\M^?\M^?\240\M^F*\240\M^?\M^?\M^?\M^?\M-!\M^Z\M-w\M^P\ \M^?\M^?\M^?\M^?\M-K\M^I\^Z\240\M^?\M^?\M^?\M^?\M-R#\M-tp\M^?\M^?\M^?\ \M^?\M-Ra&\^P\M^?\M^?\M^?\M^?\M-V\M-~t\\\M^?\M^?\M^?\M^?\M-X\M^@\M--\ \M^P\M^?\M^?\M^?\M^?\M-Z\M-~\M-C\M^P\M^?\M^?\M^?\M^?\M-[\M-@\M^P\^P\ \M^?\M^?\M^?\M^?\M-\\M-^\M-%\M^P\M^?\M^?\M^?\M^?\M-]\M-)\M-,\M^P\M^?\ \M^?\M^?\M^?\M-^\M->\M^G\M^P\M^?\M^?\M^?\M^?\M-_\M^I\M^N\M^P\M^?\M^?\ \M^?\M^?\M-`\M^^i\M^P\M^?\M^?\M^?\M^?\M-aip\M^P\M^?\M^?\M^?\M^?\M-b~K\ \M^P\M^?\M^?\M^?\M^?\M-cIR\M^P\M^?\M^?\M^?\M^?\M-d^-\M^P\M^?\M^?\M^?\ \M^?\M-e)4\M^P\M^?\M^?\M^?\M^?\M-fGJ\^P\M^?\M^?\M^?\M^?\M-g\^RQ\^P\ \M^?\M^?\M^?\M^?\M-h',\^P\M^?\M^?\M^?\M^?\M-h\M-r3\^P\M^?\M^?\M^?\M^?\ \M-j\a\^N\^P\M^?\M^?\M^?\M^?\M-j\M-R\^U\^P\M^?\M^?\M^?\M^?\M-k\M-f\ \M-p\^P\M^?\M^?\M^?\M^?\M-l\M-1\M-w\^P\M^?\M^?\M^?\M^?\M-m\M-F\M-R\^P\ \M^?\M^?\M^?\M^?\M-n\M^Q\M-Y\^P\M^?\M^?\M^?\M^?\M-o\M-/\M-n\M^P\M^?\ \M^?\M^?\M^?\M-pq\M-;\^P\M^?\M^?\M^?\M^?\M-q\M^O\M-P\M^P\M^?\M^?\M^?\ \M^?\M-r\^?\M-A\M^P\M^?\M^?\M^?\M^?\M-so\M-2\M^P\M^?\M^?\M^?\M^?\M-t_\ \M-#\M^P\M^?\M^?\M^?\M^?\M-uO\M^T\M^P\M^?\M^?\M^?\M^?\M-v?\M^E\M^P\ \M^?\M^?\M^?\M^?\M-w/v\M^P\M^?\M^?\M^?\M^?\M-x(\M-"\^P\M^?\M^?\M^?\ \M^?\M-y\^OX\M^P\M^?\M^?\M^?\M^?\M-z\b\M^D\^P\M^?\M^?\M^?\M^?\M-z\M-x\ \M^C \M^?\M^?\M^?\M^?\M-{\M-hf\^P\M^?\M^?\M^?\M^?\M-|\M-Xe \M^?\M^?\ \M^?\M^?\M-}\M-HH\^P\M^?\M^?\M^?\M^?\M-~\M-8G \M^?\M^?\M^?\M^?\M^?\ \M-(*\^P\0\0\0\0\0\M^X) \0\0\0\0\^A\M^H\f\^P\0\0\0\0\^Bx\v \0\0\0\0\ \^Cq(\M^P\0\0\0\0\^Da'\240\0\0\0\0\^EQ \M^P\0\0\0\0\^FA \240\0\0\0\0\a0\M-l\M^P\0\0\0\0\a\M^MC\240\0\ \0\0\0 \^P\M-N\M^P\0\0\0\0 \M--\M-? \0\0\0\0 \M-p\M-0\M^P\0\0\0\0\v\M-`\M-/\240\0\0\0\0\f\M-Y\M-M\^P\0\0\0\0\r\M-@\ \M^Q\240\0\0\0\0\^N\M-9\M-/\^P\0\0\0\0\^O\M-)\M-. \0\0\0\0\^P\M^Y\M^Q\ \^P\0\0\0\0\^Q\M^I\M^P \0\0\0\0\^Rys\^P\0\0\0\0\^Sir \0\0\0\0\^TYU\^P\ \0\0\0\0\^UIT \0\0\0\0\^V97\^P\0\0\0\0\^W)6 \0\0\0\0\^X"S\M^P\0\0\0\0\ \^Y \^X \0\0\0\0\^Z\^B5\M^P\0\0\0\0\^Z\M-r4\240\0\0\0\0\^[\M-b\^W\ \M^P\0\0\0\0\^\\M-R\^V\240\0\0\0\0\^]\M-A\M-y\M^P\0\0\0\0\^^\M-1\M-x\ \240\0\0\0\0\^_\M-!\M-[\M^P\0\0\0\0 v+ \0\0\0\0!\M^A\M-=\M^P\0\0\0\0"\ V\r \0\0\0\0#j\M-Z\^P\0\0\0\0$5\M-o \0\0\0\0%J\M-<\^P\0\0\0\0&\^U\M-Q\ \0\0\0\0'*\M^^\^P\0\0\0\0'\M-~\M-m\240\0\0\0\0) \M^@\^P\0\0\0\0)\M-^\M-O\240\0\0\0\0*\M-jb\^P\0\0\0\0+\M->\M-1\240\0\ \0\0\0,\M-S~\M^P\0\0\0\0-\M^^\M^S\240\0\0\0\0.\M-3`\M^P\0\0\0\0/~u\ \240\0\0\0\0000\M^SB\M^P\0\0\0\0001g\M^R \0\0\0\0002s$\M^P\0\0\0\0003\ Gt \0\0\0\0004S\^F\M^P\0\0\0\0005'V \0\0\0\00062\M-h\M^P\0\0\0\0007\a\ 8 \0\0\0\08\^\\^E\^P\0\0\0\08\M-g\^Z \0\0\0\09\M-{\M-g\^P\0\0\0\0:\ \M-F\M-| \0\0\0\0;\M-[\M-I\^P\0\0\0\0<\M-0\^X\240\0\0\0\0=\M-;\M-+\^P\ \0\0\0\0>\M^O\M-z\240\0\0\0\0?\M^[\M^M\^P\0\0\0\0@o\M-\\240\0\0\0\0A\ \M^D\M-)\M^P\0\0\0\0BO\M->\240\0\0\0\0Cd\M^K\M^P\0\0\0\0D/\240\240\0\ \0\0\0EDm\M^P\0\0\0\0E\M-s\M-S \0\0\0\0G-\M^J\^P\0\0\0\0G\M-S\M-5 \0\ \0\0\0I\rl\^P\0\0\0\0I\M-3\M^W \0\0\0\0J\M-mN\^P\0\0\0\0K\M^\\M-3\240\ \0\0\0\0L\M-Vj\M^P\0\0\0\0M|\M^U\240\0\0\0\0N\M-6L\M^P\0\0\0\0O\\w\ \240\0\0\0\0P\M^V.\M^P\0\0\0\0Q<Y\240\0\0\0\0Rv\^P\M^P\0\0\0\0S\^\;\ \240\0\0\0\0TU\M-r\M^P\0\0\0\0T\M-|\^]\240\0\0\0\0V5\M-T\M^P\0\0\0\0V\ \M-e: \0\0\0\0X\^^\M-q\^P\0\0\0\0X\M-E\^\ \0\0\0\0Y\M-~\M-S\^P\0\0\0\ \0Z\M-$\M-~ \0\0\0\0[\M-^\M-5\^P\0\0\0\0\\\M^D\M-` \0\0\0\0]\M->\M^W\ \^P\0\0\0\0^d\M-B \0\0\0\0_\M^^y\^P\0\0\0\0`M\M-^\240\0\0\0\0a\M^G\ \M^U\M^P\0\0\0\0b-\M-@\240\0\0\0\0cgw\M^P\0\0\0\0d\r\M-"\240\0\0\0\0e\ GY\M^P\0\0\0\0e\M-m\M^D\240\0\0\0\0g';\M^P\0\0\0\0g\M-Mf\240\0\0\0\0i\ \a\^]\M^P\0\0\0\0i\M--H\240\0\0\0\0j\M-f\M^?\M^P\0\0\0\0k\M^Ve \0\0\0\ \0l\M-P\^\\^P\0\0\0\0mvG \0\0\0\0n\M-/\M-~\^P\0\0\0\0oV) \0\0\0\0p\ \M^O\M-`\^P\0\0\0\0q6\v \0\0\0\0ro\M-B\^P\0\0\0\0s\^U\M-m \0\0\0\0tO\ \M-$\^P\0\0\0\0t\M^? \240\0\0\0\0v8\M-@\M^P\0\0\0\0v\M-^\M-k\240\0\ \0\0\0x\^X\M-"\M^P\0\0\0\0x\M->\M-M\240\0\0\0\0y\M-x\M^D\M^P\0\0\0\0z\ \M^^\M-/\240\0\0\0\0{\M-Xf\M^P\0\0\0\0|~\M^Q\240\0\0\0\0}\M-8H\M^P\0\ \0\0\0~^s\240\0\0\0\0\^?\M^X*\M^P\^E\^A\^B\^A\^B\^C\^D\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\M^?\M^?\M^Q&\0\0\M^?\M^?\M^]\ \M^P\^A\^D\M^?\M^?\M^O\M^@\0\b\M^?\M^?\M^]\M^P\^A\f\M^?\M^?\M^]\M^P\ \^A\^P\M^?\M^?\M^O\M^@\0\bLMT\0PDT\0PST\0PWT\0PPT\0\0\0\0\0\^A\^A\0\0\ \0\0\^A\^A PST8PDT,M3.2.0,M11.1.0 " 3025 tipideed RET read 2835/0xb13 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL kbind(0x7a901c796a98,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL mmap(0,0x5000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0) 3025 tipideed RET mmap 7177787641856/0x687357b9000 3025 tipideed CALL open(0x7a901c792300,0<O_RDONLY>) 3025 tipideed NAMI "/usr/share/zoneinfo/GMT" 3025 tipideed RET open 3 3025 tipideed CALL read(3,0x68741163000,0xa1e8) 3025 tipideed GIO fd 3 read 118 bytes "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\ \0\0\0\^A\0\0\0\^D\0\0\0\0\0\0GMT\0\0\0TZif2\0\0\0\0\0\0\0\0\0\0\0\0\ \0\0\0\0\0\0\^A\0\0\0\^A\0\0\0\0\0\0\0\0\0\0\0\^A\0\0\0\^D\0\0\0\0\0\ \0GMT\0\0\0 GMT0 " 3025 tipideed RET read 118/0x76 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL open(0x7a901c78da20,0<O_RDONLY>) 3025 tipideed NAMI "/usr/share/zoneinfo/posixrules" 3025 tipideed RET open 3 3025 tipideed CALL read(3,0x6875175e000,0xa1e8) 3025 tipideed GIO fd 3 read 2835 bytes "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\^E\0\0\0\^E\0\0\0\0\0\0\0\ \M-9\0\0\0\^E\0\0\0\^P\M^^\M-&H\240\M^_\M-;\^U\M^P\240\M^F*\240\M-!\ \M^Z\M-w\M^P\M-K\M^I\^Z\240\M-R#\M-tp\M-Ra&\^P\M-V\M-~t\\\M-X\M^@\M--\ \M^P\M-Z\M-~\M-C\M^P\M-[\M-@\M^P\^P\M-\\M-^\M-%\M^P\M-]\M-)\M-,\M^P\ \M-^\M->\M^G\M^P\M-_\M^I\M^N\M^P\M-`\M^^i\M^P\M-aip\M^P\M-b~K\M^P\M-c\ IR\M^P\M-d^-\M^P\M-e)4\M^P\M-fGJ\^P\M-g\^RQ\^P\M-h',\^P\M-h\M-r3\^P\ \M-j\a\^N\^P\M-j\M-R\^U\^P\M-k\M-f\M-p\^P\M-l\M-1\M-w\^P\M-m\M-F\M-R\ \^P\M-n\M^Q\M-Y\^P\M-o\M-/\M-n\M^P\M-pq\M-;\^P\M-q\M^O\M-P\M^P\M-r\^?\ \M-A\M^P\M-so\M-2\M^P\M-t_\M-#\M^P\M-uO\M^T\M^P\M-v?\M^E\M^P\M-w/v\ \M^P\M-x(\M-"\^P\M-y\^OX\M^P\M-z\b\M^D\^P\M-z\M-x\M^C \M-{\M-hf\^P\ \M-|\M-Xe \M-}\M-HH\^P\M-~\M-8G \M^?\M-(*\^P\0\M^X) \^A\M^H\f\^P\^Bx\ \v \^Cq(\M^P\^Da'\240\^EQ \M^P\^FA \240\a0\M-l\M^P\a\M^MC\240 \^P\M-N\M^P \M--\ \M-? \M-p\M-0\M^P\v\M-`\M-/\240\f\M-Y\M-M\^P\r\M-@\M^Q\240\^N\M-9\M-/\^P\ \^O\M-)\M-. \^P\M^Y\M^Q\^P\^Q\M^I\M^P \^Rys\^P\^Sir \^TYU\^P\^UIT \^V\ 97\^P\^W)6 \^X"S\M^P\^Y \^X \^Z\^B5\M^P\^Z\M-r4\240\^[\M-b\^W\M^P\^\\ \M-R\^V\240\^]\M-A\M-y\M^P\^^\M-1\M-x\240\^_\M-!\M-[\M^P v+ !\M^A\M-=\ \M^P"V\r #j\M-Z\^P$5\M-o %J\M-<\^P&\^U\M-Q '*\M^^\^P'\M-~\M-m\240) \M^@\^P)\M-^\M-O\240*\M-jb\^P+\M->\M-1\240,\M-S~\M^P-\M^^\M^S\240.\ \M-3`\M^P/~u\2400\M^SB\M^P1g\M^R 2s$\M^P3Gt 4S\^F\M^P5'V 62\M-h\M^P7\ \a8 8\^\\^E\^P8\M-g\^Z 9\M-{\M-g\^P:\M-F\M-| ;\M-[\M-I\^P<\M-0\^X\240\ =\M-;\M-+\^P>\M^O\M-z\240?\M^[\M^M\^P@o\M-\\240A\M^D\M-)\M^PBO\M->\ \240Cd\M^K\M^PD/\240\240EDm\M^PE\M-s\M-S G-\M^J\^PG\M-S\M-5 I\rl\^PI\ \M-3\M^W J\M-mN\^PK\M^\\M-3\240L\M-Vj\M^PM|\M^U\240N\M-6L\M^PO\\w\240\ P\M^V.\M^PQ<Y\240Rv\^P\M^PS\^\;\240TU\M-r\M^PT\M-|\^]\240V5\M-T\M^PV\ \M-e: X\^^\M-q\^PX\M-E\^\ Y\M-~\M-S\^PZ\M-$\M-~ [\M-^\M-5\^P\\\M^D\ \M-` ]\M->\M^W\^P^d\M-B _\M^^y\^P`M\M-^\240a\M^G\M^U\M^Pb-\M-@\240cgw\ \M^Pd\r\M-"\240eGY\M^Pe\M-m\M^D\240g';\M^Pg\M-Mf\240i\a\^]\M^Pi\M--H\ \240j\M-f\M^?\M^Pk\M^Ve l\M-P\^\\^PmvG n\M-/\M-~\^PoV) p\M^O\M-`\^Pq6\ \v ro\M-B\^Ps\^U\M-m tO\M-$\^Pt\M^? \240v8\M-@\M^Pv\M-^\M-k\240x\ \^X\M-"\M^Px\M->\M-M\240y\M-x\M^D\M^Pz\M^^\M-/\240{\M-Xf\M^P|~\M^Q\ \240}\M-8H\M^P~^s\240\^?\M^X*\M^P\0\^A\0\^A\^B\^C\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\ \0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\^A\0\ \^A\0\^A\0\^A\0\^A\0\^A\M^?\M^?\M^]\M^P\^A\0\M^?\M^?\M^O\M^@\0\^D\M^?\ \M^?\M^]\M^P\^A\b\M^?\M^?\M^]\M^P\^A\f\M^?\M^?\M^O\M^@\0\^DPDT\0PST\0\ PWT\0PPT\0\0\0\0\^A\^A\0\0\0\^A\^ATZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ \0\0\0\^F\0\0\0\^F\0\0\0\0\0\0\0\M-:\0\0\0\^F\0\0\0\^T\M^?\M^?\M^?\ \M^?^\^D\^Z\M-@\M^?\M^?\M^?\M^?\M^^\M-&H\240\M^?\M^?\M^?\M^?\M^_\M-;\ \^U\M^P\M^?\M^?\M^?\M^?\240\M^F*\240\M^?\M^?\M^?\M^?\M-!\M^Z\M-w\M^P\ \M^?\M^?\M^?\M^?\M-K\M^I\^Z\240\M^?\M^?\M^?\M^?\M-R#\M-tp\M^?\M^?\M^?\ \M^?\M-Ra&\^P\M^?\M^?\M^?\M^?\M-V\M-~t\\\M^?\M^?\M^?\M^?\M-X\M^@\M--\ \M^P\M^?\M^?\M^?\M^?\M-Z\M-~\M-C\M^P\M^?\M^?\M^?\M^?\M-[\M-@\M^P\^P\ \M^?\M^?\M^?\M^?\M-\\M-^\M-%\M^P\M^?\M^?\M^?\M^?\M-]\M-)\M-,\M^P\M^?\ \M^?\M^?\M^?\M-^\M->\M^G\M^P\M^?\M^?\M^?\M^?\M-_\M^I\M^N\M^P\M^?\M^?\ \M^?\M^?\M-`\M^^i\M^P\M^?\M^?\M^?\M^?\M-aip\M^P\M^?\M^?\M^?\M^?\M-b~K\ \M^P\M^?\M^?\M^?\M^?\M-cIR\M^P\M^?\M^?\M^?\M^?\M-d^-\M^P\M^?\M^?\M^?\ \M^?\M-e)4\M^P\M^?\M^?\M^?\M^?\M-fGJ\^P\M^?\M^?\M^?\M^?\M-g\^RQ\^P\ \M^?\M^?\M^?\M^?\M-h',\^P\M^?\M^?\M^?\M^?\M-h\M-r3\^P\M^?\M^?\M^?\M^?\ \M-j\a\^N\^P\M^?\M^?\M^?\M^?\M-j\M-R\^U\^P\M^?\M^?\M^?\M^?\M-k\M-f\ \M-p\^P\M^?\M^?\M^?\M^?\M-l\M-1\M-w\^P\M^?\M^?\M^?\M^?\M-m\M-F\M-R\^P\ \M^?\M^?\M^?\M^?\M-n\M^Q\M-Y\^P\M^?\M^?\M^?\M^?\M-o\M-/\M-n\M^P\M^?\ \M^?\M^?\M^?\M-pq\M-;\^P\M^?\M^?\M^?\M^?\M-q\M^O\M-P\M^P\M^?\M^?\M^?\ \M^?\M-r\^?\M-A\M^P\M^?\M^?\M^?\M^?\M-so\M-2\M^P\M^?\M^?\M^?\M^?\M-t_\ \M-#\M^P\M^?\M^?\M^?\M^?\M-uO\M^T\M^P\M^?\M^?\M^?\M^?\M-v?\M^E\M^P\ \M^?\M^?\M^?\M^?\M-w/v\M^P\M^?\M^?\M^?\M^?\M-x(\M-"\^P\M^?\M^?\M^?\ \M^?\M-y\^OX\M^P\M^?\M^?\M^?\M^?\M-z\b\M^D\^P\M^?\M^?\M^?\M^?\M-z\M-x\ \M^C \M^?\M^?\M^?\M^?\M-{\M-hf\^P\M^?\M^?\M^?\M^?\M-|\M-Xe \M^?\M^?\ \M^?\M^?\M-}\M-HH\^P\M^?\M^?\M^?\M^?\M-~\M-8G \M^?\M^?\M^?\M^?\M^?\ \M-(*\^P\0\0\0\0\0\M^X) \0\0\0\0\^A\M^H\f\^P\0\0\0\0\^Bx\v \0\0\0\0\ \^Cq(\M^P\0\0\0\0\^Da'\240\0\0\0\0\^EQ \M^P\0\0\0\0\^FA \240\0\0\0\0\a0\M-l\M^P\0\0\0\0\a\M^MC\240\0\ \0\0\0 \^P\M-N\M^P\0\0\0\0 \M--\M-? \0\0\0\0 \M-p\M-0\M^P\0\0\0\0\v\M-`\M-/\240\0\0\0\0\f\M-Y\M-M\^P\0\0\0\0\r\M-@\ \M^Q\240\0\0\0\0\^N\M-9\M-/\^P\0\0\0\0\^O\M-)\M-. \0\0\0\0\^P\M^Y\M^Q\ \^P\0\0\0\0\^Q\M^I\M^P \0\0\0\0\^Rys\^P\0\0\0\0\^Sir \0\0\0\0\^TYU\^P\ \0\0\0\0\^UIT \0\0\0\0\^V97\^P\0\0\0\0\^W)6 \0\0\0\0\^X"S\M^P\0\0\0\0\ \^Y \^X \0\0\0\0\^Z\^B5\M^P\0\0\0\0\^Z\M-r4\240\0\0\0\0\^[\M-b\^W\ \M^P\0\0\0\0\^\\M-R\^V\240\0\0\0\0\^]\M-A\M-y\M^P\0\0\0\0\^^\M-1\M-x\ \240\0\0\0\0\^_\M-!\M-[\M^P\0\0\0\0 v+ \0\0\0\0!\M^A\M-=\M^P\0\0\0\0"\ V\r \0\0\0\0#j\M-Z\^P\0\0\0\0$5\M-o \0\0\0\0%J\M-<\^P\0\0\0\0&\^U\M-Q\ \0\0\0\0'*\M^^\^P\0\0\0\0'\M-~\M-m\240\0\0\0\0) \M^@\^P\0\0\0\0)\M-^\M-O\240\0\0\0\0*\M-jb\^P\0\0\0\0+\M->\M-1\240\0\ \0\0\0,\M-S~\M^P\0\0\0\0-\M^^\M^S\240\0\0\0\0.\M-3`\M^P\0\0\0\0/~u\ \240\0\0\0\0000\M^SB\M^P\0\0\0\0001g\M^R \0\0\0\0002s$\M^P\0\0\0\0003\ Gt \0\0\0\0004S\^F\M^P\0\0\0\0005'V \0\0\0\00062\M-h\M^P\0\0\0\0007\a\ 8 \0\0\0\08\^\\^E\^P\0\0\0\08\M-g\^Z \0\0\0\09\M-{\M-g\^P\0\0\0\0:\ \M-F\M-| \0\0\0\0;\M-[\M-I\^P\0\0\0\0<\M-0\^X\240\0\0\0\0=\M-;\M-+\^P\ \0\0\0\0>\M^O\M-z\240\0\0\0\0?\M^[\M^M\^P\0\0\0\0@o\M-\\240\0\0\0\0A\ \M^D\M-)\M^P\0\0\0\0BO\M->\240\0\0\0\0Cd\M^K\M^P\0\0\0\0D/\240\240\0\ \0\0\0EDm\M^P\0\0\0\0E\M-s\M-S \0\0\0\0G-\M^J\^P\0\0\0\0G\M-S\M-5 \0\ \0\0\0I\rl\^P\0\0\0\0I\M-3\M^W \0\0\0\0J\M-mN\^P\0\0\0\0K\M^\\M-3\240\ \0\0\0\0L\M-Vj\M^P\0\0\0\0M|\M^U\240\0\0\0\0N\M-6L\M^P\0\0\0\0O\\w\ \240\0\0\0\0P\M^V.\M^P\0\0\0\0Q<Y\240\0\0\0\0Rv\^P\M^P\0\0\0\0S\^\;\ \240\0\0\0\0TU\M-r\M^P\0\0\0\0T\M-|\^]\240\0\0\0\0V5\M-T\M^P\0\0\0\0V\ \M-e: \0\0\0\0X\^^\M-q\^P\0\0\0\0X\M-E\^\ \0\0\0\0Y\M-~\M-S\^P\0\0\0\ \0Z\M-$\M-~ \0\0\0\0[\M-^\M-5\^P\0\0\0\0\\\M^D\M-` \0\0\0\0]\M->\M^W\ \^P\0\0\0\0^d\M-B \0\0\0\0_\M^^y\^P\0\0\0\0`M\M-^\240\0\0\0\0a\M^G\ \M^U\M^P\0\0\0\0b-\M-@\240\0\0\0\0cgw\M^P\0\0\0\0d\r\M-"\240\0\0\0\0e\ GY\M^P\0\0\0\0e\M-m\M^D\240\0\0\0\0g';\M^P\0\0\0\0g\M-Mf\240\0\0\0\0i\ \a\^]\M^P\0\0\0\0i\M--H\240\0\0\0\0j\M-f\M^?\M^P\0\0\0\0k\M^Ve \0\0\0\ \0l\M-P\^\\^P\0\0\0\0mvG \0\0\0\0n\M-/\M-~\^P\0\0\0\0oV) \0\0\0\0p\ \M^O\M-`\^P\0\0\0\0q6\v \0\0\0\0ro\M-B\^P\0\0\0\0s\^U\M-m \0\0\0\0tO\ \M-$\^P\0\0\0\0t\M^? \240\0\0\0\0v8\M-@\M^P\0\0\0\0v\M-^\M-k\240\0\ \0\0\0x\^X\M-"\M^P\0\0\0\0x\M->\M-M\240\0\0\0\0y\M-x\M^D\M^P\0\0\0\0z\ \M^^\M-/\240\0\0\0\0{\M-Xf\M^P\0\0\0\0|~\M^Q\240\0\0\0\0}\M-8H\M^P\0\ \0\0\0~^s\240\0\0\0\0\^?\M^X*\M^P\^E\^A\^B\^A\^B\^C\^D\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\ \^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\ \^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\^A\^B\M^?\M^?\M^Q&\0\0\M^?\M^?\M^]\ \M^P\^A\^D\M^?\M^?\M^O\M^@\0\b\M^?\M^?\M^]\M^P\^A\f\M^?\M^?\M^]\M^P\ \^A\^P\M^?\M^?\M^O\M^@\0\bLMT\0PDT\0PST\0PWT\0PPT\0\0\0\0\0\^A\^A\0\0\ \0\0\^A\^A PST8PDT,M3.2.0,M11.1.0 " 3025 tipideed RET read 2835/0xb13 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL kbind(0x7a901c796af8,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL writev(2,0x7a901c796c00,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812be2, len=111 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 111 bytes "tipideed: pid 3025: info: sending regular file localhost:80/empty (0 \ bytes) with type application/octet-stream " 3025 tipideed RET writev 111/0x6f 3025 tipideed CALL open(0x7a901c796e80,0x4<O_RDONLY|O_NONBLOCK>) 3025 tipideed NAMI "localhost:80/empty" 3025 tipideed RET open 3 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL readv(0,0x7a901c796e80,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb75, len=8155 } { base=0x6850c80eb50, len=36 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796f60,1,0x7a901c796eb0,0) 3025 tipideed STRU struct timespec { 2305843009213693952 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e80,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb75, len=8155 } { base=0x6850c80eb50, len=36 } 3025 tipideed GIO fd 0 read 19 bytes "GET /asdf HTTP/1.1 " 3025 tipideed RET readv 19/0x13 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb88, len=8136 } { base=0x6850c80eb50, len=55 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796ed0,1,0x7a901c796e20,0) 3025 tipideed STRU struct timespec { 2305843009213693945.167809813 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb88, len=8136 } { base=0x6850c80eb50, len=55 } 3025 tipideed GIO fd 0 read 16 bytes "host: localhost " 3025 tipideed RET readv 16/0x10 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb98, len=8120 } { base=0x6850c80eb50, len=71 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796ed0,1,0x7a901c796e20,0) 3025 tipideed STRU struct timespec { 2305843009213693941.417824790 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80eb98, len=8120 } { base=0x6850c80eb50, len=71 } 3025 tipideed GIO fd 0 read 18 bytes "connection: close " 3025 tipideed RET readv 18/0x12 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80ebaa, len=8102 } { base=0x6850c80eb50, len=89 } 3025 tipideed RET readv -1 errno 35 Resource temporarily unavailable 3025 tipideed CALL ppoll(0x7a901c796ed0,1,0x7a901c796e20,0) 3025 tipideed STRU struct timespec { 2305843009213693938.803768941 } 3025 tipideed STRU struct pollfd { fd=0, events=0x11<POLLIN|POLLHUP>, revents=0x1<POLLIN> } 3025 tipideed RET ppoll 1 3025 tipideed CALL readv(0,0x7a901c796e30,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c80ebaa, len=8102 } { base=0x6850c80eb50, len=89 } 3025 tipideed GIO fd 0 read 1 bytes " " 3025 tipideed RET readv 1 3025 tipideed CALL writev(2,0x7a901c796ef0,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812c51, len=68 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 68 bytes "tipideed: pid 3025: info: request GET for host localhost path /asdf " 3025 tipideed RET writev 68/0x44 3025 tipideed CALL stat(0x7a901c796e80,0x7a901c796f60) 3025 tipideed NAMI "localhost:80/asdf" 3025 tipideed STRU struct stat { dev=1036, ino=52612, mode=-rw-r--r-- , nlink=1, uid=1000<"humm">, gid=1000<"humm">, rdev=267538, atime=1695330108<"Sep 21 23:01:48 2023">.579662818, mtime=1695329543<"Sep 21 22:52:23 2023">.459656525, ctime=1695329829<"Sep 21 22:57:09 2023">.219611208, size=5, blocks=4, blksize=16384, flags=0x0, gen=0x0 } 3025 tipideed RET stat 0 3025 tipideed CALL kbind(0x7a901c796c08,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL __realpath(0x7a901c796e80,0x7a901c796900) 3025 tipideed NAMI "localhost:80/asdf" 3025 tipideed NAMI "/home/humm/www/localhost:80/asdf" 3025 tipideed RET __realpath 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL issetugid() 3025 tipideed RET issetugid 0 3025 tipideed CALL writev(2,0x7a901c796c00,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812c95, len=110 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 110 bytes "tipideed: pid 3025: info: sending regular file localhost:80/asdf (5 b\ ytes) with type application/octet-stream " 3025 tipideed RET writev 110/0x6e 3025 tipideed CALL open(0x7a901c796e80,0x4<O_RDONLY|O_NONBLOCK>) 3025 tipideed NAMI "localhost:80/asdf" 3025 tipideed RET open 3 3025 tipideed CALL readv(3,0x7a901c796be0,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c810b50, len=955 } { base=0x0, len=0 } 3025 tipideed GIO fd 3 read 5 bytes "asdf " 3025 tipideed RET readv 5 3025 tipideed CALL readv(3,0x7a901c796be0,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c810b55, len=950 } { base=0x0, len=0 } 3025 tipideed RET readv 0 3025 tipideed CALL ppoll(0x7a901c796bf0,1,0x7a901c796b40,0) 3025 tipideed STRU struct timespec { 2305843009213693952 } 3025 tipideed STRU struct pollfd { fd=1, events=0x4<POLLOUT>, revents=0x4<POLLOUT> } 3025 tipideed RET ppoll 1 3025 tipideed CALL writev(1,0x7a901c796ba0,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c810b55, len=950 } { base=0x0, len=0 } 3025 tipideed GIO fd 1 wrote 950 bytes "1.1 200 OK\r Date: Thu, 21 Sep 2023 21:06:57 GMT\r Accept-Ranges: none\r Cache-Control: private\r Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe\ -inline';\r Referrer-Policy: no-referrer-when-downgrade\r Server: tipidee/0.0.1.0\r Vary: Accept-Encoding\r X-Content-Type-Options: nosniff\r X-Frame-Options: DENY\r X-XSS-Protection: 1; mode=block\r Last-Modified: Thu, 21 Sep 2023 20:56:08 GMT\r Content-Type: application/octet-stream\r Content-Length: 0\r \r HTTP/1.1 200 OK\r Date: Thu, 21 Sep 2023 21:07:10 GMT\r Accept-Ranges: none\r Cache-Control: private\r Content-Security-Policy: default-src 'self'; style-src 'self' 'unsafe\ -inline';\r Referrer-Policy: no-referrer-when-downgrade\r Server: tipidee/0.0.1.0\r Vary: Accept-Encoding\r X-Content-Type-Options: nosniff\r X-Frame-Options: DENY\r X-XSS-Protection: 1; mode=block\r Connection: close\r Last-Modified: Thu, 21 Sep 2023 20:51:46 GMT\r Content-Type: application/octet-stream\r Content-Length: 5\r \r " 3025 tipideed RET writev 950/0x3b6 3025 tipideed CALL close(3) 3025 tipideed RET close 0 3025 tipideed CALL writev(2,0x7a901c796f90,2) 3025 tipideed STRU struct iovec [2] { base=0x6850c812d03, len=36 } { base=0x0, len=0 } 3025 tipideed GIO fd 2 wrote 36 bytes "tipideed: pid 3025: info: exiting 0 " 3025 tipideed RET writev 36/0x24 3025 tipideed CALL kbind(0x7a901c796f78,24,0xc03c4396e5423669) 3025 tipideed RET kbind 0 3025 tipideed CALL exit(0)
Thu Sep 21 17:09:41 EDT 2023
/* * bcm2835 i2c controller * * Only i2c1 is supported. * i2c2 is reserved for HDMI. * i2c0 SDA0/SCL0 pins are not routed to P1 connector (except for early Rev 0 boards) * * maybe hardware problems lurking, see: https://github.com/raspberrypi/linux/issues/254 * * modified by adventuresin9@gmail.com to work with 9Front's port/devi2c */ #include "u.h" #include "../port/lib.h" #include "../port/error.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "../port/i2c.h" #define I2CREGS (VIRTIO+0x804000) typedef struct Ctlr Ctlr; typedef struct Bsc Bsc; /* * Registers for Broadcom Serial Controller (i2c compatible) */ struct Bsc { u32int ctrl; u32int stat; u32int dlen; u32int addr; u32int fifo; u32int clkdiv; /* default 1500 => 100 KHz assuming 150Mhz input clock */ u32int delay; /* default (48<<16)|48 falling:rising edge */ u32int clktimeout; /* default 64 */ }; /* * Per-controller info */ struct Ctlr { QLock qlock; Bsc *regs; Rendez r; Lock ilock; }; static Ctlr ctlr; enum { /* ctrl */ I2cen = 1<<15, /* I2c enable */ Intr = 1<<10, /* interrupt on reception */ Intt = 1<<9, /* interrupt on transmission */ Intd = 1<<8, /* interrupt on done */ Start = 1<<7, /* aka ST, start a transfer */ Clear = 1<<4, /* clear fifo */ Read = 1<<0, /* read transfer */ Write = 0<<0, /* write transfer */ /* stat */ Clkt = 1<<9, /* clock stretch timeout */ Err = 1<<8, /* NAK */ Rxf = 1<<7, /* RX fifo full */ Txe = 1<<6, /* TX fifo full */ Rxd = 1<<5, /* RX fifo has data */ Txd = 1<<4, /* TX fifo has space */ Rxr = 1<<3, /* RX fiio needs reading */ Txw = 1<<2, /* TX fifo needs writing */ Done = 1<<1, /* transfer done */ Ta = 1<<0, /* Transfer active */ /* pin settings */ SDA0Pin = 2, SCL0Pin = 3, }; static void i2cinterrupt(Ureg*, void*) { Bsc *r; int st; ilock(&ctlr.ilock); r = ctlr.regs; st = 0; if((r->ctrl & Intr) && (r->stat & Rxd)) st |= Intr; if((r->ctrl & Intt) && (r->stat & Txd)) st |= Intt; if(r->stat & Done) st |= Intd; if(st){ r->ctrl &= ~st; wakeup(&ctlr.r); } iunlock(&ctlr.ilock); } static int i2cready(void *st) { return (ctlr.regs->stat & (uintptr)st); } static int i2cinit(I2Cbus*) { ctlr.regs = (Bsc*)I2CREGS; ctlr.regs->clkdiv = 2500; gpiosel(SDA0Pin, Alt0); gpiosel(SCL0Pin, Alt0); gpiopullup(SDA0Pin); gpiopullup(SCL0Pin); intrenable(IRQi2c, i2cinterrupt, nil, BUSUNKNOWN, "i2c"); return 0; } /* * Basic I²C driver for Raspberry Pi * subaddressing wasn't reliable, so it is just not allowed * * 10 bit addressing is also disabled. */ static int i2cio(I2Cdev *dev, uchar *pkt, int olen, int ilen) { Bsc *r; uchar *p; int st; int o; int rw, len; uint addr; o = 0; if(dev->subaddr > 0){ /* subaddressing in not implemented */ return -1; } if((pkt[0] & 0xF8) == 0xF0){ /* b11110xxx reserved for 10bit addressing*/ r->ctrl = 0; return -1; } rw = pkt[0] & 1; /* rw bit is first bit of pkt[0], read == 1 */ addr = dev->addr; pkt++; /* move past device addr packet */ o++; /* have to at least return processing the dev addr */ /* * If 9Front is just running a probe * return 1, * else the controller throws an NAK error * when doing a write with just the dev addr */ if((olen == 1) && (ilen == 0)){ return 1; } qlock(&ctlr.qlock); r = ctlr.regs; r->ctrl = I2cen | Clear; r->addr = addr; r->stat = Clkt|Err|Done; len = (olen - 1) + ilen; r->dlen = len; r->ctrl = I2cen | Start | Intd | rw; p = pkt; st = rw == Read? Rxd : Txd; while(len > 0){ while((r->stat & (st|Done)) == 0){ r->ctrl |= rw == Read? Intr : Intt; sleep(&ctlr.r, i2cready, (void*)(st|Done)); } if(r->stat & (Err|Clkt)){ r->ctrl = 0; qunlock(&ctlr.qlock); return -1; } if(rw == Read){ do{ *p++ = r->fifo; len--; o++; }while ((r->stat & Rxd) && len > 0); }else{ do{ r->fifo = *p++; len--; o++; }while((r->stat & Txd) && len > 0); } } while((r->stat & Done) == 0) sleep(&ctlr.r, i2cready, (void*)Done); if(r->stat & (Err|Clkt)){ r->ctrl = 0; qunlock(&ctlr.qlock); return -1; } r->ctrl = 0; qunlock(&ctlr.qlock); return o; } void i2cbcmlink(void) { static I2Cbus i2c = {"i2c1", 400000, &ctlr, i2cinit, i2cio}; addi2cbus(&i2c); }
Thu Sep 21 16:31:05 EDT 2023
/* * bcm2835 i2c controller * * Only i2c1 is supported. * i2c2 is reserved for HDMI. * i2c0 SDA0/SCL0 pins are not routed to P1 connector (except for early Rev 0 boards) * * maybe hardware problems lurking, see: https://github.com/raspberrypi/linux/issues/254 * * modified by adventuresin9@gmail.com to work with 9Front's port/devi2c */ #include "u.h" #include "../port/lib.h" #include "../port/error.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "../port/i2c.h" #define I2CREGS (VIRTIO+0x804000) typedef struct Ctlr Ctlr; typedef struct Bsc Bsc; /* * Registers for Broadcom Serial Controller (i2c compatible) */ struct Bsc { u32int ctrl; u32int stat; u32int dlen; u32int addr; u32int fifo; u32int clkdiv; /* default 1500 => 100 KHz assuming 150Mhz input clock */ u32int delay; /* default (48<<16)|48 falling:rising edge */ u32int clktimeout; /* default 64 */ }; /* * Per-controller info */ struct Ctlr { QLock lock; Bsc *regs; Rendez r; }; static Ctlr ctlr; enum { /* ctrl */ I2cen = 1<<15, /* I2c enable */ Intr = 1<<10, /* interrupt on reception */ Intt = 1<<9, /* interrupt on transmission */ Intd = 1<<8, /* interrupt on done */ Start = 1<<7, /* aka ST, start a transfer */ Clear = 1<<4, /* clear fifo */ Read = 1<<0, /* read transfer */ Write = 0<<0, /* write transfer */ /* stat */ Clkt = 1<<9, /* clock stretch timeout */ Err = 1<<8, /* NAK */ Rxf = 1<<7, /* RX fifo full */ Txe = 1<<6, /* TX fifo full */ Rxd = 1<<5, /* RX fifo has data */ Txd = 1<<4, /* TX fifo has space */ Rxr = 1<<3, /* RX fiio needs reading */ Txw = 1<<2, /* TX fifo needs writing */ Done = 1<<1, /* transfer done */ Ta = 1<<0, /* Transfer active */ /* pin settings */ SDA0Pin = 2, SCL0Pin = 3, }; static void i2cinterrupt(Ureg*, void*) { Bsc *r; int st; r = ctlr.regs; st = 0; if((r->ctrl & Intr) && (r->stat & Rxd)) st |= Intr; if((r->ctrl & Intt) && (r->stat & Txd)) st |= Intt; if(r->stat & Done) st |= Intd; if(st){ r->ctrl &= ~st; wakeup(&ctlr.r); } } static int i2cready(void *st) { return (ctlr.regs->stat & (uintptr)st); } static int i2cinit(I2Cbus*) { ctlr.regs = (Bsc*)I2CREGS; ctlr.regs->clkdiv = 2500; gpiosel(SDA0Pin, Alt0); gpiosel(SCL0Pin, Alt0); gpiopullup(SDA0Pin); gpiopullup(SCL0Pin); intrenable(IRQi2c, i2cinterrupt, nil, BUSUNKNOWN, "i2c"); return 0; } /* * Basic I²C driver for Raspberry Pi * subaddressing wasn't reliable, so it is just not allowed * * 10 bit addressing is also disabled. */ static int i2cio(I2Cdev *dev, uchar *pkt, int olen, int ilen) { Bsc *r; uchar *p; int st; int o; int rw, len; uint addr; o = 0; if(dev->subaddr > 0){ /* subaddressing in not implemented */ return -1; } if((pkt[0] & 0xF8) == 0xF0){ /* b11110xxx reserved for 10bit addressing*/ r->ctrl = 0; return -1; } rw = pkt[0] & 1; /* rw bit is first bit of pkt[0], read == 1 */ addr = dev->addr; pkt++; /* move past device addr packet */ o++; /* have to at least return processing the dev addr */ /* * If 9Front is just running a probe * return 1, * else the controller throws an NAK error * when doing a write with just the dev addr */ if((olen == 1) && (ilen == 0)){ return 1; } qlock(&ctlr.lock); r = ctlr.regs; r->ctrl = I2cen | Clear; r->addr = addr; r->stat = Clkt|Err|Done; len = (olen - 1) + ilen; r->dlen = len; r->ctrl = I2cen | Start | Intd | rw; p = pkt; st = rw == Read? Rxd : Txd; while(len > 0){ while((r->stat & (st|Done)) == 0){ r->ctrl |= rw == Read? Intr : Intt; sleep(&ctlr.r, i2cready, (void*)(st|Done)); } if(r->stat & (Err|Clkt)){ qunlock(&ctlr.lock); r->ctrl = 0; return -1; } if(rw == Read){ do{ *p++ = r->fifo; len--; o++; }while ((r->stat & Rxd) && len > 0); }else{ do{ r->fifo = *p++; len--; o++; }while((r->stat & Txd) && len > 0); } } while((r->stat & Done) == 0) sleep(&ctlr.r, i2cready, (void*)Done); if(r->stat & (Err|Clkt)){ qunlock(&ctlr.lock); r->ctrl = 0; return -1; } r->ctrl = 0; qunlock(&ctlr.lock); return o; } void i2cbcmlink(void) { static I2Cbus i2c = {"i2c1", 400000, &ctlr, i2cinit, i2cio}; addi2cbus(&i2c); }
Thu Sep 21 16:19:38 EDT 2023
/* * bcm2835 i2c controller * * Only i2c1 is supported. * i2c2 is reserved for HDMI. * i2c0 SDA0/SCL0 pins are not routed to P1 connector (except for early Rev 0 boards) * * maybe hardware problems lurking, see: https://github.com/raspberrypi/linux/issues/254 * * modified by adventuresin9@gmail.com to work with 9Front's port/devi2c */ #include "u.h" #include "../port/lib.h" #include "../port/error.h" #include "mem.h" #include "dat.h" #include "fns.h" #include "io.h" #include "../port/i2c.h" #define I2CREGS (VIRTIO+0x804000) typedef struct Ctlr Ctlr; typedef struct Bsc Bsc; /* * Registers for Broadcom Serial Controller (i2c compatible) */ struct Bsc { u32int ctrl; u32int stat; u32int dlen; u32int addr; u32int fifo; u32int clkdiv; /* default 1500 => 100 KHz assuming 150Mhz input clock */ u32int delay; /* default (48<<16)|48 falling:rising edge */ u32int clktimeout; /* default 64 */ }; /* * Per-controller info */ struct Ctlr { QLock lock; Bsc *regs; Rendez r; }; static Ctlr ctlr; enum { /* ctrl */ I2cen = 1<<15, /* I2c enable */ Intr = 1<<10, /* interrupt on reception */ Intt = 1<<9, /* interrupt on transmission */ Intd = 1<<8, /* interrupt on done */ Start = 1<<7, /* aka ST, start a transfer */ Clear = 1<<4, /* clear fifo */ Read = 1<<0, /* read transfer */ Write = 0<<0, /* write transfer */ /* stat */ Clkt = 1<<9, /* clock stretch timeout */ Err = 1<<8, /* NAK */ Rxf = 1<<7, /* RX fifo full */ Txe = 1<<6, /* TX fifo full */ Rxd = 1<<5, /* RX fifo has data */ Txd = 1<<4, /* TX fifo has space */ Rxr = 1<<3, /* RX fiio needs reading */ Txw = 1<<2, /* TX fifo needs writing */ Done = 1<<1, /* transfer done */ Ta = 1<<0, /* Transfer active */ /* pin settings */ SDA0Pin = 2, SCL0Pin = 3, }; static void i2cinterrupt(Ureg*, void*) { Bsc *r; int st; r = ctlr.regs; st = 0; if((r->ctrl & Intr) && (r->stat & Rxd)) st |= Intr; if((r->ctrl & Intt) && (r->stat & Txd)) st |= Intt; if(r->stat & Done) st |= Intd; if(st){ r->ctrl &= ~st; wakeup(&ctlr.r); } } static int i2cready(void *st) { return (ctlr.regs->stat & (uintptr)st); } static int i2cinit(I2Cbus*) { ctlr.regs = (Bsc*)I2CREGS; ctlr.regs->clkdiv = 2500; gpiosel(SDA0Pin, Alt0); gpiosel(SCL0Pin, Alt0); gpiopullup(SDA0Pin); gpiopullup(SCL0Pin); intrenable(IRQi2c, i2cinterrupt, nil, BUSUNKNOWN, "i2c"); return 0; } /* * Basic I²C driver for Raspberry Pi * subaddressing wasn't reliable, so it is just not allowed * * 10 bit addressing is also disabled. * No subaddressing, since it wouldn't work consistently */ static int i2cio(I2Cdev *dev, uchar *pkt, int olen, int ilen) { Bsc *r; uchar *p; int st; int o; /* arguements from Miller's i2cio() */ int rw, len; uint addr; o = 0; if(dev->subaddr > 0){ /* subaddressing in not implemented */ return -1; } if((pkt[0] & 0xF8) == 0xF0){ /* b11110xxx reserved for 10bit addressing*/ r->ctrl = 0; return -1; } rw = pkt[0] & 1; /* rw bit is first bit of pkt[0], read == 1 */ addr = dev->addr; pkt++; /* move past device addr packet */ o++; /* have to at least return processing the dev addr */ //print("addr=%ux rw=%d olen=%d ilen=%d\n", addr, rw, olen, ilen); /* * If 9Front is just running a probe * return 1, * else the controller throws an NAK error * when doing a write with just the dev addr */ if((olen == 1) && (ilen == 0)){ return 1; } qlock(&ctlr.lock); r = ctlr.regs; r->ctrl = I2cen | Clear; r->addr = addr; r->stat = Clkt|Err|Done; len = (olen - 1) + ilen; r->dlen = len; r->ctrl = I2cen | Start | Intd | rw; p = pkt; st = rw == Read? Rxd : Txd; while(len > 0){ while((r->stat & (st|Done)) == 0){ r->ctrl |= rw == Read? Intr : Intt; sleep(&ctlr.r, i2cready, (void*)(st|Done)); } if(r->stat & (Err|Clkt)){ qunlock(&ctlr.lock); r->ctrl = 0; return -1; } if(rw == Read){ do{ *p++ = r->fifo; len--; o++; }while ((r->stat & Rxd) && len > 0); }else{ do{ r->fifo = *p++; len--; o++; }while((r->stat & Txd) && len > 0); } } while((r->stat & Done) == 0) sleep(&ctlr.r, i2cready, (void*)Done); if(r->stat & (Err|Clkt)){ qunlock(&ctlr.lock); r->ctrl = 0; return -1; } r->ctrl = 0; qunlock(&ctlr.lock); return o; } void i2cbcmlink(void) { static I2Cbus i2c = {"i2c1", 400000, &ctlr, i2cinit, i2cio}; addi2cbus(&i2c); }