LibC: Implement usleep()

This is not a POSIX function, but some ports seem to be using it either
way
This commit is contained in:
Bananymous 2024-08-05 00:54:17 +03:00
parent 3651306f57
commit e7a06979ec
3 changed files with 16 additions and 0 deletions

View File

@ -185,6 +185,12 @@ __BEGIN_DECLS
#endif
#undef __need_uid_t
#if !defined(__useconds_t_defined) && (defined(__need_all_types) || defined(__need_useconds_t))
#define __useconds_t_defined 1
typedef unsigned long useconds_t;
#endif
#undef __need_useconds_t
#ifdef __need_all_types
#include <stdint.h>
#endif

View File

@ -101,6 +101,7 @@ __BEGIN_DECLS
#define __need_gid_t
#define __need_off_t
#define __need_pid_t
#define __need_useconds_t
#include <sys/types.h>
// FIXME: _CS prefixed definitions
@ -206,6 +207,7 @@ char* ttyname(int fildes);
int ttyname_r(int fildes, char* name, size_t namesize);
int unlink(const char* path);
int unlinkat(int fd, const char* path, int flag);
int usleep(useconds_t usec);
ssize_t write(int fildes, const void* buf, size_t nbyte);
extern char* optarg;

View File

@ -280,6 +280,14 @@ unsigned int sleep(unsigned int seconds)
return ret;
}
int usleep(useconds_t usec)
{
timespec ts;
ts.tv_sec = usec / 1'000'000;
ts.tv_nsec = (usec % 1'000'000) * 1000;
return nanosleep(&ts, nullptr);
}
char* getcwd(char* buf, size_t size)
{
if (size == 0)