• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/alpha/kernel/
1/*
2 *	linux/arch/alpha/kernel/gct.c
3 */
4
5#include <linux/kernel.h>
6#include <linux/types.h>
7#include <linux/errno.h>
8
9#include <asm/hwrpb.h>
10#include <asm/gct.h>
11
12int
13gct6_find_nodes(gct6_node *node, gct6_search_struct *search)
14{
15	gct6_search_struct *wanted;
16	int status = 0;
17
18	/* First check the magic number.  */
19	if (node->magic != GCT_NODE_MAGIC) {
20		printk(KERN_ERR "GCT Node MAGIC incorrect - GCT invalid\n");
21		return -EINVAL;
22	}
23
24	/* Check against the search struct.  */
25	for (wanted = search;
26	     wanted && (wanted->type | wanted->subtype);
27	     wanted++) {
28		if (node->type != wanted->type)
29			continue;
30		if (node->subtype != wanted->subtype)
31			continue;
32
33		/* Found it -- call out.  */
34		if (wanted->callout)
35			wanted->callout(node);
36	}
37
38	/* Now walk the tree, siblings first.  */
39	if (node->next)
40		status |= gct6_find_nodes(GCT_NODE_PTR(node->next), search);
41
42	/* Then the children.  */
43	if (node->child)
44		status |= gct6_find_nodes(GCT_NODE_PTR(node->child), search);
45
46	return status;
47}
48