cregit-Linux how code gets into the kernel

Release 4.11 lib/kasprintf.c

Directory: lib
/*
 *  linux/lib/kasprintf.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

#include <stdarg.h>
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/string.h>

/* Simplified asprintf. */

char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap) { unsigned int first, second; char *p; va_list aq; va_copy(aq, ap); first = vsnprintf(NULL, 0, fmt, aq); va_end(aq); p = kmalloc_track_caller(first+1, gfp); if (!p) return NULL; second = vsnprintf(p, first+1, fmt, ap); WARN(first != second, "different return values (%u and %u) from vsnprintf(\"%s\", ...)", first, second, fmt); return p; }

Contributors

PersonTokensPropCommitsCommitProp
Sam Ravnborg8377.57%133.33%
Rasmus Villemoes2321.50%133.33%
Ezequiel García10.93%133.33%
Total107100.00%3100.00%

EXPORT_SYMBOL(kvasprintf); /* * If fmt contains no % (or is exactly %s), use kstrdup_const. If fmt * (or the sole vararg) points to rodata, we will then save a memory * allocation and string copy. In any case, the return value should be * freed using kfree_const(). */
const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list ap) { if (!strchr(fmt, '%')) return kstrdup_const(fmt, gfp); if (!strcmp(fmt, "%s")) return kstrdup_const(va_arg(ap, const char*), gfp); return kvasprintf(gfp, fmt, ap); }

Contributors

PersonTokensPropCommitsCommitProp
Rasmus Villemoes71100.00%1100.00%
Total71100.00%1100.00%

EXPORT_SYMBOL(kvasprintf_const);
char *kasprintf(gfp_t gfp, const char *fmt, ...) { va_list ap; char *p; va_start(ap, fmt); p = kvasprintf(gfp, fmt, ap); va_end(ap); return p; }

Contributors

PersonTokensPropCommitsCommitProp
Sam Ravnborg49100.00%1100.00%
Total49100.00%1100.00%

EXPORT_SYMBOL(kasprintf);

Overall Contributors

PersonTokensPropCommitsCommitProp
Sam Ravnborg15559.62%116.67%
Rasmus Villemoes10038.46%233.33%
Tejun Heo31.15%116.67%
Paul Gortmaker10.38%116.67%
Ezequiel García10.38%116.67%
Total260100.00%6100.00%
Directory: lib
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.