Add %SYS-KILL.
[iolib.git] / io.multiplex / utils.lisp
blob22856d5db8a3b597259bf5ee14b2c45070f63b0a
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; indent-tabs-mode: nil -*-
2 ;;;
3 ;;; --- Miscellaneous utilities.
4 ;;;
6 (in-package :io.multiplex)
8 (defun timeout->timeval (timeout tv)
9 (with-foreign-slots ((isys:sec isys:usec) tv isys:timeval)
10 (multiple-value-bind (%sec %usec)
11 (decode-timeout timeout)
12 (setf isys:sec %sec
13 isys:usec %usec))))
15 (defun timeout->timespec (timeout ts)
16 (with-foreign-slots ((isys:sec isys:nsec) ts isys:timespec)
17 (multiple-value-bind (%sec %usec)
18 (decode-timeout timeout)
19 (setf isys:sec %sec
20 isys:nsec (* 1000 %usec)))))
22 (defun timeout->milisec (timeout)
23 (if timeout
24 (multiple-value-bind (sec usec)
25 (decode-timeout timeout)
26 (+ (* sec 1000)
27 (truncate usec 1000)))
28 -1))
30 (defmacro ignore-and-print-errors (&body body)
31 `(handler-case (locally ,@body)
32 (error (error)
33 (warn "Caught a ~A: ~A, ignoring it."
34 (type-of error) error))))