/*
* $Id$
*/
#include <signal.h>
#include <rtems/system.h>
#include <rtems/score/thread.h>
/*
* 3.3.2 Send a Signal to a Process, P1003.1b-1993, p. 68
*
* NOTE: Behavior of kill() depends on _POSIX_SAVED_IDS.
*/
int kill(
pid_t pid,
int sig
)
{
/* SIGABRT comes from abort via assert */
if ( sig == SIGABRT ) {
exit( 1 );
}
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
*/
int sigemptyset(
sigset_t *set
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
*/
int sigfillset(
sigset_t *set
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
*/
int sigaddset(
sigset_t *set,
int signo
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
*/
int sigdelset(
sigset_t *set,
int signo
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.3 Manipulate Signal Sets, P1003.1b-1993, p. 69
*/
int sigismember(
const sigset_t *set,
int signo
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.4 Examine and Change Signal Action, P1003.1b-1993, p. 70
*/
int sigaction(
int sig,
const struct sigaction *act,
struct sigaction *oact
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.5 Examine and Change Blocked Signals, P1003.1b-1993, p. 73
*
* NOTE: P1003.1c/D10, p. 37 adds pthread_sigmask().
*/
int sigprocmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.5 Examine and Change Blocked Signals, P1003.1b-1993, p. 73
*
* NOTE: P1003.1c/D10, p. 37 adds pthread_sigmask().
*/
int pthread_sigmask(
int how,
const sigset_t *set,
sigset_t *oset
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.6 Examine Pending Signals, P1003.1b-1993, p. 75
*/
int sigpending(
sigset_t *set
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.7 Wait for a Signal, P1003.1b-1993, p. 75
*/
int sigsuspend(
const sigset_t *sigmask
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
*
* NOTE: P1003.1c/D10, p. 39 adds sigwait().
*/
int sigwaitinfo(
const sigset_t *set,
siginfo_t *info
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
*
* NOTE: P1003.1c/D10, p. 39 adds sigwait().
*/
int sigtimedwait(
const sigset_t *set,
siginfo_t *info,
const struct timespec *timeout
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76
*
* NOTE: P1003.1c/D10, p. 39 adds sigwait().
*/
int sigwait(
const sigset_t *set,
int *sig
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78
*/
int sigqueue(
pid_t pid,
int signo,
const union sigval value
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.3.10 Send a Signal to a Thread, P1003.1c/D10, p. 43
*/
int pthread_kill(
pthread_t thread,
int sig
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.4.1 Schedule Alarm, P1003.1b-1993, p. 79
*/
unsigned int alarm(
unsigned int seconds
)
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.4.2 Suspend Process Execution, P1003.1b-1993, p. 80
*/
int pause( void )
{
return POSIX_NOT_IMPLEMENTED();
}
/*
* 3.4.3 Delay Process Execution, P1003.1b-1993, p. 73
*/
unsigned int sleep(
unsigned int seconds
)
{
/* XXX can we get away with this implementation? */
struct timespec tp;
tp.tv_sec = seconds;
tp.tv_nsec = 0;
return nanosleep( &tp, NULL );
}