usr/src/lib/libc/port/gen/ualarm.c
author Jon Tibble <meths@btinternet.com>
Thu, 09 Dec 2010 22:32:39 +0100
changeset 13255 4afa820d78b9
parent 6812 febeba71273d
permissions -rw-r--r--
298 SPARC build fails in smt_pause.o 478 Build needs fixing for pkgdepend flag day Reviewed by: [email protected] Reviewed by: [email protected] Reviewed by: [email protected] Approved by: [email protected]
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
6812
febeba71273d PSARC 2008/309 expunge synonyms.h
raf
parents: 0
diff changeset
     2
 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 * Use is subject to license terms.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     5
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     6
/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
/*	  All Rights Reserved  	*/
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * Copyright (c) 1985 Regents of the University of California.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * All rights reserved.  The Berkeley software License Agreement
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 * specifies the terms and conditions for redistribution.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
6812
febeba71273d PSARC 2008/309 expunge synonyms.h
raf
parents: 0
diff changeset
    15
#pragma ident	"%Z%%M%	%I%	%E% SMI"
febeba71273d PSARC 2008/309 expunge synonyms.h
raf
parents: 0
diff changeset
    16
febeba71273d PSARC 2008/309 expunge synonyms.h
raf
parents: 0
diff changeset
    17
#include "lint.h"
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
#include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
#include <sys/time.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
#include <unistd.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
#define	USPS	1000000		/* # of microseconds in a second */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    23
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    24
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    25
 * Generate a SIGALRM signal in ``usecs'' microseconds.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    26
 * If ``reload'' is non-zero, keep generating SIGALRM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 * every ``reload'' microseconds after the first signal.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
useconds_t
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
ualarm(useconds_t usecs, useconds_t reload)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
{
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
	struct itimerval new, old;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
	new.it_interval.tv_usec = reload % USPS;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
	new.it_interval.tv_sec = reload / USPS;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
	new.it_value.tv_usec = usecs % USPS;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
	new.it_value.tv_sec = usecs / USPS;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
	if (setitimer(ITIMER_REAL, &new, &old) != 0)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
		return (0);	/* no errors are defined */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
	return (old.it_value.tv_sec * USPS + old.it_value.tv_usec);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
}