This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add /proc/devices


On Thu, 2011-08-18 at 21:55 +0200, Corinna Vinschen wrote:
> > 2011-08-18  Yaakov Selkowitz  <yselkowitz@...>
> > 
> > 	* devices.h (fh_devices): Define DEV_MISC_MAJOR, DEV_MEM_MAJOR,
> > 	DEV_SOUND_MAJOR.  Use throughout.
> > 	* fhandler_proc.cc (proc_tab): Add /proc/devices and /proc/misc
> > 	virtual files.
> > 	(format_proc_devices): New function.
> > 	(format_proc_misc): New function.
> 
> I think the patch is basically ok, but it's missing the "cons" entry
> for consoles, equivalent to the "tty" entry.

Revised patch attached.  OK to commit?


Yaakov

2011-08-18  Yaakov Selkowitz  <yselkowitz@...>

	* devices.h (fh_devices): Define DEV_MISC_MAJOR, DEV_MEM_MAJOR,
	DEV_SOUND_MAJOR.  Use throughout.
	* fhandler_proc.cc (proc_tab): Add /proc/devices and /proc/misc
	virtual files.
	(format_proc_devices): New function.
	(format_proc_misc): New function.

Index: devices.h
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/devices.h,v
retrieving revision 1.32
diff -u -p -r1.32 devices.h
--- devices.h	12 Jun 2011 20:15:26 -0000	1.32
+++ devices.h	19 Aug 2011 01:48:43 -0000
@@ -44,8 +44,9 @@ enum fh_devices
   DEV_SERIAL_MAJOR = 117,
   FH_SERIAL  = FHDEV (117, 0),	/* /dev/ttyS? */
 
-  FH_WINDOWS = FHDEV (13, 255),
-  FH_CLIPBOARD=FHDEV (13, 254),
+  DEV_MISC_MAJOR = 13,
+  FH_WINDOWS = FHDEV (DEV_MISC_MAJOR, 255),
+  FH_CLIPBOARD=FHDEV (DEV_MISC_MAJOR, 254),
 
   /* begin /proc directories */
 
@@ -225,16 +226,19 @@ enum fh_devices
   FH_SDDW    = FHDEV (DEV_SD7_MAJOR, 224),
   FH_SDDX    = FHDEV (DEV_SD7_MAJOR, 240),
 
-  FH_MEM     = FHDEV (1, 1),
-  FH_KMEM    = FHDEV (1, 2),	/* not implemented yet */
-  FH_NULL    = FHDEV (1, 3),
-  FH_PORT    = FHDEV (1, 4),
-  FH_ZERO    = FHDEV (1, 5),
-  FH_FULL    = FHDEV (1, 7),
-  FH_RANDOM  = FHDEV (1, 8),
-  FH_URANDOM = FHDEV (1, 9),
-  FH_KMSG    = FHDEV (1, 11),
-  FH_OSS_DSP = FHDEV (14, 3),
+  DEV_MEM_MAJOR = 1,
+  FH_MEM     = FHDEV (DEV_MEM_MAJOR, 1),
+  FH_KMEM    = FHDEV (DEV_MEM_MAJOR, 2),	/* not implemented yet */
+  FH_NULL    = FHDEV (DEV_MEM_MAJOR, 3),
+  FH_PORT    = FHDEV (DEV_MEM_MAJOR, 4),
+  FH_ZERO    = FHDEV (DEV_MEM_MAJOR, 5),
+  FH_FULL    = FHDEV (DEV_MEM_MAJOR, 7),
+  FH_RANDOM  = FHDEV (DEV_MEM_MAJOR, 8),
+  FH_URANDOM = FHDEV (DEV_MEM_MAJOR, 9),
+  FH_KMSG    = FHDEV (DEV_MEM_MAJOR, 11),
+
+  DEV_SOUND_MAJOR = 14,
+  FH_OSS_DSP = FHDEV (DEV_SOUND_MAJOR, 3),
 
   DEV_CYGDRIVE_MAJOR = 98,
   FH_CYGDRIVE= FHDEV (DEV_CYGDRIVE_MAJOR, 0),
