]> git.ozlabs.org Git - ccan/blobdiff - ccan/failtest/failtest.h
check_type: fix incorrect documentation.
[ccan] / ccan / failtest / failtest.h
index 294c28b970066fda3b0e22fb3bf7ffe03140ad72..9af5669678f2295edccb5cbea4cb777016f40b8f 100644 (file)
@@ -47,6 +47,8 @@ enum failtest_call_type {
        FAILTEST_READ,
        FAILTEST_WRITE,
        FAILTEST_FCNTL,
+       FAILTEST_MMAP,
+       FAILTEST_LSEEK
 };
 
 struct calloc_call {
@@ -71,6 +73,10 @@ struct open_call {
        const char *pathname;
        int flags;
        mode_t mode;
+       bool always_save;
+       bool closed;
+       /* This is used for O_TRUNC opens on existing files. */
+       struct contents_saved *saved;
 };
 
 struct close_call {
@@ -97,6 +103,9 @@ struct write_call {
        const void *buf;
        size_t count;
        off_t off;
+       bool is_pwrite;
+       struct failtest_call *opener;
+       struct contents_saved *saved;
 };
 
 struct fcntl_call {
@@ -110,6 +119,26 @@ struct fcntl_call {
        } arg;
 };
 
+struct mmap_call {
+       void *ret;
+       void *addr;
+       size_t length;
+       int prot;
+       int flags;
+       int fd;
+       off_t offset;
+       struct failtest_call *opener;
+       struct contents_saved *saved;
+};
+
+struct lseek_call {
+       ssize_t ret;
+       int fd;
+       off_t offset;
+       int whence;
+       off_t old_off;
+};
+
 /**
  * struct failtest_call - description of a call redirected to failtest module
  * @type: the call type
@@ -136,7 +165,12 @@ struct failtest_call {
        /* What we set errno to. */
        int error;
        /* How do we clean this up? */
-       void (*cleanup)(void *u);
+       void (*cleanup)(void *u, bool restore);
+       /* Should their program have cleaned up? */
+       bool can_leak;
+       /* Backtrace of call chain. */
+       void **backtrace;
+       unsigned int backtrace_num;
        /* The actual call data. */
        union {
                struct calloc_call calloc;
@@ -148,6 +182,8 @@ struct failtest_call {
                struct read_call read;
                struct write_call write;
                struct fcntl_call fcntl;
+               struct mmap_call mmap;
+               struct lseek_call lseek;
        } u;
 };
 
@@ -178,7 +214,7 @@ enum failtest_result {
  *     static enum failtest_result dont_fail_alloc(struct tlist_calls *history)
  *     {
  *             struct failtest_call *call;
- *             call = tlist_tail(history, struct failtest_call, list);
+ *             call = tlist_tail(history, list);
  *             if (call->type == FAILTEST_MALLOC
  *                     || call->type == FAILTEST_CALLOC
  *                     || call->type == FAILTEST_REALLOC)