1425bb815Sopenharmony_ci/* Copyright JS Foundation and other contributors, http://js.foundation 2425bb815Sopenharmony_ci * 3425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4425bb815Sopenharmony_ci * you may not use this file except in compliance with the License. 5425bb815Sopenharmony_ci * You may obtain a copy of the License at 6425bb815Sopenharmony_ci * 7425bb815Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8425bb815Sopenharmony_ci * 9425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS 11425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12425bb815Sopenharmony_ci * See the License for the specific language governing permissions and 13425bb815Sopenharmony_ci * limitations under the License. 14425bb815Sopenharmony_ci */ 15425bb815Sopenharmony_ci 16425bb815Sopenharmony_ci#if !defined (_XOPEN_SOURCE) || _XOPEN_SOURCE < 500 17425bb815Sopenharmony_ci#undef _XOPEN_SOURCE 18425bb815Sopenharmony_ci/* Required macro for sleep functions (nanosleep or usleep) */ 19425bb815Sopenharmony_ci#define _XOPEN_SOURCE 500 20425bb815Sopenharmony_ci#endif 21425bb815Sopenharmony_ci 22425bb815Sopenharmony_ci#ifdef _WIN32 23425bb815Sopenharmony_ci#include <windows.h> 24425bb815Sopenharmony_ci#elif defined (HAVE_TIME_H) 25425bb815Sopenharmony_ci#include <time.h> 26425bb815Sopenharmony_ci#elif defined (HAVE_UNISTD_H) 27425bb815Sopenharmony_ci#include <unistd.h> 28425bb815Sopenharmony_ci#endif /* _WIN32 */ 29425bb815Sopenharmony_ci 30425bb815Sopenharmony_ci#include "jerryscript-port.h" 31425bb815Sopenharmony_ci#include "jerryscript-port-default.h" 32425bb815Sopenharmony_ci 33425bb815Sopenharmony_ci/** 34425bb815Sopenharmony_ci * Default implementation of jerry_port_sleep. Uses 'nanosleep' or 'usleep' if 35425bb815Sopenharmony_ci * available on the system, does nothing otherwise. 36425bb815Sopenharmony_ci */ 37425bb815Sopenharmony_civoid jerry_port_sleep (uint32_t sleep_time) /**< milliseconds to sleep */ 38425bb815Sopenharmony_ci{ 39425bb815Sopenharmony_ci#ifdef _WIN32 40425bb815Sopenharmony_ci Sleep (sleep_time); 41425bb815Sopenharmony_ci#elif defined (HAVE_TIME_H) 42425bb815Sopenharmony_ci struct timespec sleep_timespec; 43425bb815Sopenharmony_ci sleep_timespec.tv_sec = (time_t) sleep_time / 1000; 44425bb815Sopenharmony_ci sleep_timespec.tv_nsec = ((long int) sleep_time % 1000) * 1000000L; 45425bb815Sopenharmony_ci 46425bb815Sopenharmony_ci nanosleep (&sleep_timespec, NULL); 47425bb815Sopenharmony_ci#elif defined (HAVE_UNISTD_H) 48425bb815Sopenharmony_ci usleep ((useconds_t) sleep_time * 1000); 49425bb815Sopenharmony_ci#else 50425bb815Sopenharmony_ci (void) sleep_time; 51425bb815Sopenharmony_ci#endif /* HAVE_TIME_H */ 52425bb815Sopenharmony_ci} /* jerry_port_sleep */ 53