aboutsummaryrefslogtreecommitdiffstats
path: root/lib/test_printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/test_printf.c')
-rw-r--r--lib/test_printf.c61
1 files changed, 58 insertions, 3 deletions
diff --git a/lib/test_printf.c b/lib/test_printf.c
index 53527ea822b5..659b6cc0d483 100644
--- a/lib/test_printf.c
+++ b/lib/test_printf.c
@@ -9,6 +9,7 @@
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/printk.h> 10#include <linux/printk.h>
11#include <linux/random.h> 11#include <linux/random.h>
12#include <linux/rtc.h>
12#include <linux/slab.h> 13#include <linux/slab.h>
13#include <linux/string.h> 14#include <linux/string.h>
14 15
@@ -249,12 +250,11 @@ plain_format(void)
249#endif /* BITS_PER_LONG == 64 */ 250#endif /* BITS_PER_LONG == 64 */
250 251
251static int __init 252static int __init
252plain_hash(void) 253plain_hash_to_buffer(const void *p, char *buf, size_t len)
253{ 254{
254 char buf[PLAIN_BUF_SIZE];
255 int nchars; 255 int nchars;
256 256
257 nchars = snprintf(buf, PLAIN_BUF_SIZE, "%p", PTR); 257 nchars = snprintf(buf, len, "%p", p);
258 258
259 if (nchars != PTR_WIDTH) 259 if (nchars != PTR_WIDTH)
260 return -1; 260 return -1;
@@ -265,6 +265,20 @@ plain_hash(void)
265 return 0; 265 return 0;
266 } 266 }
267 267
268 return 0;
269}
270
271
272static int __init
273plain_hash(void)
274{
275 char buf[PLAIN_BUF_SIZE];
276 int ret;
277
278 ret = plain_hash_to_buffer(PTR, buf, PLAIN_BUF_SIZE);
279 if (ret)
280 return ret;
281
268 if (strncmp(buf, PTR_STR, PTR_WIDTH) == 0) 282 if (strncmp(buf, PTR_STR, PTR_WIDTH) == 0)
269 return -1; 283 return -1;
270 284
@@ -295,6 +309,23 @@ plain(void)
295} 309}
296 310
297static void __init 311static void __init
312test_hashed(const char *fmt, const void *p)
313{
314 char buf[PLAIN_BUF_SIZE];
315 int ret;
316
317 /*
318 * No need to increase failed test counter since this is assumed
319 * to be called after plain().
320 */
321 ret = plain_hash_to_buffer(p, buf, PLAIN_BUF_SIZE);
322 if (ret)
323 return;
324
325 test(buf, fmt, p);
326}
327
328static void __init
298symbol_ptr(void) 329symbol_ptr(void)
299{ 330{
300} 331}
@@ -419,6 +450,29 @@ struct_va_format(void)
419} 450}
420 451
421static void __init 452static void __init
453struct_rtc_time(void)
454{
455 /* 1543210543 */
456 const struct rtc_time tm = {
457 .tm_sec = 43,
458 .tm_min = 35,
459 .tm_hour = 5,
460 .tm_mday = 26,
461 .tm_mon = 10,
462 .tm_year = 118,
463 };
464
465 test_hashed("%pt", &tm);
466
467 test("2018-11-26T05:35:43", "%ptR", &tm);
468 test("0118-10-26T05:35:43", "%ptRr", &tm);
469 test("05:35:43|2018-11-26", "%ptRt|%ptRd", &tm, &tm);
470 test("05:35:43|0118-10-26", "%ptRtr|%ptRdr", &tm, &tm);
471 test("05:35:43|2018-11-26", "%ptRttr|%ptRdtr", &tm, &tm);
472 test("05:35:43 tr|2018-11-26 tr", "%ptRt tr|%ptRd tr", &tm, &tm);
473}
474
475static void __init
422struct_clk(void) 476struct_clk(void)
423{ 477{
424} 478}
@@ -529,6 +583,7 @@ test_pointer(void)
529 uuid(); 583 uuid();
530 dentry(); 584 dentry();
531 struct_va_format(); 585 struct_va_format();
586 struct_rtc_time();
532 struct_clk(); 587 struct_clk();
533 bitmap(); 588 bitmap();
534 netdev_features(); 589 netdev_features();