Implemented SetCommMask, SetCommTimeouts, GetCommMask, GetCommTimeouts.

diff --git a/server/serial.c b/server/serial.c
index e5b6066..64a9956 100644
--- a/server/serial.c
+++ b/server/serial.c
@@ -196,3 +196,58 @@
     }
 }
 
+DECL_HANDLER(get_serial_info)
+{
+    struct serial *serial;
+
+    if ((serial = get_serial_obj( current->process, req->handle, 0 )))
+    {
+        /* timeouts */
+        req->readinterval = serial->readinterval;
+        req->readconst    = serial->readconst;
+        req->readmult     = serial->readmult;
+        req->writeconst   = serial->writeconst;
+        req->writemult    = serial->writemult;
+
+        /* event mask */
+        req->eventmask    = serial->eventmask;
+
+        /* comm port error status */
+        req->commerror    = serial->commerror;
+
+        release_object( serial );
+    }
+}
+
+DECL_HANDLER(set_serial_info)
+{
+    struct serial *serial;
+
+    if ((serial = get_serial_obj( current->process, req->handle, 0 )))
+    {
+        /* timeouts */
+        if(req->flags & SERIALINFO_SET_TIMEOUTS)
+        {
+            serial->readinterval = req->readinterval;
+            serial->readconst    = req->readconst;
+            serial->readmult     = req->readmult;
+            serial->writeconst   = req->writeconst;
+            serial->writemult    = req->writemult;
+        }
+
+        /* event mask */
+        if(req->flags & SERIALINFO_SET_MASK)
+        {
+            serial->eventmask = req->eventmask;
+        }
+
+        /* comm port error status */
+        if(req->flags & SERIALINFO_SET_ERROR)
+        {
+            serial->commerror = req->commerror;
+        }
+
+        release_object( serial );
+    }
+}
+