blob: 315459309be5a4c9a7078d690f6ee18083441d72 [file] [log] [blame]
// 'use strict'
var funs = {
_sigalrm_handler: 0,
signal__deps: ['_sigalrm_handler'],
signal: function(sig, func) {
if (sig == 14 /*SIGALRM*/) {
__sigalrm_handler = func;
} else {
#if ASSERTIONS
Module.printErr('Calling stub instead of signal()');
#endif
}
return 0;
},
sigemptyset: function(set) {
{{{ makeSetValue('set', '0', '0', 'i32') }}};
return 0;
},
sigfillset: function(set) {
{{{ makeSetValue('set', '0', '-1>>>0', 'i32') }}};
return 0;
},
sigaddset: function(set, signum) {
{{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '| (1 << (signum-1))', 'i32') }}};
return 0;
},
sigdelset: function(set, signum) {
{{{ makeSetValue('set', '0', makeGetValue('set', '0', 'i32') + '& (~(1 << (signum-1)))', 'i32') }}};
return 0;
},
sigismember: function(set, signum) {
return {{{ makeGetValue('set', '0', 'i32') }}} & (1 << (signum-1));
},
sigaction: function(signum, act, oldact) {
//int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
#if ASSERTIONS
Module.printErr('Calling stub instead of sigaction()');
#endif
return 0;
},
sigprocmask: function() {
#if ASSERTIONS
Module.printErr('Calling stub instead of sigprocmask()');
#endif
return 0;
},
__libc_current_sigrtmin: function() {
#if ASSERTIONS
Module.printErr('Calling stub instead of __libc_current_sigrtmin');
#endif
return 0;
},
__libc_current_sigrtmax: function() {
#if ASSERTIONS
Module.printErr('Calling stub instead of __libc_current_sigrtmax');
#endif
return 0;
},
kill__deps: ['$ERRNO_CODES', '__setErrNo'],
kill: function(pid, sig) {
// http://pubs.opengroup.org/onlinepubs/000095399/functions/kill.html
// Makes no sense in a single-process environment.
// Should kill itself somtimes depending on `pid`
#if ASSERTIONS
Module.printErr('Calling stub instead of kill()');
#endif
___setErrNo(ERRNO_CODES.EPERM);
return -1;
},
killpg__deps: ['$ERRNO_CODES', '__setErrNo'],
killpg: function() {
#if ASSERTIONS
Module.printErr('Calling stub instead of killpg()');
#endif
___setErrNo(ERRNO_CODES.EPERM);
return -1;
},
siginterrupt: function() {
#if ASSERTIONS
Module.printErr('Calling stub instead of siginterrupt()');
#endif
return 0;
},
raise__deps: ['$ERRNO_CODES', '__setErrNo'],
raise: function(sig) {
#if ASSERTIONS
Module.printErr('Calling stub instead of raise()');
#endif
___setErrNo(ERRNO_CODES.ENOSYS);
#if ASSERTIONS
Runtime.warnOnce('raise() returning an error as we do not support it');
#endif
return -1;
},
// http://pubs.opengroup.org/onlinepubs/000095399/functions/alarm.html
alarm__deps: ['_sigalrm_handler'],
alarm: function(seconds) {
setTimeout(function() {
if (__sigalrm_handler) Runtime.dynCall('vi', __sigalrm_handler, [0]);
}, seconds*1000);
},
ualarm: function() {
throw 'ualarm() is not implemented yet';
},
setitimer: function() {
throw 'setitimer() is not implemented yet';
},
getitimer: function() {
throw 'getitimer() is not implemented yet';
},
pause__deps: ['__setErrNo', '$ERRNO_CODES'],
pause: function() {
// int pause(void);
// http://pubs.opengroup.org/onlinepubs/000095399/functions/pause.html
// We don't support signals, so we return immediately.
#if ASSERTIONS
Module.printErr('Calling stub instead of pause()');
#endif
___setErrNo(ERRNO_CODES.EINTR);
return -1;
},
sigpending: function(set) {
{{{ makeSetValue('set', 0, 0, 'i32') }}};
return 0;
}
//signalfd
//ppoll
//epoll_pwait
//pselect
//sigvec
//sigmask
//sigblock
//sigsetmask
//siggetmask
//sigsuspend
//bsd_signal
//siginterrupt
//sigqueue
//sysv_signal
//signal
//pthread_kill
//gsignal
//ssignal
//psignal
//psiginfo
//sigpause
//sigisemptyset
//sigtimedwait
//sigwaitinfo
//sigreturn
//sigstack
//sigaltstack(2)
//sigsetops(3),
//sighold
//sigrelse
//sigignore
//sigset
};
mergeInto(LibraryManager.library, funs);