Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
async.h
Go to the documentation of this file.
1 /*
2  * async.h: Asynchronous function calls for boot performance
3  *
4  * (C) Copyright 2009 Intel Corporation
5  * Author: Arjan van de Ven <[email protected]>
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; version 2
10  * of the License.
11  */
12 #ifndef __ASYNC_H__
13 #define __ASYNC_H__
14 
15 #include <linux/types.h>
16 #include <linux/list.h>
17 
20 struct async_domain {
21  struct list_head node;
22  struct list_head domain;
23  int count;
24  unsigned registered:1;
25 };
26 
27 /*
28  * domain participates in global async_synchronize_full
29  */
30 #define ASYNC_DOMAIN(_name) \
31  struct async_domain _name = { .node = LIST_HEAD_INIT(_name.node), \
32  .domain = LIST_HEAD_INIT(_name.domain), \
33  .count = 0, \
34  .registered = 1 }
35 
36 /*
37  * domain is free to go out of scope as soon as all pending work is
38  * complete, this domain does not participate in async_synchronize_full
39  */
40 #define ASYNC_DOMAIN_EXCLUSIVE(_name) \
41  struct async_domain _name = { .node = LIST_HEAD_INIT(_name.node), \
42  .domain = LIST_HEAD_INIT(_name.domain), \
43  .count = 0, \
44  .registered = 0 }
45 
48  struct async_domain *domain);
49 void async_unregister_domain(struct async_domain *domain);
50 extern void async_synchronize_full(void);
51 extern void async_synchronize_full_domain(struct async_domain *domain);
54  struct async_domain *domain);
55 #endif