+ * To lock and unlock Mutex
+ */
+
+#define TETHERING_LOCK \
+ do { \
+ _tethering_lock(); \
+ } while(0)
+
+#define TETHERING_UNLOCK \
+ do { \
+ _tethering_unlock(); \
+ } while(0)
+
+void _tethering_lock(void);
+void _tethering_unlock(void);
+
+/**
+ * To check supported feature
+ */
+
+#define TETHERING_FEATURE "http://tizen.org/feature/network.tethering"
+#define TETHERING_BT_FEATURE "http://tizen.org/feature/network.tethering.bluetooth"
+#define TETHERING_USB_FEATURE "http://tizen.org/feature/network.tethering.usb"
+#define TETHERING_WIFI_FEATURE "http://tizen.org/feature/network.tethering.wifi"
+
+typedef enum {
+ TETHERING_SUPPORTED_FEATURE,
+ TETHERING_SUPPORTED_FEATURE_WIFI,
+ TETHERING_SUPPORTED_FEATURE_BT,
+ TETHERING_SUPPORTED_FEATURE_USB,
+ TETHERING_SUPPORTED_FEATURE_MAX,
+} tethering_supported_feature_e;
+
+#define CHECK_FEATURE_SUPPORTED(...) \
+ do { \
+ int rv = _tethering_check_feature_supported(__VA_ARGS__, NULL); \
+ if (rv != TETHERING_ERROR_NONE) { \
+ return rv; \
+ } \
+ } while (0)
+
+int _tethering_check_feature_supported(const char* feature, ...);
+
+/**