From 58165923890865a6ac042fafce13f440ee986fd9 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 2 Feb 2012 00:11:29 -0500 Subject: make stdio open, read, and write operations cancellation points it should be noted that only the actual underlying buffer flush and fill operations are cancellable, not reads from or writes to the buffer. this behavior is compatible with POSIX, which makes all cancellation points in stdio optional, and it achieves the goal of allowing cancellation of a thread that's "stuck" on IO (due to a non-responsive socket/pipe peer, slow/stuck hardware, etc.) without imposing any measurable performance cost. --- src/stdio/fopen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/stdio/fopen.c') diff --git a/src/stdio/fopen.c b/src/stdio/fopen.c index 469de6f0..084cc73c 100644 --- a/src/stdio/fopen.c +++ b/src/stdio/fopen.c @@ -21,7 +21,7 @@ FILE *fopen(const char *filename, const char *mode) if (*mode == 'w') flags |= O_TRUNC; if (*mode == 'a') flags |= O_APPEND; - fd = syscall(SYS_open, filename, flags|O_LARGEFILE, 0666); + fd = syscall_cp(SYS_open, filename, flags|O_LARGEFILE, 0666); if (fd < 0) return 0; f = __fdopen(fd, mode); -- cgit v1.2.1