diff options
Diffstat (limited to 'libaio-0.3.109/harness/cases/7.t')
-rw-r--r-- | libaio-0.3.109/harness/cases/7.t | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/libaio-0.3.109/harness/cases/7.t b/libaio-0.3.109/harness/cases/7.t new file mode 100644 index 0000000..f877d8a --- /dev/null +++ b/libaio-0.3.109/harness/cases/7.t @@ -0,0 +1,30 @@ +/* 7.t +- Write overlapping the file size rlimit boundary: should be a short + write. (7.t) +- Write at the file size rlimit boundary: should give EFBIG. (I think + the spec requires that you do NOT deliver SIGXFSZ in this case, where + you would do so for sync IO.) (7.t) +- Special case: a write of zero bytes at or beyond the file size rlimit + boundary must return success. (7.t) +*/ + +#include <sys/resource.h> +#include <signal.h> + +void SET_RLIMIT(long long limit) +{ + struct rlimit rlim; + int res; + + /* Seems that we do send SIGXFSZ, but hard to fix... */ + signal(SIGXFSZ, SIG_IGN); + rlim.rlim_cur = limit; assert(rlim.rlim_cur == limit); + rlim.rlim_max = limit; assert(rlim.rlim_max == limit); + + res = setrlimit(RLIMIT_FSIZE, &rlim); assert(res == 0); +} + +#define LIMIT 8192 +#define FILENAME "testdir/rwfile" + +#include "common-7-8.h" |