config/udev: add pre_init stage to config and udev.
In order to use udev for gpu enumeration, we need to init udev earlier than input initialisations. This splits the config init stuff so that udev pre init sets up before output initialisation. this is just a prepatory patch, doesn't change anything major. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
a2a02882ab
commit
07dcc3f1a9
|
@ -33,6 +33,7 @@ void remove_devices(const char *backend, const char *config_info);
|
|||
BOOL device_is_duplicate(const char *config_info);
|
||||
|
||||
#ifdef CONFIG_UDEV
|
||||
int config_udev_pre_init(void);
|
||||
int config_udev_init(void);
|
||||
void config_udev_fini(void);
|
||||
#else
|
||||
|
|
|
@ -32,6 +32,15 @@
|
|||
#include "hotplug.h"
|
||||
#include "config-backends.h"
|
||||
|
||||
void
|
||||
config_pre_init(void)
|
||||
{
|
||||
#ifdef CONFIG_UDEV
|
||||
if (!config_udev_pre_init())
|
||||
ErrorF("[config] failed to pre-init udev\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
config_init(void)
|
||||
{
|
||||
|
|
|
@ -281,15 +281,14 @@ block_handler(pointer data, struct timeval **tv, pointer read_mask)
|
|||
}
|
||||
|
||||
int
|
||||
config_udev_init(void)
|
||||
config_udev_pre_init(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
struct udev_enumerate *enumerate;
|
||||
struct udev_list_entry *devices, *device;
|
||||
|
||||
udev = udev_new();
|
||||
if (!udev)
|
||||
return 0;
|
||||
|
||||
udev_monitor = udev_monitor_new_from_netlink(udev, "udev");
|
||||
if (!udev_monitor)
|
||||
return 0;
|
||||
|
@ -302,12 +301,21 @@ config_udev_init(void)
|
|||
if (SeatId && strcmp(SeatId, "seat0"))
|
||||
udev_monitor_filter_add_match_tag(udev_monitor, SeatId);
|
||||
#endif
|
||||
|
||||
if (udev_monitor_enable_receiving(udev_monitor)) {
|
||||
ErrorF("config/udev: failed to bind the udev monitor\n");
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
config_udev_init(void)
|
||||
{
|
||||
struct udev *udev;
|
||||
struct udev_enumerate *enumerate;
|
||||
struct udev_list_entry *devices, *device;
|
||||
|
||||
udev = udev_monitor_get_udev(udev_monitor);
|
||||
enumerate = udev_enumerate_new(udev);
|
||||
if (!enumerate)
|
||||
return 0;
|
||||
|
|
|
@ -405,6 +405,8 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
|
|||
|
||||
xf86Initialising = TRUE;
|
||||
|
||||
config_pre_init();
|
||||
|
||||
if (serverGeneration == 1) {
|
||||
if ((xf86ServerName = strrchr(argv[0], '/')) != 0)
|
||||
xf86ServerName++;
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#ifndef HOTPLUG_H
|
||||
#define HOTPLUG_H
|
||||
|
||||
extern _X_EXPORT void config_pre_init(void);
|
||||
extern _X_EXPORT void config_init(void);
|
||||
extern _X_EXPORT void config_fini(void);
|
||||
|
||||
|
|
Loading…
Reference in New Issue