Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/alpha/kernel/gct.c
10817 views
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
13
gct6_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
49