Index: fhandler_proc.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/fhandler_proc.cc,v
retrieving revision 1.110
diff -u -p -r1.110 fhandler_proc.cc
--- fhandler_proc.cc	12 Aug 2011 12:35:37 -0000	1.110
+++ fhandler_proc.cc	19 Aug 2011 01:48:44 -0000
@@ -46,15 +46,19 @@ static _off64_t format_proc_self (void *
 static _off64_t format_proc_mounts (void *, char *&);
 static _off64_t format_proc_filesystems (void *, char *&);
 static _off64_t format_proc_swaps (void *, char *&);
+static _off64_t format_proc_devices (void *, char *&);
+static _off64_t format_proc_misc (void *, char *&);
 
 /* names of objects in /proc */
 static const virt_tab_t proc_tab[] = {
   { _VN ("."),		 FH_PROC,	virt_directory,	NULL },
   { _VN (".."),		 FH_PROC,	virt_directory,	NULL },
   { _VN ("cpuinfo"),	 FH_PROC,	virt_file,	format_proc_cpuinfo },
+  { _VN ("devices"),	 FH_PROC,	virt_file,	format_proc_devices },
   { _VN ("filesystems"), FH_PROC,	virt_file,	format_proc_filesystems },
   { _VN ("loadavg"),	 FH_PROC,	virt_file,	format_proc_loadavg },
   { _VN ("meminfo"),	 FH_PROC,	virt_file,	format_proc_meminfo },
+  { _VN ("misc"),	 FH_PROC,	virt_file,	format_proc_misc },
   { _VN ("mounts"),	 FH_PROC,	virt_symlink,	format_proc_mounts },
   { _VN ("net"),	 FH_PROCNET,	virt_directory,	NULL },
   { _VN ("partitions"),  FH_PROC,	virt_file,	format_proc_partitions },
@@ -1335,4 +1339,65 @@ format_proc_swaps (void *, char *&destbu
   return bufptr - buf;
 }
 
+static _off64_t
+format_proc_devices (void *, char *&destbuf)
+{
+  tmp_pathbuf tp;
+  char *buf = tp.c_get ();
+  char *bufptr = buf;
+
+  bufptr += __small_sprintf (bufptr,
+			     "Character devices:\n"
+			     "%3d mem\n"
+			     "%3d cons\n"
+			     "%3d /dev/tty\n"
+			     "%3d /dev/console\n"
+			     "%3d /dev/ptmx\n"
+			     "%3d st\n"
+			     "%3d misc\n"
+			     "%3d sound\n"
+			     "%3d ttyS\n"
+			     "%3d tty\n"
+			     "\n"
+			     "Block devices:\n"
+			     "%3d fd\n"
+			     "%3d sd\n"
+			     "%3d sr\n"
+			     "%3d sd\n"
+			     "%3d sd\n"
+			     "%3d sd\n"
+			     "%3d sd\n"
+			     "%3d sd\n"
+			     "%3d sd\n"
+			     "%3d sd\n",
+			     DEV_MEM_MAJOR, DEV_CONS_MAJOR, _major (FH_TTY),
+			     _major (FH_CONSOLE), _major (FH_PTYM),
+			     DEV_TAPE_MAJOR, DEV_MISC_MAJOR, DEV_SOUND_MAJOR,
+			     DEV_SERIAL_MAJOR, DEV_TTYS_MAJOR, DEV_FLOPPY_MAJOR,
+			     DEV_SD_MAJOR, DEV_CDROM_MAJOR, DEV_SD1_MAJOR,
+			     DEV_SD2_MAJOR, DEV_SD3_MAJOR, DEV_SD4_MAJOR,
+			     DEV_SD5_MAJOR, DEV_SD6_MAJOR, DEV_SD7_MAJOR);
+
+  destbuf = (char *) crealloc_abort (destbuf, bufptr - buf);
+  memcpy (destbuf, buf, bufptr - buf);
+  return bufptr - buf;
+}
+
+static _off64_t
+format_proc_misc (void *, char *&destbuf)
+{
+  tmp_pathbuf tp;
+  char *buf = tp.c_get ();
+  char *bufptr = buf;
+
+  bufptr += __small_sprintf (bufptr,
+			     "%3d clipboard\n"
+			     "%3d windows\n",
+			     _minor (FH_CLIPBOARD), _minor (FH_WINDOWS));
+
+  destbuf = (char *) crealloc_abort (destbuf, bufptr - buf);
+  memcpy (destbuf, buf, bufptr - buf);
+  return bufptr - buf;
+}
+
 #undef print

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]