cregit-Linux how code gets into the kernel

Release 4.10 tools/perf/util/intlist.c

Directory: tools/perf/util
/*
 * Based on intlist.c by:
 * (c) 2009 Arnaldo Carvalho de Melo <acme@redhat.com>
 *
 * Licensed under the GPLv2.
 */

#include <errno.h>
#include <stdlib.h>
#include <linux/compiler.h>

#include "intlist.h"


static struct rb_node *intlist__node_new(struct rblist *rblist __maybe_unused, const void *entry) { int i = (int)((long)entry); struct rb_node *rc = NULL; struct int_node *node = malloc(sizeof(*node)); if (node != NULL) { node->i = i; node->priv = NULL; rc = &node->rb_node; } return rc; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern8298.80%266.67%
irina tirdeairina tirdea11.20%133.33%
Total83100.00%3100.00%


static void int_node__delete(struct int_node *ilist) { free(ilist); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern16100.00%1100.00%
Total16100.00%1100.00%


static void intlist__node_delete(struct rblist *rblist __maybe_unused, struct rb_node *rb_node) { struct int_node *node = container_of(rb_node, struct int_node, rb_node); int_node__delete(node); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern3697.30%150.00%
irina tirdeairina tirdea12.70%150.00%
Total37100.00%2100.00%


static int intlist__node_cmp(struct rb_node *rb_node, const void *entry) { int i = (int)((long)entry); struct int_node *node = container_of(rb_node, struct int_node, rb_node); return node->i - i; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern51100.00%1100.00%
Total51100.00%1100.00%


int intlist__add(struct intlist *ilist, int i) { return rblist__add_node(&ilist->rblist, (void *)((long)i)); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern33100.00%1100.00%
Total33100.00%1100.00%


void intlist__remove(struct intlist *ilist, struct int_node *node) { rblist__remove_node(&ilist->rblist, &node->rb_node); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern1967.86%150.00%
suzuki k poulosesuzuki k poulose932.14%150.00%
Total28100.00%2100.00%


static struct int_node *__intlist__findnew(struct intlist *ilist, int i, bool create) { struct int_node *node = NULL; struct rb_node *rb_node; if (ilist == NULL) return NULL; if (create) rb_node = rblist__findnew(&ilist->rblist, (void *)((long)i)); else rb_node = rblist__find(&ilist->rblist, (void *)((long)i)); if (rb_node) node = container_of(rb_node, struct int_node, rb_node); return node; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern9185.85%266.67%
arnaldo carvalho de meloarnaldo carvalho de melo1514.15%133.33%
Total106100.00%3100.00%


struct int_node *intlist__find(struct intlist *ilist, int i) { return __intlist__findnew(ilist, i, false); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern25100.00%1100.00%
Total25100.00%1100.00%


struct int_node *intlist__findnew(struct intlist *ilist, int i) { return __intlist__findnew(ilist, i, true); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern25100.00%1100.00%
Total25100.00%1100.00%


static int intlist__parse_list(struct intlist *ilist, const char *s) { char *sep; int err; do { long value = strtol(s, &sep, 10); err = -EINVAL; if (*sep != ',' && *sep != '\0') break; err = intlist__add(ilist, value); if (err) break; s = sep + 1; } while (*sep != '\0'); return err; }

Contributors

PersonTokensPropCommitsCommitProp
arnaldo carvalho de meloarnaldo carvalho de melo88100.00%1100.00%
Total88100.00%1100.00%


struct intlist *intlist__new(const char *slist) { struct intlist *ilist = malloc(sizeof(*ilist)); if (ilist != NULL) { rblist__init(&ilist->rblist); ilist->rblist.node_cmp = intlist__node_cmp; ilist->rblist.node_new = intlist__node_new; ilist->rblist.node_delete = intlist__node_delete; if (slist && intlist__parse_list(ilist, slist)) goto out_delete; } return ilist; out_delete: intlist__delete(ilist); return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern6569.89%150.00%
arnaldo carvalho de meloarnaldo carvalho de melo2830.11%150.00%
Total93100.00%2100.00%


void intlist__delete(struct intlist *ilist) { if (ilist != NULL) rblist__delete(&ilist->rblist); }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern24100.00%1100.00%
Total24100.00%1100.00%


struct int_node *intlist__entry(const struct intlist *ilist, unsigned int idx) { struct int_node *node = NULL; struct rb_node *rb_node; rb_node = rblist__entry(&ilist->rblist, idx); if (rb_node) node = container_of(rb_node, struct int_node, rb_node); return node; }

Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern60100.00%1100.00%
Total60100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
david aherndavid ahern54079.18%342.86%
arnaldo carvalho de meloarnaldo carvalho de melo13119.21%228.57%
suzuki k poulosesuzuki k poulose91.32%114.29%
irina tirdeairina tirdea20.29%114.29%
Total682100.00%7100.00%
Directory: tools/perf/util
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.