package version up to 2.6.0
[platform/core/uifw/libtbm.git] / src / tbm_bufmgr_int.h
index d940449..ea58185 100644 (file)
@@ -46,130 +46,37 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <dirent.h>
 #include <string.h>
 #include <errno.h>
+#include <assert.h>
 #include <pthread.h>
 #include <tbm_bufmgr.h>
+#include <tbm_bo.h>
 #include <tbm_surface.h>
 #include <tbm_surface_internal.h>
 #include <tbm_bufmgr_backend.h>
 #include <tbm_surface_queue.h>
+#include <tbm_log.h>
+#include <dlog.h>
 
-#define DEBUG
-#ifdef DEBUG
-extern int bDebug;
 extern tbm_bufmgr gBufMgr;
-
-#define TBM_DBG(...) { if (bDebug&0x1) TBM_LOG_D(__VA_ARGS__); }
-#define TBM_DBG_LOCK(...) { if (bDebug&0x2) TBM_LOG_D(__VA_ARGS__); }
-#else
-#define TBM_DBG(...)
-#define TBM_DBG_LOCK(...)
-#endif /* DEBUG */
-
-#define TRACE
-#ifdef TRACE
-extern int bTrace;
-#endif /* TRACE */
-
 extern int b_dump_queue;
-
-#ifdef HAVE_DLOG
-#include <dlog.h>
-
-extern int bDlog;
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-
-#define LOG_TAG "TBM"
-
-#define TBM_LOG_D(fmt, ...) {\
-       if (bDlog) {\
-               LOGD("[TBM:D] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               fprintf(stderr, "[TBM:D(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\
-       } \
-}
-
-#define TBM_LOG_I(fmt, ...) {\
-       if (bDlog) {\
-               LOGI("[TBM:I] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               fprintf(stderr, "[TBM:I(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\
-       } \
-}
-
-#define TBM_LOG_W(fmt, ...) {\
-       if (bDlog) {\
-               LOGW("[TBM:W] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               fprintf(stderr, "[TBM:W(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\
-       } \
-}
-
-#define TBM_LOG_E(fmt, ...) {\
-       if (bDlog) {\
-               LOGE("[TBM:E] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               fprintf(stderr, "[TBM:E(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\
-       } \
-}
-
-#define TBM_DEBUG(fmt, ...) {\
-       if (bDlog) {\
-               LOGE("[TBM_DEBUG] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               fprintf(stderr, "[TBM:DEBUG(%d)] " fmt, getpid(), ##__VA_ARGS__);\
-       } \
-}
-
-#ifdef TRACE
-#define TBM_TRACE(fmt, ...) {\
-       if (bDlog) {\
-               if (bTrace&0x1) LOGE("[TBM:TRACE] " fmt, ##__VA_ARGS__);\
-       } \
-       else {\
-               if (bTrace&0x1) fprintf(stderr, "[TBM:TRACE(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\
-       } \
-}
-#else
-#define TBM_TRACE(fmt, ...)
-#endif /* TRACE */
-
-#else
-#define TBM_LOG_D(fmt, ...)   fprintf(stderr, "[TBM:D(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__)
-#define TBM_LOG_I(fmt, ...)   fprintf(stderr, "[TBM:I(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__)
-#define TBM_LOG_W(fmt, ...)   fprintf(stderr, "[TBM:W(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__)
-#define TBM_LOG_E(fmt, ...)   fprintf(stderr, "[TBM:E(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__)
-#define TBM_DEBUG(fmt, ...)   fprintf(stderr, "[TBM:DEBUG(%d)] " fmt, getpid(), ##__VA_ARGS__)
-#ifdef TRACE
-#define TBM_TRACE(fmt, ...)   { if (bTrace&0x1) fprintf(stderr, "[TBM:TRACE(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__); }
-#else
-#define TBM_TRACE(fmt, ...)
-#endif /* TRACE */
-#endif /* HAVE_DLOG */
+extern int trace_mask;
 
 /* check condition */
 #define TBM_RETURN_IF_FAIL(cond) {\
        if (!(cond)) {\
-               TBM_LOG_E("'%s' failed.\n", #cond);\
+               TBM_ERR("'%s' failed.\n", #cond);\
                return;\
        } \
 }
 #define TBM_RETURN_VAL_IF_FAIL(cond, val) {\
        if (!(cond)) {\
-               TBM_LOG_E("'%s' failed.\n", #cond);\
+               TBM_ERR("'%s' failed.\n", #cond);\
                return val;\
        } \
 }
 #define TBM_GOTO_VAL_IF_FAIL(cond, val) {\
        if (!(cond)) {\
-               TBM_LOG_E("'%s' failed.\n", #cond);\
+               TBM_ERR("'%s' failed.\n", #cond);\
                goto val;\
        } \
 }
@@ -186,8 +93,64 @@ extern int bDlog;
        } \
 }
 
+#define TBM_TRACE_BO(fmt, args...) \
+       do { \
+               if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_BO) { \
+                       struct timespec ts; \
+                       clock_gettime(CLOCK_MONOTONIC, &ts); \
+                       tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \
+                                                 (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
+                                                 (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args);  \
+               } \
+       } while (0)
+
+#define TBM_TRACE_SURFACE_INTERNAL(fmt, args...) \
+       do { \
+               if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE_INTERNAL) { \
+                       struct timespec ts; \
+                       clock_gettime(CLOCK_MONOTONIC, &ts); \
+                       tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \
+                                                 (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
+                                                 (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args);  \
+               } \
+       } while (0)
+
+#define TBM_TRACE_SURFACE(fmt, args...) \
+       do { \
+               if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE) { \
+                       struct timespec ts; \
+                       clock_gettime(CLOCK_MONOTONIC, &ts); \
+                       tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \
+                                                 (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
+                                                 (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args);  \
+               } \
+       } while (0)
+
+#define TBM_TRACE_SURFACE_QUEUE(fmt, args...) \
+       do { \
+               if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE_QUEUE) { \
+                       struct timespec ts; \
+                       clock_gettime(CLOCK_MONOTONIC, &ts); \
+                       tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \
+                                                 (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
+                                                 (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args);  \
+               } \
+       } while (0)
+
+#define TBM_TRACE(fmt, args...) \
+       do { \
+               if (trace_mask&0x1) { \
+                       struct timespec ts; \
+                       clock_gettime(CLOCK_MONOTONIC, &ts); \
+                       tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \
+                                                 (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \
+                                                 (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args);  \
+               } \
+       } while (0)
+
+
 /* check validation */
-#define TBM_BUFMGR_IS_VALID(mgr) (mgr)
+#define TBM_BUFMGR_IS_VALID(mgr) (mgr && mgr == gBufMgr)
 #define TBM_BO_IS_VALID(bo) (bo && \
                            TBM_BUFMGR_IS_VALID(bo->bufmgr) && \
                            bo->item_link.next && \
@@ -303,6 +266,7 @@ typedef struct {
 tbm_bufmgr _tbm_bufmgr_get_bufmgr(void);
 int _tbm_bo_set_surface(tbm_bo bo, tbm_surface_h surface);
 int _tbm_surface_is_valid(tbm_surface_h surface);
+void _tbm_bo_free(tbm_bo bo);
 
 /* functions for mutex */
 int tbm_surface_internal_get_info(tbm_surface_h surface, int opt,
@@ -322,4 +286,5 @@ tbm_user_data *user_data_create(unsigned long key,
 void user_data_delete(tbm_user_data *user_data);
 
 int tbm_bufmgr_get_fd_limit(void);
+tbm_bufmgr tbm_bufmgr_get(void);
 #endif                                                 /* _TBM_BUFMGR_INT_H_ */