diff --git a/eagain.c b/eagain.c deleted file mode 100644 index 746d1e5..0000000 --- a/eagain.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include -#include - -char path[] = "eagain.sock"; -char spam[0xffff0]; - -int main() { - int sock = socket(AF_UNIX, SOCK_STREAM, 0); - fcntl(sock, F_SETFL, O_NONBLOCK); - struct sockaddr_un addr; - addr.sun_family = AF_UNIX; - int i = 0; - while (1) { - addr.sun_path[i] = path[i]; - if (path[i] == 0) break; - i += 1; - } - connect(sock, (struct sockaddr*)&addr, sizeof(addr)); - //shutdown(sock, SHUT_WR); - for (i = 0; i < 9999; i += 1) { - int result = write(sock, spam, 0xffff); - if (result < 0) exit(1); - } -} diff --git a/eagain.s b/eagain.s deleted file mode 100644 index 07f7311..0000000 --- a/eagain.s +++ /dev/null @@ -1,92 +0,0 @@ -global _start - -; constants -SYS_WRITE equ 1 -SYS_SOCKET equ 41 -SYS_CONNECT equ 42 -SYS_SHUTDOWN equ 48 -SYS_FCNTL equ 72 -SYS_EXIT equ 60 -AF_UNIX equ 1 -SOCK_STREAM equ 1 -F_GETFL equ 3 -F_SETFL equ 4 -O_NONBLOCK equ 2048 -SHUT_RDWR equ 2 - -SECTION .data -server_path db "eagain.sock", 0x00 -server_path_len equ $ - server_path -sockaddr_size equ 2 + 108 ; $ man 7 unix - -SECTION .bss -sockaddr resb sockaddr_size -spam resb 0xffff - -SECTION .text - -_start: - mov rax, SYS_SOCKET - mov rdi, AF_UNIX - mov rsi, SOCK_STREAM - mov rdx, 0 - syscall - - mov r15, rax - - call nonblocking - call make_sockaddr - - mov rax, SYS_CONNECT - mov rdi, r15 - mov rsi, sockaddr - mov rdx, sockaddr_size - syscall - -loop: - mov rax, SYS_WRITE - mov rdi, r15 - mov rsi, spam - mov rdx, 0xffff - syscall - - cmp rax, 0 - jge loop - - mov rax, SYS_EXIT - mov rdi, 1 - syscall - -nonblocking: - mov r10, rax - - mov rax, SYS_FCNTL - mov rdi, r10 - mov rsi, F_GETFL - syscall - - mov r11, rax - xor r11, O_NONBLOCK - - mov rax, SYS_FCNTL - mov rdi, r10 - mov rsi, F_SETFL - mov rdx, r11 - syscall - - ret - -make_sockaddr: - mov word [sockaddr], AF_UNIX - mov rax, 0 - -make_sockaddr__copy_server_path: - cmp rax, server_path_len - jge return - mov r10, [server_path + rax] - mov [sockaddr + rax + 2], r10 - add rax, 8 - jmp make_sockaddr__copy_server_path - -return: - ret diff --git a/eagain.zig b/eagain.zig deleted file mode 100644 index e25cfa0..0000000 --- a/eagain.zig +++ /dev/null @@ -1,12 +0,0 @@ -const std = @import("std"); - -const path = "eagain.sock"; -const spam: [0xffff]u8 = undefined; - -pub fn main() !void { - const stream = try std.net.connectUnixSocket(path); - _ = try std.posix.fcntl(stream.handle, std.c.F.SETFL, std.c.SOCK.NONBLOCK); - for (0..99999) |_| { - _ = try stream.write(&spam); - } -}