svn commit: r209666 - in stable/8/sys: kern sys

Konstantin Belousov kib at FreeBSD.org
Sat Jul 3 17:58:00 UTC 2010


Author: kib
Date: Sat Jul  3 17:57:59 2010
New Revision: 209666
URL: http://svn.freebsd.org/changeset/base/209666

Log:
  MFC r209104:
  Add modifications of devctl_notify(9) functions that take flags. Use
  flags to specify M_WAITOK/M_NOWAIT. M_WAITOK allows devctl to sleep for
  the memory allocation.

Modified:
  stable/8/sys/kern/subr_bus.c
  stable/8/sys/sys/bus.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/kern/subr_bus.c
==============================================================================
--- stable/8/sys/kern/subr_bus.c	Sat Jul  3 15:05:14 2010	(r209665)
+++ stable/8/sys/kern/subr_bus.c	Sat Jul  3 17:57:59 2010	(r209666)
@@ -539,7 +539,7 @@ devctl_process_running(void)
  * that @p data is allocated using the M_BUS malloc type.
  */
 void
-devctl_queue_data(char *data)
+devctl_queue_data_f(char *data, int flags)
 {
 	struct dev_event_info *n1 = NULL, *n2 = NULL;
 	struct proc *p;
@@ -548,7 +548,7 @@ devctl_queue_data(char *data)
 		goto out;
 	if (devctl_queue_length == 0)
 		goto out;
-	n1 = malloc(sizeof(*n1), M_BUS, M_NOWAIT);
+	n1 = malloc(sizeof(*n1), M_BUS, flags);
 	if (n1 == NULL)
 		goto out;
 	n1->dei_data = data;
@@ -588,12 +588,19 @@ out:
 	return;
 }
 
+void
+devctl_queue_data(char *data)
+{
+
+	devctl_queue_data_f(data, M_NOWAIT);
+}
+
 /**
  * @brief Send a 'notification' to userland, using standard ways
  */
 void
-devctl_notify(const char *system, const char *subsystem, const char *type,
-    const char *data)
+devctl_notify_f(const char *system, const char *subsystem, const char *type,
+    const char *data, int flags)
 {
 	int len = 0;
 	char *msg;
@@ -611,7 +618,7 @@ devctl_notify(const char *system, const 
 	if (data != NULL)
 		len += strlen(data);
 	len += 3;	/* '!', '\n', and NUL */
-	msg = malloc(len, M_BUS, M_NOWAIT);
+	msg = malloc(len, M_BUS, flags);
 	if (msg == NULL)
 		return;		/* Drop it on the floor */
 	if (data != NULL)
@@ -620,7 +627,15 @@ devctl_notify(const char *system, const 
 	else
 		snprintf(msg, len, "!system=%s subsystem=%s type=%s\n",
 		    system, subsystem, type);
-	devctl_queue_data(msg);
+	devctl_queue_data_f(msg, flags);
+}
+
+void
+devctl_notify(const char *system, const char *subsystem, const char *type,
+    const char *data)
+{
+
+	devctl_notify_f(system, subsystem, type, data, M_NOWAIT);
 }
 
 /*

Modified: stable/8/sys/sys/bus.h
==============================================================================
--- stable/8/sys/sys/bus.h	Sat Jul  3 15:05:14 2010	(r209665)
+++ stable/8/sys/sys/bus.h	Sat Jul  3 17:57:59 2010	(r209666)
@@ -85,8 +85,11 @@ struct u_device {
  * included in case devctl_notify isn't sufficiently general.
  */
 boolean_t devctl_process_running(void);
+void devctl_notify_f(const char *__system, const char *__subsystem,
+    const char *__type, const char *__data, int __flags);
 void devctl_notify(const char *__system, const char *__subsystem,
     const char *__type, const char *__data);
+void devctl_queue_data_f(char *__data, int __flags);
 void devctl_queue_data(char *__data);
 
 /**


More information about the svn-src-all mailing list