mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
[PATCH] add udev logging to info log
On Thu, Jan 15, 2004 at 05:14:16AM +0100, Kay Sievers wrote: > On Wed, Jan 14, 2004 at 01:10:43PM -0800, Greg KH wrote: > > On Wed, Jan 14, 2004 at 02:34:26PM -0600, Clay Haapala wrote: > > > On Wed, 14 Jan 2004, Chris Friesen spake thusly: > > > > > > > > Maybe for ones with a matching rule, you could print something like: > > > > > > > > > > > Is the act of printing/syslogging a rule in an of itself? > > > > No, as currently the only way stuff ends up in the syslog is if > > DEBUG=true is used on the build line. > > > > But it's sounding like we might want to change that... :) > > How about this in the syslog after connect/disconnect? > > Jan 15 05:07:45 pim udev[28007]: configured rule in '/etc/udev/udev.rules' at line 17 applied, 'video*' becomes 'video/webcam%n' > Jan 15 05:07:45 pim udev[28007]: creating device node '/udev/video/webcam0' > Jan 15 05:07:47 pim udev[28015]: removing device node '/udev/video/webcam0' Here is a slightly better version. I've created a logging.h file and moved the debug macros from udev.h in there. If you type: 'make' - you will get a binary that prints one or two lines to syslog if a device node is created or deleted 'make LOG=false' - you get a binary that prints asolutely nothing 'make DEBUG=true' - the same as today, it will print all debug lines
This commit is contained in:
parent
5e4f123888
commit
54988802b7
13
Makefile
13
Makefile
@ -16,7 +16,12 @@
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
# Set the following to `true' to make a debuggable build.
|
||||
# Set the following to control the use of syslog
|
||||
# Set it to `false' to remove all logging
|
||||
LOG = true
|
||||
|
||||
# Set the following to `true' to log the debug
|
||||
# and make a unstripped, unoptimized binary.
|
||||
# Leave this set to `false' for production use.
|
||||
DEBUG = false
|
||||
|
||||
@ -104,6 +109,10 @@ else
|
||||
CFLAGS+=-pipe
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LOG)),true)
|
||||
CFLAGS += -DLOG
|
||||
endif
|
||||
|
||||
# if DEBUG is enabled, then we do not strip or optimize
|
||||
ifeq ($(strip $(DEBUG)),true)
|
||||
CFLAGS += $(WARNINGS) -O1 -g -DDEBUG -D_GNU_SOURCE
|
||||
@ -216,7 +225,7 @@ $(LOCAL_CFG_DIR)/udev.conf:
|
||||
|
||||
$(OBJS): $(GEN_HEADERS)
|
||||
|
||||
$(ROOT): $(OBJS) udev.h namedev.h udev_version.h udev_dbus.h udevdb.h klibc_fixups.h list.h
|
||||
$(ROOT): $(OBJS) udev.h namedev.h udev_version.h udev_dbus.h udevdb.h klibc_fixups.h logging.h list.h
|
||||
$(LD) $(LDFLAGS) -o $(ROOT) $(CRT0) $(OBJS) $(LIB_OBJS) $(ARCH_LIB_OBJS)
|
||||
$(STRIPCMD) $(ROOT)
|
||||
|
||||
|
@ -25,9 +25,9 @@
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <syslog.h>
|
||||
#include "udev.h"
|
||||
|
||||
#ifdef DEBUG
|
||||
#include "logging.h"
|
||||
|
||||
|
||||
static int logging_init = 0;
|
||||
static unsigned char udev_logname[42];
|
||||
@ -54,5 +54,3 @@ int log_message(int level, const char *format, ...)
|
||||
va_end(args);
|
||||
return 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
60
logging.h
Normal file
60
logging.h
Normal file
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* udev.h
|
||||
*
|
||||
* Userspace devfs
|
||||
*
|
||||
* Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com>
|
||||
* Copyright (C) 2004 Kay Sievers <kay.sievers@vrfy.org>
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LOGGING_H
|
||||
#define LOGGING_H
|
||||
|
||||
#ifdef LOG
|
||||
#include <syslog.h>
|
||||
#define info(format, arg...) \
|
||||
do { \
|
||||
log_message (LOG_INFO , format , ## arg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define info(format, arg...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dbg(format, arg...) do { } while (0)
|
||||
#endif
|
||||
|
||||
/* Parser needs it's own debugging statement, we usually don't care about this at all */
|
||||
#ifdef DEBUG_PARSER
|
||||
#define dbg_parse(format, arg...) \
|
||||
do { \
|
||||
log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dbg_parse(format, arg...) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
extern int log_message (int level, const char *format, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
|
||||
#endif
|
14
namedev.c
14
namedev.c
@ -36,6 +36,7 @@
|
||||
#include "list.h"
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
#include "libsysfs/libsysfs.h"
|
||||
#include "klibc_fixups.h"
|
||||
@ -285,12 +286,12 @@ static void wait_for_device_to_initialize(struct sysfs_device *sysfs_device)
|
||||
/* sleep to give the kernel a chance to create the file */
|
||||
sleep(1);
|
||||
}
|
||||
dbg("Timed out waiting for '%s' file, continuing on anyway...", b->file);
|
||||
dbg("timed out waiting for '%s' file, continuing on anyway...", b->file);
|
||||
goto exit;
|
||||
}
|
||||
b++;
|
||||
}
|
||||
dbg("Did not find bus type '%s' on list of bus_id_files, contact greg@kroah.com", sysfs_device->bus);
|
||||
dbg("did not find bus type '%s' on list of bus_id_files, contact greg@kroah.com", sysfs_device->bus);
|
||||
exit:
|
||||
return; /* here to prevent compiler warning... */
|
||||
}
|
||||
@ -534,7 +535,7 @@ static struct sysfs_device *get_sysfs_device(struct sysfs_class_device *class_de
|
||||
if (sysfs_device != NULL)
|
||||
goto device_found;
|
||||
}
|
||||
dbg("Timed out waiting for device symlink, continuing on anyway...");
|
||||
dbg("timed out waiting for device symlink, continuing on anyway...");
|
||||
|
||||
device_found:
|
||||
/* We have another issue with just the wait above - the sysfs part of
|
||||
@ -559,10 +560,10 @@ device_found:
|
||||
if (sysfs_device->bus[0] != '\0')
|
||||
goto bus_found;
|
||||
}
|
||||
dbg("Timed out waiting to find the device bus, continuing on anyway\n");
|
||||
dbg("timed out waiting to find the device bus, continuing on anyway");
|
||||
goto exit;
|
||||
bus_found:
|
||||
dbg("Device %s is registered with bus %s\n",
|
||||
dbg("device %s is registered with bus '%s'",
|
||||
sysfs_device->name, sysfs_device->bus);
|
||||
}
|
||||
exit:
|
||||
@ -694,7 +695,8 @@ int namedev_name_device(struct sysfs_class_device *class_dev, struct udevice *ud
|
||||
}
|
||||
|
||||
/* Yup, this rule belongs to us! */
|
||||
dbg("found matching rule, '%s' becomes '%s'", dev->kernel, dev->name);
|
||||
info("configured rule in '%s' at line %i applied, '%s' becomes '%s'",
|
||||
udev_rules_filename, dev->config_line, udev->kernel_name, dev->name);
|
||||
strfieldcpy(udev->name, dev->name);
|
||||
strfieldcpy(udev->symlink, dev->symlink);
|
||||
goto found;
|
||||
|
@ -65,6 +65,7 @@ struct config_device {
|
||||
char name[NAME_SIZE];
|
||||
char symlink[NAME_SIZE];
|
||||
struct sysfs_pair sysfs_pair[MAX_SYSFS_PAIRS];
|
||||
int config_line;
|
||||
};
|
||||
|
||||
struct perm_device {
|
||||
|
@ -36,6 +36,7 @@
|
||||
#include <errno.h>
|
||||
|
||||
#include "udev.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
|
||||
static int add_config_dev(struct config_device *new_dev)
|
||||
@ -249,6 +250,7 @@ int namedev_init_rules(void)
|
||||
goto error;
|
||||
}
|
||||
|
||||
dev.config_line = lineno;
|
||||
retval = add_config_dev(&dev);
|
||||
if (retval) {
|
||||
dbg("add_config_dev returned with error %d", retval);
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
#include "udev_dbus.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
#include "udevdb.h"
|
||||
#include "libsysfs/libsysfs.h"
|
||||
@ -141,6 +142,7 @@ static int create_node(struct udevice *dev)
|
||||
if (strrchr(dev->name, '/'))
|
||||
create_path(filename);
|
||||
|
||||
info("creating device node '%s'", filename);
|
||||
dbg("mknod(%s, %#o, %u, %u)", filename, dev->mode, dev->major, dev->minor);
|
||||
retval = mknod(filename, dev->mode, res);
|
||||
if (retval)
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
#include "udev_dbus.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
#include "udevdb.h"
|
||||
#include "libsysfs/libsysfs.h"
|
||||
@ -73,7 +74,7 @@ static int delete_node(struct udevice *dev)
|
||||
strncpy(filename, udev_root, sizeof(filename));
|
||||
strncat(filename, dev->name, sizeof(filename));
|
||||
|
||||
dbg("unlinking node '%s'", filename);
|
||||
info("removing device node '%s'", filename);
|
||||
retval = unlink(filename);
|
||||
if (retval) {
|
||||
dbg("unlink(%s) failed with error '%s'",
|
||||
|
1
udev.c
1
udev.c
@ -34,6 +34,7 @@
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
#include "udev_dbus.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
#include "udevdb.h"
|
||||
#include "libsysfs/libsysfs.h"
|
||||
|
25
udev.h
25
udev.h
@ -26,30 +26,6 @@
|
||||
#include "libsysfs/libsysfs.h"
|
||||
#include <sys/param.h>
|
||||
|
||||
#ifdef DEBUG
|
||||
#include <syslog.h>
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dbg(format, arg...) do { } while (0)
|
||||
#endif
|
||||
|
||||
/* Parser needs it's own debugging statement, we usually don't care about this at all */
|
||||
#ifdef DEBUG_PARSER
|
||||
#define dbg_parse(format, arg...) \
|
||||
do { \
|
||||
log_message (LOG_DEBUG , "%s: " format , __FUNCTION__ , ## arg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dbg_parse(format, arg...) do { } while (0)
|
||||
#endif
|
||||
|
||||
|
||||
extern int log_message (int level, const char *format, ...)
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
|
||||
#define COMMENT_CHARACTER '#'
|
||||
|
||||
#define NAME_SIZE 100
|
||||
@ -71,7 +47,6 @@ struct udevice {
|
||||
unsigned char program_result[NAME_SIZE];
|
||||
unsigned char kernel_number[NAME_SIZE];
|
||||
unsigned char kernel_name[NAME_SIZE];
|
||||
|
||||
};
|
||||
|
||||
#define strfieldcpy(to, from) \
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include "udev.h"
|
||||
#include "udev_version.h"
|
||||
#include "logging.h"
|
||||
#include "namedev.h"
|
||||
#include "libsysfs/libsysfs.h"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user