summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArvin Schnell <aschnell@suse.de>2013-01-30 14:50:26 -0800
committerDavid Sterba <dsterba@suse.cz>2013-02-19 11:15:30 +0100
commit0c38ff3ca4f481bbae74283fd00a56fbd938e4b2 (patch)
tree0cfb6ca9cf09a104237203bfba74eb52dc47f51c
parent7d4dc89f96644c6f1b7efb5a3759bbee58f5b27e (diff)
btrfs-progs: make libbtrfs usable from C++
Please find attached a patch to make the new libbtrfs usable from C++ (at least for the parts snapper will likely need). Signed-off-by: Arvin Schnell <aschnell@suse.de> Signed-off-by: Mark Fasheh <mfasheh@suse.de>
-rw-r--r--extent_io.c6
-rw-r--r--extent_io.h6
-rw-r--r--ioctl.h8
-rw-r--r--list.h40
-rw-r--r--rbtree.h2
-rw-r--r--send-stream.h7
-rw-r--r--send-utils.h7
-rw-r--r--send.h8
8 files changed, 57 insertions, 27 deletions
diff --git a/extent_io.c b/extent_io.c
index 987452e1..78deb502 100644
--- a/extent_io.c
+++ b/extent_io.c
@@ -48,7 +48,7 @@ static struct extent_state *alloc_extent_state(void)
return NULL;
state->refs = 1;
state->state = 0;
- state->private = 0;
+ state->xprivate = 0;
return state;
}
@@ -511,7 +511,7 @@ int set_state_private(struct extent_io_tree *tree, u64 start, u64 private)
ret = -ENOENT;
goto out;
}
- state->private = private;
+ state->xprivate = private;
out:
return ret;
}
@@ -532,7 +532,7 @@ int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private)
ret = -ENOENT;
goto out;
}
- *private = state->private;
+ *private = state->xprivate;
out:
return ret;
}
diff --git a/extent_io.h b/extent_io.h
index 5df44f7d..63e90042 100644
--- a/extent_io.h
+++ b/extent_io.h
@@ -47,7 +47,7 @@ struct extent_state {
u64 end;
int refs;
unsigned long state;
- u64 private;
+ u64 xprivate;
};
struct extent_buffer {
@@ -86,8 +86,8 @@ int extent_buffer_uptodate(struct extent_buffer *eb);
int set_extent_buffer_uptodate(struct extent_buffer *eb);
int clear_extent_buffer_uptodate(struct extent_io_tree *tree,
struct extent_buffer *eb);
-int set_state_private(struct extent_io_tree *tree, u64 start, u64 private);
-int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private);
+int set_state_private(struct extent_io_tree *tree, u64 start, u64 xprivate);
+int get_state_private(struct extent_io_tree *tree, u64 start, u64 *xprivate);
struct extent_buffer *find_extent_buffer(struct extent_io_tree *tree,
u64 bytenr, u32 blocksize);
struct extent_buffer *find_first_extent_buffer(struct extent_io_tree *tree,
diff --git a/ioctl.h b/ioctl.h
index 8c32a2a2..3e7e451d 100644
--- a/ioctl.h
+++ b/ioctl.h
@@ -22,6 +22,10 @@
#include <linux/ioctl.h>
#include <time.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define BTRFS_IOCTL_MAGIC 0x94
#define BTRFS_VOL_NAME_MAX 255
@@ -521,4 +525,8 @@ struct btrfs_ioctl_clone_range_args {
#define BTRFS_IOC_DEV_REPLACE _IOWR(BTRFS_IOCTL_MAGIC, 53, \
struct btrfs_ioctl_dev_replace_args)
+#ifdef __cplusplus
+}
+#endif
+
#endif
diff --git a/list.h b/list.h
index d31090c1..50f46193 100644
--- a/list.h
+++ b/list.h
@@ -19,8 +19,8 @@
#ifndef _LINUX_LIST_H
#define _LINUX_LIST_H
-#define LIST_POISON1 ((void *) 0x00100100)
-#define LIST_POISON2 ((void *) 0x00200200)
+#define LIST_POISON1 ((struct list_head *) 0x00100100)
+#define LIST_POISON2 ((struct list_head *) 0x00200200)
/*
* Simple doubly linked list implementation.
@@ -54,17 +54,17 @@ static inline void INIT_LIST_HEAD(struct list_head *list)
* the prev/next entries already!
*/
#ifndef CONFIG_DEBUG_LIST
-static inline void __list_add(struct list_head *new,
+static inline void __list_add(struct list_head *xnew,
struct list_head *prev,
struct list_head *next)
{
- next->prev = new;
- new->next = next;
- new->prev = prev;
- prev->next = new;
+ next->prev = xnew;
+ xnew->next = next;
+ xnew->prev = prev;
+ prev->next = xnew;
}
#else
-extern void __list_add(struct list_head *new,
+extern void __list_add(struct list_head *xnew,
struct list_head *prev,
struct list_head *next);
#endif
@@ -78,12 +78,12 @@ extern void __list_add(struct list_head *new,
* This is good for implementing stacks.
*/
#ifndef CONFIG_DEBUG_LIST
-static inline void list_add(struct list_head *new, struct list_head *head)
+static inline void list_add(struct list_head *xnew, struct list_head *head)
{
- __list_add(new, head, head->next);
+ __list_add(xnew, head, head->next);
}
#else
-extern void list_add(struct list_head *new, struct list_head *head);
+extern void list_add(struct list_head *xnew, struct list_head *head);
#endif
@@ -95,9 +95,9 @@ extern void list_add(struct list_head *new, struct list_head *head);
* Insert a new entry before the specified head.
* This is useful for implementing queues.
*/
-static inline void list_add_tail(struct list_head *new, struct list_head *head)
+static inline void list_add_tail(struct list_head *xnew, struct list_head *head)
{
- __list_add(new, head->prev, head);
+ __list_add(xnew, head->prev, head);
}
/*
@@ -137,18 +137,18 @@ extern void list_del(struct list_head *entry);
* Note: if 'old' was empty, it will be overwritten.
*/
static inline void list_replace(struct list_head *old,
- struct list_head *new)
+ struct list_head *xnew)
{
- new->next = old->next;
- new->next->prev = new;
- new->prev = old->prev;
- new->prev->next = new;
+ xnew->next = old->next;
+ xnew->next->prev = xnew;
+ xnew->prev = old->prev;
+ xnew->prev->next = xnew;
}
static inline void list_replace_init(struct list_head *old,
- struct list_head *new)
+ struct list_head *xnew)
{
- list_replace(old, new);
+ list_replace(old, xnew);
INIT_LIST_HEAD(old);
}
/**
diff --git a/rbtree.h b/rbtree.h
index bed054d4..edf12c82 100644
--- a/rbtree.h
+++ b/rbtree.h
@@ -145,7 +145,7 @@ extern struct rb_node *rb_first(struct rb_root *);
extern struct rb_node *rb_last(struct rb_root *);
/* Fast replacement of a single node without remove/rebalance/add/rebalance */
-extern void rb_replace_node(struct rb_node *victim, struct rb_node *new,
+extern void rb_replace_node(struct rb_node *victim, struct rb_node *xnew,
struct rb_root *root);
static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
diff --git a/send-stream.h b/send-stream.h
index 9a17e32d..92230187 100644
--- a/send-stream.h
+++ b/send-stream.h
@@ -18,6 +18,10 @@
#ifndef SEND_STREAM_H_
#define SEND_STREAM_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct btrfs_send_ops {
int (*subvol)(const char *path, const u8 *uuid, u64 ctransid,
void *user);
@@ -55,5 +59,8 @@ struct btrfs_send_ops {
int btrfs_read_and_process_send_stream(int fd,
struct btrfs_send_ops *ops, void *user);
+#ifdef __cplusplus
+}
+#endif
#endif /* SEND_STREAM_H_ */
diff --git a/send-utils.h b/send-utils.h
index da407eba..fea576c0 100644
--- a/send-utils.h
+++ b/send-utils.h
@@ -21,6 +21,10 @@
#include "ctree.h"
#include "rbtree.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
enum subvol_search_type {
subvol_search_by_root_id,
subvol_search_by_uuid,
@@ -65,5 +69,8 @@ void subvol_uuid_search_add(struct subvol_uuid_search *s,
char *path_cat(const char *p1, const char *p2);
char *path_cat3(const char *p1, const char *p2, const char *p3);
+#ifdef __cplusplus
+}
+#endif
#endif /* SEND_UTILS_H_ */
diff --git a/send.h b/send.h
index 48d425ae..e8da785f 100644
--- a/send.h
+++ b/send.h
@@ -19,6 +19,10 @@
#include "ctree.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define BTRFS_SEND_STREAM_MAGIC "btrfs-stream"
#define BTRFS_SEND_STREAM_VERSION 1
@@ -132,3 +136,7 @@ enum {
#ifdef __KERNEL__
long btrfs_ioctl_send(struct file *mnt_file, void __user *arg);
#endif
+
+#ifdef __cplusplus
+}
+#endif