mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 15:05:19 +00:00
76 lines
1.6 KiB
C
76 lines
1.6 KiB
C
/*
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <inttypes.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
#include <unistd.h>
|
|
#include <fcntl.h>
|
|
#include <errno.h>
|
|
#include <time.h>
|
|
#include <poll.h>
|
|
|
|
uint64_t
|
|
get_time_us()
|
|
{
|
|
struct timespec ts;
|
|
if (clock_gettime(CLOCK_MONOTONIC, &ts) != 0) {
|
|
return 0;
|
|
}
|
|
|
|
return ((uint64_t)ts.tv_sec) * 1000 * 1000 + ((uint64_t)ts.tv_nsec) / 1000;
|
|
}
|
|
|
|
int
|
|
main(int argc, char **argv)
|
|
{
|
|
uint64_t time_start, time_end;
|
|
struct pollfd fds[2];
|
|
int ret;
|
|
|
|
printf("sleep 2 seconds\n");
|
|
time_start = get_time_us();
|
|
ret = sleep(2);
|
|
time_end = get_time_us();
|
|
|
|
printf("sleep return %u\n", ret);
|
|
printf("time sleeped: %u\n", (uint32_t)(time_end - time_start));
|
|
if (time_end - time_start < 2 * 1000000) {
|
|
printf("Test sleep failed!\n");
|
|
return -1;
|
|
}
|
|
|
|
/* watch stdin for input */
|
|
fds[0].fd = STDIN_FILENO;
|
|
fds[0].events = POLLIN;
|
|
|
|
/* watch stdout for ability to write */
|
|
fds[1].fd = STDOUT_FILENO;
|
|
fds[1].events = POLLOUT;
|
|
|
|
printf("poll with 5 seconds\n");
|
|
ret = poll(fds, 2, 5 * 1000);
|
|
|
|
if (ret == -1) {
|
|
perror("poll");
|
|
return 1;
|
|
}
|
|
|
|
if (!ret) {
|
|
printf("Test poll failed, %d seconds elapsed!\n", 5);
|
|
return 0;
|
|
}
|
|
|
|
if (fds[0].revents & POLLIN)
|
|
printf("stdin is readable\n");
|
|
|
|
if (fds[1].revents & POLLOUT)
|
|
printf("stdout is writable\n");
|
|
|
|
printf("Test finished\n");
|
|
return 0;
|
|
}
|