X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Flayout.h;h=9a7148460152bf6e36bf7e9ab786027a6f7203bd;hp=2060db8618ae691c18735875302ffcc4fe51cf48;hb=35f198de1851a7d57064546b7ced677b6fabee27;hpb=ef9dec6018e1f0c6e546245a1478be523592d02d diff --git a/ccan/tdb2/test/layout.h b/ccan/tdb2/test/layout.h index 2060db86..9a714846 100644 --- a/ccan/tdb2/test/layout.h +++ b/ccan/tdb2/test/layout.h @@ -2,23 +2,37 @@ #define TDB2_TEST_LAYOUT_H #include -struct tdb_layout *new_tdb_layout(const char *filename); -void tdb_layout_add_freelist(struct tdb_layout *layout); +struct tdb_layout *new_tdb_layout(void); +void tdb_layout_add_freetable(struct tdb_layout *layout); void tdb_layout_add_free(struct tdb_layout *layout, tdb_len_t len, - unsigned flist); + unsigned ftable); void tdb_layout_add_used(struct tdb_layout *layout, TDB_DATA key, TDB_DATA data, tdb_len_t extra); +void tdb_layout_add_capability(struct tdb_layout *layout, + uint64_t type, + bool write_breaks, + bool check_breaks, + bool open_breaks, + tdb_len_t extra); + #if 0 /* FIXME: Allow allocation of subtables */ void tdb_layout_add_hashtable(struct tdb_layout *layout, int htable_parent, /* -1 == toplevel */ unsigned int bucket, tdb_len_t extra); #endif -struct tdb_context *tdb_layout_get(struct tdb_layout *layout); +/* freefn is needed if we're using failtest_free. */ +struct tdb_context *tdb_layout_get(struct tdb_layout *layout, + void (*freefn)(void *), + union tdb_attribute *attr); +void tdb_layout_write(struct tdb_layout *layout, void (*freefn)(void *), + union tdb_attribute *attr, const char *filename); + +void tdb_layout_free(struct tdb_layout *layout); enum layout_type { - FREELIST, FREE, DATA, HASHTABLE, + FREETABLE, FREE, DATA, HASHTABLE, CAPABILITY }; /* Shared by all union members. */ @@ -27,14 +41,14 @@ struct tle_base { tdb_off_t off; }; -struct tle_freelist { +struct tle_freetable { struct tle_base base; }; struct tle_free { struct tle_base base; tdb_len_t len; - unsigned flist_num; + unsigned ftable_num; }; struct tle_used { @@ -51,16 +65,22 @@ struct tle_hashtable { tdb_len_t extra; }; +struct tle_capability { + struct tle_base base; + uint64_t type; + tdb_len_t extra; +}; + union tdb_layout_elem { struct tle_base base; - struct tle_freelist flist; + struct tle_freetable ftable; struct tle_free free; struct tle_used used; struct tle_hashtable hashtable; + struct tle_capability capability; }; struct tdb_layout { - const char *filename; unsigned int num_elems; union tdb_layout_elem *elem; };