Applied reviewed header(DateTime to Uuid)
[platform/framework/native/appfw.git] / inc / FBaseSysLog.h
index 762783a..1a4db0c 100644 (file)
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -19,7 +18,7 @@
  * @file               FBaseSysLog.h
  * @brief              This is the header file for the %Log macros.
  *
- * This header file defines the %Log macros.
+ * This header file defines the Log macros.
  */
 
 #ifndef _FBASE_SYS_LOG_H_
@@ -44,14 +43,14 @@ extern "C" {
 /** 
  * @mainpage Tizen Platform API Reference
  *
- * The Tizen platform API Reference provides descriptions of APIs for the platform developers.
+ * The Tizen platform API Reference provides the description of APIs for the platform developers.
  */
 
 /**
  * @defgroup GroupMacros Debugging Macros
  *
- * This page describes Tizen debugging macros used by the Tizen modules.
- * These debugging macros should use specific NID ( Namespace ID ) to distinguish each Tizen modules.
+ * This page describes the Tizen debugging macros used by the Tizen modules.
+ * These debugging macros should use specific NIDs ( Namespace ID ) to distinguish each Tizen module.
  *
  * @since 2.0
  */
@@ -64,18 +63,18 @@ extern "C" {
  */
 
 /**
- * This macro allows display of informative log messages.
+ * This macro allows the display of informative log messages.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
- * The following example demonstrates how to use the SysLog macro.
+ * The following example demonstrates how to use the %SysLog macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        SysLog(NID, "Initialization successful.");
@@ -88,7 +87,7 @@ extern "C" {
 #define SysLog(NID, ...)               SysLogInternal(NID, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of exception log messages with a tag and sets the last result.
+ * This macro allows the display of exception log messages with a tag and sets the last result.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -100,7 +99,7 @@ extern "C" {
  * The following example demonstrates how to use the SysLogException macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -120,19 +119,19 @@ extern "C" {
 #define SysLogException(NID, r, ...)               SysLogExceptionInternal(NID, r, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of informative log messages with a tag.
+ * This macro allows the display of informative log messages with a tag.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
  * @param[in]  tag                     The user defined tag
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
  * The following example demonstrates how to use the SysLogTag macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        SysLogTag(NID, "MyTag", "Initialization successful.");
@@ -145,7 +144,7 @@ extern "C" {
 #define SysLogTag(NID, tag, ...)       SysLogTagInternal(NID, tag, __PRETTY_FUNCTION__, __LINE__, __VA_ARGS__)
 
 /**
- * This macro allows display of exception log messages with a tag and sets the last result.
+ * This macro allows the display of exception log messages with a tag and sets the last result.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -153,12 +152,12 @@ extern "C" {
  * @param[in]  NID                     The Tizen namespace
  * @param[in]  tag                     The user defined tag
  * @param[in]  r                       The last result to set
- * @param[in]  ...                     The message to display
+ * @param[in]  ...         The message to display
  *
  * The following example demonstrates how to use the SysLogTagException macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        SysLogExceptionTag(NID, "MyTag", E_INVALID_ARG, "Initialization successful.");
@@ -173,19 +172,19 @@ extern "C" {
 
 
 /**
- * This macro allows display of informative log message with a tag, when the condition is @c false.
+ * This macro allows the display of informative log messages with a tag, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
+ * @param[in]  condition       The condition that is expected to be true
  * @param[in]          ...                     The message to display
  *
  * The following example demonstrates how to use the SysTryLog macro.
  *
  * @code
- *     Bool
+ *     void
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -206,21 +205,21 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of informative log message, when the condition is @c false.
- * Executes statements and goes to label.
+ * This macro allows the display of informative log messages, when the condition is @c false.
+ * Executes statements and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
- * @param[in]  expr                    Expressions that are evaluated before going to CATCH label
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
  * @param[in]   ...                    The message to display
  *
  * The following example demonstrates how to use the SysTryLogCatch macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -245,20 +244,20 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of informative log message and returns returnValue, when the condition is @c false.
+ * This macro allows the display of informative log messages and returns @c returnValue, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
- * @param[in]  NID                     The Tizen namespace
+ * @param[in]  NID                             The Tizen namespace
  * @param[in]  condition               The condition that is expected to be true
- * @param[in]  returnValue             The value to return when the condition is @c false
- * @param[in]   ...                    The message to display
+ * @param[in]  returnValue     The value to return when the condition is @c false
+ * @param[in]   ...                            The message to display
  *
  * The following example demonstrates how to use the SysTryLogReturn macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -282,21 +281,21 @@ extern "C" {
 
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
- * @param[in]  returnValue             The value to return when the condition is @c false
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  returnValue The value to return when the condition is @c false
  * @param[in]  r                       The last result to set
  * @param[in]   ...                    The message to display
  *
  * The following example demonstrates how to use the SysTryReturn macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -319,14 +318,14 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This is a shorthand macro for SysTryReturn(NID, condition, r, r, "[" # r "] " ...).
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
+ * @param[in]  condition       The condition that is expected to be true
  * @param[in]  r                       The last result to set
  * @param[in]   ...                    The message to display
  *
@@ -334,7 +333,7 @@ extern "C" {
  *
  * @code
  * #define E_UNKNOWN_ERROR 1
- *     Bool
+ *     result
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -342,7 +341,7 @@ extern "C" {
  *        SysTryReturnResult(NID, condition, E_UNKNOWN_ERROR, "An unexpected error has occurred.");
  *
  *        //...
- *        return true;
+ *        return E_SUCCESS;
  *     }
  * @endcode
  * @hideinitializer
@@ -357,20 +356,20 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and sets the last result, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
+ * @param[in]  condition       The condition that is expected to be true
  * @param[in]  r                       The last result to set
  * @param[in]   ...                    The message to display
  *
  * The following example demonstrates how to use the SysTryReturnVoidResult macro.
  *
  * @code
- *     Bool
+ *     void
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -378,7 +377,7 @@ extern "C" {
  *        SysTryReturnVoidResult(NID, condition,  E_INVALID_ARG, "An unexpected error has occurred.");
  *
  *        //...
- *        return true;
+ *        return;
  *     }
  * @endcode
  * @hideinitializer
@@ -393,22 +392,22 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag, when the condition is @c false.
- * Executes statements, sets the last result and goes to label.
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
- * @param[in]  expr                    Expressions that are evaluated before going to CATCH label
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
  * @param[in]  r                       The last result to set
  * @param[in]   ...                    The message to display
  *
  * The following example demonstrates how to use the SysTryCatch macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -433,23 +432,23 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag, when the condition is @c false.
- * Executes statements, sets the last result and goes to label.
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
  * @param[in]  NID                     The Tizen namespace
- * @param[in]  condition               The condition that is expected to be true
- * @param[in]  expr                    Expressions that are evaluated before going to catchLabel label
- * @param[in]  catchLabel              The label for goto operation
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
+ * @param[in]  catchLabel      The label for the goto operation
  * @param[in]  r                       The last result to set
  * @param[in]   ...                    The message to display
  *
  * The following example demonstrates how to use the SysTryCatchLabel macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -475,7 +474,7 @@ extern "C" {
 
 
 /**
- * This macro allows display of exception log message and the program will expire, when the condition is @c false.
+ * This macro allows the display of exception log messages and the program expires, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -485,7 +484,7 @@ extern "C" {
  * The following example demonstrates how to use the SysAssert macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -506,18 +505,18 @@ extern "C" {
        } while (0);
 
 /**
- * This macro allows display of exception log message with a tag and the program will expire, when the condition is @c false.
+ * This macro allows the display of exception log messages with a tag and the program expires, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
  *
- * @param[in]  condition               The condition that is expected to be true
+ * @param[in]  condition       The condition that is expected to be true
  * @param[in]          ...                     The message to display
  *
  * The following example demonstrates how to use the SysAssertf macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -539,7 +538,7 @@ extern "C" {
 
 
 /**
- * This macro generates an error message during compile time, when the condition is @c false.
+ * This macro generates an error message during the compile time, when the condition is @c false.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -549,7 +548,7 @@ extern "C" {
  * The following example demonstrates how to use the SysStaticAssert macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -569,7 +568,7 @@ case condition: \
 
 
 /**
- * This macro allows display of exception log messages.
+ * This macro allows the display of exception log messages.
  * This system log macro is for the platform modules.
  *
  * @since 2.0
@@ -580,7 +579,7 @@ case condition: \
  * The following example demonstrates how to use the SysPropagate macro.
  *
  * @code
- *     Bool
+ *     bool
  *     MyEngine::Init(int value)
  *     {
  *        //...
@@ -594,6 +593,353 @@ case condition: \
  */
 #define SysPropagate(NID, r)        SysPropagateInternal(__PRETTY_FUNCTION__, __LINE__, NID, r)
 
+// Secure Macros
+#if defined(_SECURE_LOG)
+
+#define SysSecureLog(NID, ...)                         SysLogInternal(NID, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define SysSecureLogException(NID, r,...)              SysLogExceptionInternal(NID, r, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+
+#define SysSecureLogTag(NID, tag, ...)                 SysLogTagInternal(NID, tag, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+#define SysSecureLogExceptionTag(NID, tag, r, ...)     SysLogExceptionTagInternal(NID, tag, r, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__)
+
+#else
+
+/**
+ * This macro is used to protect informative log messages which need security.
+ * It allows the display of informative log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLog macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLog(NID, "User ID : 'JoneDoe'");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLog(NID, ...)
+
+/**
+ * This macro is used to protect exception log messages which needs security, and sets the last result.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  r                       The last result to set
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogException macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           //...
+ *           if (something_wrong)
+ *           {
+ *              SysSecureLogException(NID,  E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
+ *
+ *              return false;
+ *           }
+ *   //...
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLogException(NID, r,...)                      SetLastResult(r);
+
+/**
+ * This macro is used to protect informative log messages which need security, with a tag.
+ * It allows the display of informative log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, it is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  tag                     The user defined tag
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogTag macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLogTag(NID, "MyTag", "User ID : 'JoneDoe'");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLogTag(NID, tag, ...)
+
+/**
+ * This macro is used to protect exception log messages which need security, with a tag and sets the last result.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace ID
+ * @param[in]  tag                     The user defined tag
+ * @param[in]  r                       The last result to set
+ * @param[in]  ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureLogExceptionTag macro.
+ *
+ * @code
+ *        bool
+ *        MyEngine::Init(int value)
+ *        {
+ *           SysSecureLogExceptionTag(NID, "MyTag", E_INVALID_ARG, "User ID : 'JoneDoe' mismatch.");
+ *
+ *           return true;
+ *        }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureLogExceptionTag(NID, tag, r, ...)             SetLastResult(r);
+
+#endif
+
+/**
+ * This macro allows the display of informative log messages with a tag, when the condition is @c false.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]          ...                     The message to display
+ *
+ * The following example demonstrates how to use the SysSecureTry macro.
+ *
+ * @code
+ *     bool
+ *     MyEngine::Init(int value)
+ *     {
+ *        //...
+ *
+ *        SysSecureTryLog(NID, condition, "Password mismatch : %s", password );
+ *
+ *        //...
+ *     }
+ * @endcode
+ * @hideinitializer
+ */
+#define SysSecureTryLog(NID, condition, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLog(NID, __VA_ARGS__); \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of informative log messages, when the condition is @c false.
+ * Executes statements and goes to the catch label.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryLogCatch(NID, condition, expr, ...)        \
+       do \
+       { \
+               if (unlikely(!(condition))) { \
+                       SysSecureLog(NID, __VA_ARGS__); \
+                       expr; \
+                       goto CATCH;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of informative log messages and returns @c returnValue, when the condition is @c false.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  returnValue The value to return when the condition is @c false
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryLogReturn(NID, condition, returnValue, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) { \
+                       SysSecureLog(NID, __VA_ARGS__); \
+                       return returnValue;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  returnValue The value to return when the condition is @c false
+ * @param[in]  r                       The last result to set
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryReturn(NID, condition, returnValue, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       return returnValue;     \
+               } \
+       } while (0);
+
+#if defined(_SECURE_LOG)
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * This is a shorthand macro for SysSecureTryReturn(NID, condition, r, r, "[" # r "] " ...).
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  r                       The last result to set
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryReturnResult(NID, condition, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysTryReturnResultInternal(NID, r, __PRETTY_FUNCTION__, __LINE__, "[SECURE_LOG] "__VA_ARGS__); \
+                       return r;       \
+               } \
+       } while (0);
+
+#else
+#define SysSecureTryReturnResult(NID, condition, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SetLastResult(r); \
+                       return r;       \
+               } \
+       } while (0);
+#endif
+
+/**
+ * This macro allows the display of exception log messages with a tag and sets the last result, when the condition is @c false.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  r                       The last result to set
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryReturnVoidResult(NID, condition, r, ...)   \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       return; \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
+ * @param[in]  r                       The last result to set
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryCatch(NID, condition, expr, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       expr; \
+                       goto CATCH;     \
+               } \
+       } while (0);
+
+/**
+ * This macro allows the display of exception log messages with a tag, when the condition is @c false.
+ * Executes statements, sets the last result and goes to the catch label.
+ * It allows the display of exception log messages if compiled with the "_SECURE_LOG" definition.
+ * Otherwise, the log printing functionality is removed in the compile time.
+ * This system log macro is for the platform modules.
+ *
+ * @since 2.1
+ *
+ * @param[in]  NID                     The Tizen namespace
+ * @param[in]  condition       The condition that is expected to be true
+ * @param[in]  expr            Expressions that are evaluated before going to the CATCH label
+ * @param[in]  catchLabel      The label for the goto operation
+ * @param[in]  r                       The last result to set
+ * @param[in]   ...                    The message to display
+ * @hideinitializer
+ */
+#define SysSecureTryCatchLabel(NID, condition, expr, catchLabel, r, ...) \
+       do \
+       { \
+               if (unlikely(!(condition))) {   \
+                       SysSecureLogException(NID, r, __VA_ARGS__); \
+                       expr; \
+                       goto catchLabel; \
+               } \
+       } while (0);
+
 
 /**
  * Defines the log ID.
@@ -657,7 +1003,9 @@ enum LogID
 
        NID_WEB = 180,
        NID_WEB_CTRL = 181,
-       NID_WEB_JSON = 182
+       NID_WEB_JSON = 182,
+
+       NID_SHELL = 190
 };
 
 /**