remove eagain experiment

This commit is contained in:
root 2025-05-21 09:06:25 +00:00
parent 21153b7d14
commit e31c9452c8
3 changed files with 0 additions and 131 deletions

View file

@ -1,27 +0,0 @@
#include <fcntl.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>
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);
}
}

View file

@ -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

View file

@ -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);
}
}