mtd: ubi: Add logging functions ubi_msg, ubi_warn and ubi_err
authorJoe Perches <joe@perches.com>
Thu, 25 Feb 2016 17:25:20 +0000 (09:25 -0800)
committerRichard Weinberger <richard@nod.at>
Sun, 20 Mar 2016 20:36:05 +0000 (21:36 +0100)
Using logging functions instead of macros can reduce overall object size.

$ size drivers/mtd/ubi/built-in.o*
   text    data     bss     dec     hex filename
 271620  163364   73696  508680   7c308 drivers/mtd/ubi/built-in.o.allyesconfig.new
 287638  165380   73504  526522   808ba drivers/mtd/ubi/built-in.o.allyesconfig.old
  87728    3780     504   92012   1676c drivers/mtd/ubi/built-in.o.defconfig.new
  97084    3780     504  101368   18bf8 drivers/mtd/ubi/built-in.o.defconfig.old

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/misc.c
drivers/mtd/ubi/ubi.h

index 2a45ac210b167c1f5f1b663c40ac60016ed5ee68..989036c681b8b1993fe0e7e8b57838307cca8a26 100644 (file)
@@ -153,3 +153,52 @@ int ubi_check_pattern(const void *buf, uint8_t patt, int size)
                        return 0;
        return 1;
 }
+
+/* Normal UBI messages */
+void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...)
+{
+       struct va_format vaf;
+       va_list args;
+
+       va_start(args, fmt);
+
+       vaf.fmt = fmt;
+       vaf.va = &args;
+
+       pr_notice(UBI_NAME_STR "%d: %pV\n", ubi->ubi_num, &vaf);
+
+       va_end(args);
+}
+
+/* UBI warning messages */
+void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...)
+{
+       struct va_format vaf;
+       va_list args;
+
+       va_start(args, fmt);
+
+       vaf.fmt = fmt;
+       vaf.va = &args;
+
+       pr_warn(UBI_NAME_STR "%d warning: %ps: %pV\n",
+               ubi->ubi_num, __builtin_return_address(0), &vaf);
+
+       va_end(args);
+}
+
+/* UBI error messages */
+void ubi_err(const struct ubi_device *ubi, const char *fmt, ...)
+{
+       struct va_format vaf;
+       va_list args;
+
+       va_start(args, fmt);
+
+       vaf.fmt = fmt;
+       vaf.va = &args;
+
+       pr_err(UBI_NAME_STR "%d error: %ps: %pV\n",
+              ubi->ubi_num, __builtin_return_address(0), &vaf);
+       va_end(args);
+}
index 2974b67f6c6cfbc2b622c76f06e0fe02715ee450..dadc6a9d5755ada116d511ecaf4e183a66e5191a 100644 (file)
 /* UBI name used for character devices, sysfs, etc */
 #define UBI_NAME_STR "ubi"
 
+struct ubi_device;
+
 /* Normal UBI messages */
-#define ubi_msg(ubi, fmt, ...) pr_notice(UBI_NAME_STR "%d: " fmt "\n", \
-                                        ubi->ubi_num, ##__VA_ARGS__)
+__printf(2, 3)
+void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...);
+
 /* UBI warning messages */
-#define ubi_warn(ubi, fmt, ...) pr_warn(UBI_NAME_STR "%d warning: %s: " fmt "\n", \
-                                       ubi->ubi_num, __func__, ##__VA_ARGS__)
+__printf(2, 3)
+void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...);
+
 /* UBI error messages */
-#define ubi_err(ubi, fmt, ...) pr_err(UBI_NAME_STR "%d error: %s: " fmt "\n", \
-                                     ubi->ubi_num, __func__, ##__VA_ARGS__)
+__printf(2, 3)
+void ubi_err(const struct ubi_device *ubi, const char *fmt, ...);
 
 /* Background thread name pattern */
 #define UBI_BGT_NAME_PATTERN "ubi_bgt%dd"