Fixup for r269288. SleepForSeconds is not available in nolibc builds, let's add an internal_sleep.

llvm-svn: 269296
This commit is contained in:
Kuba Brecka 2016-05-12 14:08:56 +00:00
parent 241c67989b
commit 00dde7563e
4 changed files with 15 additions and 0 deletions

View File

@ -23,5 +23,6 @@ void LogMessageOnPrintf(const char *str) {}
#endif
void WriteToSyslog(const char *buffer) {}
void Abort() { internal__exit(1); }
void SleepForSeconds(int seconds) { internal_sleep(seconds); }
} // namespace __sanitizer

View File

@ -70,6 +70,7 @@ uptr internal_ftruncate(fd_t fd, uptr size);
// OS
void NORETURN internal__exit(int exitcode);
unsigned int internal_sleep(unsigned int seconds);
uptr internal_getpid();
uptr internal_getppid();

View File

@ -336,6 +336,15 @@ void internal__exit(int exitcode) {
Die(); // Unreachable.
}
unsigned int internal_sleep(unsigned int seconds) {
struct timespec ts;
ts.tv_sec = 1;
ts.tv_nsec = 0;
int res = internal_syscall(SYSCALL(nanosleep), &ts, &ts);
if (res) return ts.tv_sec;
return 0;
}
uptr internal_execve(const char *filename, char *const argv[],
char *const envp[]) {
return internal_syscall(SYSCALL(execve), (uptr)filename, (uptr)argv,

View File

@ -161,6 +161,10 @@ void internal__exit(int exitcode) {
_exit(exitcode);
}
unsigned int internal_sleep(unsigned int seconds) {
sleep(seconds);
}
uptr internal_getpid() {
return getpid();
}