mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
![Arjan van de Ven](/assets/img/avatar_default.png)
Right now, most of the kernel boot is strictly synchronous, such that various hardware delays are done sequentially. In order to make the kernel boot faster, this patch introduces infrastructure to allow doing some of the initialization steps asynchronously, which will hide significant portions of the hardware delays in practice. In order to not change device order and other similar observables, this patch does NOT do full parallel initialization. Rather, it operates more in the way an out of order CPU does; the work may be done out of order and asynchronous, but the observable effects (instruction retiring for the CPU) are still done in the original sequence. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
25 lines
958 B
C
25 lines
958 B
C
/*
|
|
* async.h: Asynchronous function calls for boot performance
|
|
*
|
|
* (C) Copyright 2009 Intel Corporation
|
|
* Author: Arjan van de Ven <arjan@linux.intel.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; version 2
|
|
* of the License.
|
|
*/
|
|
|
|
#include <linux/types.h>
|
|
#include <linux/list.h>
|
|
|
|
typedef u64 async_cookie_t;
|
|
typedef void (async_func_ptr) (void *data, async_cookie_t cookie);
|
|
|
|
extern async_cookie_t async_schedule(async_func_ptr *ptr, void *data);
|
|
extern async_cookie_t async_schedule_special(async_func_ptr *ptr, void *data, struct list_head *list);
|
|
extern void async_synchronize_full(void);
|
|
extern void async_synchronize_full_special(struct list_head *list);
|
|
extern void async_synchronize_cookie(async_cookie_t cookie);
|
|
extern void async_synchronize_cookie_special(async_cookie_t cookie, struct list_head *list);
|
|
|