Lines Matching refs:spec
412 struct printf_spec spec) in number() argument
418 int need_pfx = ((spec.flags & SPECIAL) && spec.base != 10); in number()
421 int field_width = spec.field_width; in number()
422 int precision = spec.precision; in number()
428 locase = (spec.flags & SMALL); in number()
429 if (spec.flags & LEFT) in number()
430 spec.flags &= ~ZEROPAD; in number()
432 if (spec.flags & SIGN) { in number()
437 } else if (spec.flags & PLUS) { in number()
440 } else if (spec.flags & SPACE) { in number()
446 if (spec.base == 16) in number()
454 if (num < spec.base) in number()
456 else if (spec.base != 10) { /* 8 or 16 */ in number()
457 int mask = spec.base - 1; in number()
460 if (spec.base == 16) in number()
475 if (!(spec.flags & (ZEROPAD | LEFT))) { in number()
490 if (spec.base == 16 || !is_zero) { in number()
495 if (spec.base == 16) { in number()
502 if (!(spec.flags & LEFT)) { in number()
503 char c = ' ' + (spec.flags & ZEROPAD); in number()
536 struct printf_spec spec; in special_hex_number() local
538 spec.type = FORMAT_TYPE_PTR; in special_hex_number()
539 spec.field_width = 2 + 2 * size; /* 0x + hex */ in special_hex_number()
540 spec.flags = SPECIAL | SMALL | ZEROPAD; in special_hex_number()
541 spec.base = 16; in special_hex_number()
542 spec.precision = -1; in special_hex_number()
544 return number(buf, end, num, spec); in special_hex_number()
574 char *widen_string(char *buf, int n, char *end, struct printf_spec spec) in widen_string() argument
578 if (likely(n >= spec.field_width)) in widen_string()
581 spaces = spec.field_width - n; in widen_string()
582 if (!(spec.flags & LEFT)) { in widen_string()
595 char *string(char *buf, char *end, const char *s, struct printf_spec spec) in string() argument
598 size_t lim = spec.precision; in string()
612 return widen_string(buf, len, end, spec); in string()
616 char *dentry_name(char *buf, char *end, const struct dentry *d, struct printf_spec spec, in dentry_name() argument
644 for (n = 0; n != spec.precision; n++, buf++) { in dentry_name()
656 return widen_string(buf, n, end, spec); in dentry_name()
662 struct printf_spec spec, const char *fmt) in bdev_name() argument
666 buf = string(buf, end, hd->disk_name, spec); in bdev_name()
673 buf = number(buf, end, bdev->bd_part->partno, spec); in bdev_name()
681 struct printf_spec spec, const char *fmt) in symbol_string() argument
700 return string(buf, end, sym, spec); in symbol_string()
724 struct printf_spec spec, const char *fmt) in resource_string() argument
817 return string(buf, end, sym, spec); in resource_string()
821 char *hex_string(char *buf, char *end, u8 *addr, struct printf_spec spec, in hex_string() argument
828 if (spec.field_width == 0) in hex_string()
834 return string(buf, end, NULL, spec); in hex_string()
851 if (spec.field_width > 0) in hex_string()
852 len = min_t(int, spec.field_width, 64); in hex_string()
874 struct printf_spec spec, const char *fmt) in bitmap_string() argument
877 int nr_bits = max_t(int, spec.field_width, 0); in bitmap_string()
882 spec = (struct printf_spec){ .flags = SMALL | ZEROPAD, .base = 16 }; in bitmap_string()
905 spec.field_width = DIV_ROUND_UP(chunksz, 4); in bitmap_string()
906 buf = number(buf, end, val, spec); in bitmap_string()
915 struct printf_spec spec, const char *fmt) in bitmap_list_string() argument
917 int nr_bits = max_t(int, spec.field_width, 0); in bitmap_list_string()
952 struct printf_spec spec, const char *fmt) in mac_address_string() argument
985 return string(buf, end, mac_addr, spec); in mac_address_string()
1139 struct printf_spec spec, const char *fmt) in ip6_addr_string() argument
1148 return string(buf, end, ip6_addr, spec); in ip6_addr_string()
1153 struct printf_spec spec, const char *fmt) in ip4_addr_string() argument
1159 return string(buf, end, ip4_addr, spec); in ip4_addr_string()
1164 struct printf_spec spec, const char *fmt) in ip6_addr_string_sa() argument
1208 p = number(p, pend, ntohs(sa->sin6_port), spec); in ip6_addr_string_sa()
1213 IPV6_FLOWINFO_MASK), spec); in ip6_addr_string_sa()
1217 p = number(p, pend, sa->sin6_scope_id, spec); in ip6_addr_string_sa()
1221 return string(buf, end, ip6_addr, spec); in ip6_addr_string_sa()
1226 struct printf_spec spec, const char *fmt) in ip4_addr_string_sa() argument
1252 p = number(p, pend, ntohs(sa->sin_port), spec); in ip4_addr_string_sa()
1256 return string(buf, end, ip4_addr, spec); in ip4_addr_string_sa()
1260 char *escaped_string(char *buf, char *end, u8 *addr, struct printf_spec spec, in escaped_string() argument
1268 if (spec.field_width == 0) in escaped_string()
1272 return string(buf, end, NULL, spec); /* NULL pointer */ in escaped_string()
1307 len = spec.field_width < 0 ? 1 : spec.field_width; in escaped_string()
1321 struct printf_spec spec, const char *fmt) in uuid_string() argument
1357 return string(buf, end, uuid, spec); in uuid_string()
1362 struct printf_spec spec) in pointer_string() argument
1364 spec.base = 16; in pointer_string()
1365 spec.flags |= SMALL; in pointer_string()
1366 if (spec.field_width == -1) { in pointer_string()
1367 spec.field_width = 2 * sizeof(ptr); in pointer_string()
1368 spec.flags |= ZEROPAD; in pointer_string()
1371 return number(buf, end, (unsigned long int)ptr, spec); in pointer_string()
1378 struct printf_spec spec) in restricted_pointer() argument
1392 if (spec.field_width == -1) in restricted_pointer()
1393 spec.field_width = 2 * sizeof(ptr); in restricted_pointer()
1394 return string(buf, end, "pK-error", spec); in restricted_pointer()
1420 return pointer_string(buf, end, ptr, spec); in restricted_pointer()
1465 char *clock(char *buf, char *end, struct clk *clk, struct printf_spec spec, in clock() argument
1469 return string(buf, end, NULL, spec); in clock()
1475 return string(buf, end, __clk_get_name(clk), spec); in clock()
1569 struct printf_spec spec, const char *fmt) in device_node_string() argument
1584 struct printf_spec str_spec = spec; in device_node_string()
1588 return string(buf, end, "(!OF)", spec); in device_node_string()
1591 return string(buf, end, "(null)", spec); in device_node_string()
1651 return widen_string(buf, buf - buf_start, end, spec); in device_node_string()
1712 static char *ptr_to_id(char *buf, char *end, void *ptr, struct printf_spec spec) in ptr_to_id() argument
1720 return pointer_string(buf, end, (const void *)hashval, spec); in ptr_to_id()
1724 spec.field_width = 2 * sizeof(ptr); in ptr_to_id()
1726 return string(buf, end, str, spec); in ptr_to_id()
1739 return pointer_string(buf, end, (const void *)hashval, spec); in ptr_to_id()
1857 struct printf_spec spec) in pointer() argument
1866 if (spec.field_width == -1) in pointer()
1867 spec.field_width = default_width; in pointer()
1868 return string(buf, end, "(null)", spec); in pointer()
1879 return symbol_string(buf, end, ptr, spec, fmt); in pointer()
1882 return resource_string(buf, end, ptr, spec, fmt); in pointer()
1884 return hex_string(buf, end, ptr, spec, fmt); in pointer()
1888 return bitmap_list_string(buf, end, ptr, spec, fmt); in pointer()
1890 return bitmap_string(buf, end, ptr, spec, fmt); in pointer()
1896 return mac_address_string(buf, end, ptr, spec, fmt); in pointer()
1908 return ip6_addr_string(buf, end, ptr, spec, fmt); in pointer()
1910 return ip4_addr_string(buf, end, ptr, spec, fmt); in pointer()
1920 return ip4_addr_string_sa(buf, end, &sa->v4, spec, fmt); in pointer()
1922 return ip6_addr_string_sa(buf, end, &sa->v6, spec, fmt); in pointer()
1924 return string(buf, end, "(invalid address)", spec); in pointer()
1929 return escaped_string(buf, end, ptr, spec, fmt); in pointer()
1931 return uuid_string(buf, end, ptr, spec, fmt); in pointer()
1945 return restricted_pointer(buf, end, ptr, spec); in pointer()
1951 return dentry_name(buf, end, ptr, spec, fmt); in pointer()
1953 return clock(buf, end, ptr, spec, fmt); in pointer()
1957 spec, fmt); in pointer()
1960 return bdev_name(buf, end, ptr, spec, fmt); in pointer()
1968 return device_node_string(buf, end, ptr, spec, fmt + 1); in pointer()
1972 return pointer_string(buf, end, ptr, spec); in pointer()
1976 return ptr_to_id(buf, end, ptr, spec); in pointer()
2001 int format_decode(const char *fmt, struct printf_spec *spec) in format_decode() argument
2007 if (spec->type == FORMAT_TYPE_WIDTH) { in format_decode()
2008 if (spec->field_width < 0) { in format_decode()
2009 spec->field_width = -spec->field_width; in format_decode()
2010 spec->flags |= LEFT; in format_decode()
2012 spec->type = FORMAT_TYPE_NONE; in format_decode()
2017 if (spec->type == FORMAT_TYPE_PRECISION) { in format_decode()
2018 if (spec->precision < 0) in format_decode()
2019 spec->precision = 0; in format_decode()
2021 spec->type = FORMAT_TYPE_NONE; in format_decode()
2026 spec->type = FORMAT_TYPE_NONE; in format_decode()
2038 spec->flags = 0; in format_decode()
2046 case '-': spec->flags |= LEFT; break; in format_decode()
2047 case '+': spec->flags |= PLUS; break; in format_decode()
2048 case ' ': spec->flags |= SPACE; break; in format_decode()
2049 case '#': spec->flags |= SPECIAL; break; in format_decode()
2050 case '0': spec->flags |= ZEROPAD; break; in format_decode()
2059 spec->field_width = -1; in format_decode()
2062 spec->field_width = skip_atoi(&fmt); in format_decode()
2065 spec->type = FORMAT_TYPE_WIDTH; in format_decode()
2071 spec->precision = -1; in format_decode()
2075 spec->precision = skip_atoi(&fmt); in format_decode()
2076 if (spec->precision < 0) in format_decode()
2077 spec->precision = 0; in format_decode()
2080 spec->type = FORMAT_TYPE_PRECISION; in format_decode()
2103 spec->base = 10; in format_decode()
2106 spec->type = FORMAT_TYPE_CHAR; in format_decode()
2110 spec->type = FORMAT_TYPE_STR; in format_decode()
2114 spec->type = FORMAT_TYPE_PTR; in format_decode()
2118 spec->type = FORMAT_TYPE_PERCENT_CHAR; in format_decode()
2123 spec->base = 8; in format_decode()
2127 spec->flags |= SMALL; in format_decode()
2131 spec->base = 16; in format_decode()
2136 spec->flags |= SIGN; in format_decode()
2150 spec->type = FORMAT_TYPE_INVALID; in format_decode()
2155 spec->type = FORMAT_TYPE_LONG_LONG; in format_decode()
2158 spec->type = FORMAT_TYPE_ULONG + (spec->flags & SIGN); in format_decode()
2160 spec->type = FORMAT_TYPE_SIZE_T; in format_decode()
2162 spec->type = FORMAT_TYPE_PTRDIFF; in format_decode()
2165 spec->type = FORMAT_TYPE_UBYTE + (spec->flags & SIGN); in format_decode()
2168 spec->type = FORMAT_TYPE_USHORT + (spec->flags & SIGN); in format_decode()
2171 spec->type = FORMAT_TYPE_UINT + (spec->flags & SIGN); in format_decode()
2178 set_field_width(struct printf_spec *spec, int width) in set_field_width() argument
2180 spec->field_width = width; in set_field_width()
2181 if (WARN_ONCE(spec->field_width != width, "field width %d too large", width)) { in set_field_width()
2182 spec->field_width = clamp(width, -FIELD_WIDTH_MAX, FIELD_WIDTH_MAX); in set_field_width()
2187 set_precision(struct printf_spec *spec, int prec) in set_precision() argument
2189 spec->precision = prec; in set_precision()
2190 if (WARN_ONCE(spec->precision != prec, "precision %d too large", prec)) { in set_precision()
2191 spec->precision = clamp(prec, 0, PRECISION_MAX); in set_precision()
2227 struct printf_spec spec = {0}; in vsnprintf() local
2245 int read = format_decode(fmt, &spec); in vsnprintf()
2249 switch (spec.type) { in vsnprintf()
2262 set_field_width(&spec, va_arg(args, int)); in vsnprintf()
2266 set_precision(&spec, va_arg(args, int)); in vsnprintf()
2272 if (!(spec.flags & LEFT)) { in vsnprintf()
2273 while (--spec.field_width > 0) { in vsnprintf()
2284 while (--spec.field_width > 0) { in vsnprintf()
2293 str = string(str, end, va_arg(args, char *), spec); in vsnprintf()
2298 spec); in vsnprintf()
2321 switch (spec.type) { in vsnprintf()
2332 if (spec.flags & SIGN) in vsnprintf()
2359 str = number(str, end, num, spec); in vsnprintf()
2528 struct printf_spec spec = {0}; in vbin_printf() local
2560 int read = format_decode(fmt, &spec); in vbin_printf()
2564 switch (spec.type) { in vbin_printf()
2576 set_field_width(&spec, width); in vbin_printf()
2615 spec); in vbin_printf()
2627 switch (spec.type) { in vbin_printf()
2686 struct printf_spec spec = {0}; in bstr_printf() local
2719 int read = format_decode(fmt, &spec); in bstr_printf()
2723 switch (spec.type) { in bstr_printf()
2736 set_field_width(&spec, get_arg(int)); in bstr_printf()
2740 set_precision(&spec, get_arg(int)); in bstr_printf()
2746 if (!(spec.flags & LEFT)) { in bstr_printf()
2747 while (--spec.field_width > 0) { in bstr_printf()
2757 while (--spec.field_width > 0) { in bstr_printf()
2768 str = string(str, end, (char *)str_arg, spec); in bstr_printf()
2801 str = pointer(fmt, str, end, get_arg(void *), spec); in bstr_printf()
2820 switch (spec.type) { in bstr_printf()
2854 str = number(str, end, num, spec); in bstr_printf()