summaryrefslogtreecommitdiff
path: root/patricia.h
blob: 81e0f6af3ec025616a30ad472aef2cafa3a2cfe5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 * netsniff-ng - the packet sniffing beast
 * Copyright 2011 Daniel Borkmann, rewritten
 * Copyright 1991-2007 Kawahara Lab., Kyoto University
 * Copyright 2000-2005 Shikano Lab., Nara Institute of Science and Technology
 * Copyright 2005-2007 Julius project team, Nagoya Institute of Technology
 * All rights reserved
 * Subject to the GPL, version 2.
 */

#ifndef PATRICIA_H
#define PATRICIA_H

#include <netinet/in.h>

#include "built_in.h"

struct patricia_node {
	void *key;
	size_t klen;
	struct sockaddr_storage *addr;
	size_t alen;
	union {
		int data;
		int thres_bit;
	} value;
	struct patricia_node *l, *r;
} __cacheline_aligned;

extern int ptree_search_data_nearest(void *str, size_t sstr,
				     struct sockaddr_storage *addr, size_t *alen,
				     struct patricia_node *root);
extern int ptree_search_data_exact(void *str, size_t sstr,
				   struct sockaddr_storage *addr, size_t *alen,
				   struct patricia_node *root);
extern int ptree_add_entry(void *str, size_t sstr, int data,
			   struct sockaddr_storage *addr, size_t alen,
			   struct patricia_node **root);
extern void ptree_del_entry(void *str, size_t sstr,
			    struct patricia_node **root);
extern void ptree_get_key(int data, struct patricia_node *node,
			  struct patricia_node **wanted);
extern void ptree_get_key_addr(struct sockaddr_storage *addr, size_t alen,
			       struct patricia_node *node,
			       struct patricia_node **wanted);
extern void ptree_display(struct patricia_node *node, int level);
extern void ptree_free(struct patricia_node *root);

#endif /* PATRICIA_H */
kage management more robust") because the ACPI/BIOS information turned out to be unreliable, but that left RAPL in broken state. This was not noticed because on a regular boot all CPUs are online before RAPL is initialized. A possible fix would be to reintroduce the mess which allocates a package data structure in CPU prepare and when it turns out to already exist in starting throw it away later in the CPU online callback. But that's a horrible hack and not required at all because RAPL becomes functional for perf only in the CPU online callback. That's correct because user space is not yet informed about the CPU being onlined, so nothing caan rely on RAPL being available on that particular CPU. Move the allocation to the CPU online callback and simplify the hotplug handling. At this point the package mapping is established and correct. This also adds a missing check for available package data in the event_init() function. Reported-by: Yasuaki Ishimatsu <yasu.isimatu@gmail.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Sebastian Siewior <bigeasy@linutronix.de> Cc: Stephane Eranian <eranian@google.com> Cc: Vince Weaver <vincent.weaver@maine.edu> Fixes: 9d85eb9119f4 ("x86/smpboot: Make logical package management more robust") Link: http://lkml.kernel.org/r/20170131230141.212593966@linutronix.de Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'sound/soc/fsl/fsl_ssi_dbg.c')