Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
gct.c
Go to the documentation of this file.
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 
12 int
14 {
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 }