File tree Expand file tree Collapse file tree 3 files changed +18
-17
lines changed Expand file tree Collapse file tree 3 files changed +18
-17
lines changed Original file line number Diff line number Diff line change 1515void c_sleep (const int milliseconds )
1616{
1717
18- #ifdef _MSC_VER
19- Sleep (milliseconds );
20- #else
21- // https://linux.die.net/man/3/usleep
2218 if (milliseconds <= 0 ){
2319 fprintf (stderr , "ERROR:sleep: milliseconds must be strictly positive\n" );
2420 return ;
2521 }
2622
27- //int ierr = usleep(*milliseconds * 1000);
23+ #ifdef _MSC_VER
24+ Sleep (milliseconds );
25+ #else
26+ // https://linux.die.net/man/3/usleep
27+ //int ierr = usleep(*milliseconds * 1000);
2828
2929 struct timespec t ;
3030
@@ -40,8 +40,10 @@ void c_sleep(const int milliseconds)
4040 fprintf (stderr , "nanosleep() interrupted\n" );
4141 break ;
4242 case EINVAL :
43+ fprintf (stderr , "nanosleep() invalid timespec value (EINVAL)\n" );
44+ break ;
4345 case EFAULT :
44- fprintf (stderr , "nanosleep() bad milliseconds value \n" );
46+ fprintf (stderr , "nanosleep() timespec points outside accessible address space (EFAULT) \n" );
4547 break ;
4648 case ENOSYS :
4749 fprintf (stderr , "nanosleep() not supported on this system\n" );
Original file line number Diff line number Diff line change @@ -17,8 +17,9 @@ subroutine c_sleep(millseconds) bind(C, name="c_sleep")
1717contains
1818
1919subroutine sleep_ms (millseconds )
20- integer (C_INT), intent (in ) :: millseconds
21- call c_sleep(millseconds)
20+ integer , intent (in ) :: millseconds
21+
22+ call c_sleep(int (millseconds, C_INT))
2223end subroutine sleep_ms
2324
2425end module sleep_std
Original file line number Diff line number Diff line change @@ -58,17 +58,15 @@ target_link_libraries(fortran_micro_sleep PRIVATE f_micro_sleep)
5858add_test (NAME Fortran_micro_sleep COMMAND fortran_micro_sleep)
5959
6060
61- add_library (f_nano_sleep OBJECT ${PROJECT_SOURCE_DIR} /src/sleep/reference/posix_nanosleep.f90)
62- set_property (TARGET f_nano_sleep PROPERTY Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /include /posix_nanosleep)
63- target_include_directories (f_nano_sleep PUBLIC ${CMAKE_CURRENT_BINARY_DIR} /include /posix_nanosleep)
61+ # This method is too brittle
62+ # add_library(f_nano_sleep OBJECT ${PROJECT_SOURCE_DIR}/src/sleep/reference/posix_nanosleep.f90)
63+ # set_property(TARGET f_nano_sleep PROPERTY Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/posix_nanosleep)
64+ # target_include_directories(f_nano_sleep PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/include/posix_nanosleep)
6465
65- add_executable (fortran_nano_sleep test_sleep.f90)
66- target_link_libraries (fortran_nano_sleep PRIVATE f_nano_sleep)
66+ # add_executable(fortran_nano_sleep test_sleep.f90)
67+ # target_link_libraries(fortran_nano_sleep PRIVATE f_nano_sleep)
6768
68- add_test (NAME Fortran_nano_sleep COMMAND fortran_nano_sleep)
69- if (APPLE AND CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang" )
70- set_property (TEST Fortran_nano_sleep PROPERTY DISABLED true )
71- endif ()
69+ # add_test(NAME Fortran_nano_sleep COMMAND fortran_nano_sleep)
7270
7371endif ()
7472
You can’t perform that action at this time.
0 commit comments