X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Ftable.h;h=22574be7127cfc864a926647ecfd2e631b8e9801;hb=37a1300c3ca05a97160d44dc34298c447b50ed9d;hp=609d9b14bddfea507ce991a39fa9b7dcd29dc417;hpb=e1040c772fbebc3abe9e7222f9c540112c4dca81;p=openvswitch diff --git a/datapath/table.h b/datapath/table.h index 609d9b14..22574be7 100644 --- a/datapath/table.h +++ b/datapath/table.h @@ -34,7 +34,7 @@ struct tbl_node { struct tbl { struct rcu_head rcu; unsigned int n_buckets; - struct tbl_bucket ** __rcu *buckets; + struct tbl_bucket __rcu ***buckets; unsigned int count; void (*obj_destructor)(struct tbl_node *); }; @@ -47,6 +47,9 @@ struct tbl { #define TBL_L1_SIZE (1 << TBL_L1_BITS) #define TBL_L1_SHIFT TBL_L2_BITS +/* For 4 kB pages, this is 1,024 on 32-bit or 512 on 64-bit. */ +#define TBL_MIN_BUCKETS TBL_L2_SIZE + /* For 4 kB pages, this is 1,048,576 on 32-bit or 262,144 on 64-bit. */ #define TBL_MAX_BUCKETS (TBL_L1_SIZE * TBL_L2_SIZE) @@ -59,6 +62,7 @@ int tbl_remove(struct tbl *, struct tbl_node *); unsigned int tbl_count(struct tbl *); int tbl_foreach(struct tbl *, int (*callback)(struct tbl_node *, void *aux), void *aux); +struct tbl_node *tbl_next(struct tbl *, u32 *bucketp, u32 *objp); int tbl_n_buckets(struct tbl *); struct tbl *tbl_expand(struct tbl *);