Author: robertj
Date: 2007-08-23 02:17:06 -0400 (Thu, 23 Aug 2007)
New Revision: 84679

Modified:
   trunk/mcs/class/System/System.Diagnostics/ChangeLog
   trunk/mcs/class/System/System.Diagnostics/Process.cs
Log:
2007-08-23  Robert Jordan  <[EMAIL PROTECTED]>

        * Process.cs: implement PriorityClass. Fixes #81756.



Modified: trunk/mcs/class/System/System.Diagnostics/ChangeLog
===================================================================
--- trunk/mcs/class/System/System.Diagnostics/ChangeLog 2007-08-23 06:13:25 UTC 
(rev 84678)
+++ trunk/mcs/class/System/System.Diagnostics/ChangeLog 2007-08-23 06:17:06 UTC 
(rev 84679)
@@ -1,4 +1,7 @@
+2007-08-23  Robert Jordan  <[EMAIL PROTECTED]>
 
+       * Process.cs: implement PriorityClass. Fixes #81756.
+
 Mon Aug 20 12:41:09 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
 
        * Process.cs: implemented icall for system/user times.

Modified: trunk/mcs/class/System/System.Diagnostics/Process.cs
===================================================================
--- trunk/mcs/class/System/System.Diagnostics/Process.cs        2007-08-23 
06:13:25 UTC (rev 84678)
+++ trunk/mcs/class/System/System.Diagnostics/Process.cs        2007-08-23 
06:17:06 UTC (rev 84679)
@@ -480,17 +480,34 @@
                        }
                }
 
-               [MonoTODO]
+               [MonoLimitation ("Under Unix, only root is allowed to raise the 
priority.")]
                [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
                [MonitoringDescription ("The relative process priority.")]
                public ProcessPriorityClass PriorityClass {
                        get {
-                               return(ProcessPriorityClass.Normal);
+                               int error;
+                               int prio = GetPriorityClass (process_handle, 
out error);
+                               if (prio == 0)
+                                       throw new Win32Exception (error);
+                               return (ProcessPriorityClass) prio;
                        }
                        set {
+                               // LAMESPEC: not documented on MSDN for NET_1_1
+                               if (!Enum.IsDefined (typeof 
(ProcessPriorityClass), value))
+                                       throw new InvalidEnumArgumentException 
();
+
+                               int error;
+                               if (!SetPriorityClass (process_handle, (int) 
value, out error))
+                                       throw new Win32Exception (error);
                        }
                }
 
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               static extern int GetPriorityClass (IntPtr handle, out int 
error);
+
+               [MethodImplAttribute(MethodImplOptions.InternalCall)]
+               static extern bool SetPriorityClass (IntPtr handle, int 
priority, out int error);
+
                [MonoTODO]
                [DesignerSerializationVisibility 
(DesignerSerializationVisibility.Hidden)]
                [MonitoringDescription ("The amount of memory exclusively used 
by this process.")]

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to