Commit 07dcc3f1 authored by Dave Airlie's avatar Dave Airlie
Browse files

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's avatarPeter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent a2a02882
......@@ -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);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment