int iovcnt = 2;
ssize_t cnt;
for (;;) {
- pthread_cleanup_push(cleanup, f);
- cnt = syscall_cp(SYS_writev, f->fd, iov, iovcnt);
- pthread_cleanup_pop(0);
+ if (libc.main_thread) {
+ pthread_cleanup_push(cleanup, f);
+ cnt = syscall_cp(SYS_writev, f->fd, iov, iovcnt);
+ pthread_cleanup_pop(0);
+ } else {
+ cnt = syscall(SYS_writev, f->fd, iov, iovcnt);
+ }
if (cnt == rem) {
f->wend = f->buf + f->buf_size;
f->wpos = f->wbase = f->buf;