|
|
|
@ -119,6 +119,27 @@ it, you should treat it as some floatingpoint value. Unlike the name |
|
|
|
|
component C<stamp> might indicate, it is also used for time differences |
|
|
|
|
throughout libev. |
|
|
|
|
|
|
|
|
|
=head1 ERROR HANDLING |
|
|
|
|
|
|
|
|
|
Libev knows three classes of errors: operating system errors, usage errors |
|
|
|
|
and internal errors (bugs). |
|
|
|
|
|
|
|
|
|
When libev catches an operating system error it cannot handle (for example |
|
|
|
|
a syscall indicating a condition libev cannot fix), it calls the callback |
|
|
|
|
set via C<ev_set_syserr_cb>, which is supposed to fix the problem or |
|
|
|
|
abort. The default is to print a diagnostic message and to call C<abort |
|
|
|
|
()>. |
|
|
|
|
|
|
|
|
|
When libev detects a usage error such as a negative timer interval, then |
|
|
|
|
it will print a diagnostic message and abort (via the C<assert> mechanism, |
|
|
|
|
so C<NDEBUG> will disable this checking): these are programming errors in |
|
|
|
|
the libev caller and need to be fixed there. |
|
|
|
|
|
|
|
|
|
Libev also has a few internal error-checking C<assert>ions, and also has |
|
|
|
|
extensive consistency checking code. These do not trigger under normal |
|
|
|
|
circumstances, as they indicate either a bug in libev or worse. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=head1 GLOBAL FUNCTIONS |
|
|
|
|
|
|
|
|
|
These functions can be called anytime, even before initialising the |
|
|
|
@ -3295,12 +3316,12 @@ notification model, which cannot be implemented efficiently on windows |
|
|
|
|
|
|
|
|
|
=item The winsocket select function |
|
|
|
|
|
|
|
|
|
The winsocket C<select> function doesn't follow POSIX in that it requires |
|
|
|
|
socket I<handles> and not socket I<file descriptors>. This makes select |
|
|
|
|
very inefficient, and also requires a mapping from file descriptors |
|
|
|
|
to socket handles. See the discussion of the C<EV_SELECT_USE_FD_SET>, |
|
|
|
|
C<EV_SELECT_IS_WINSOCKET> and C<EV_FD_TO_WIN32_HANDLE> preprocessor |
|
|
|
|
symbols for more info. |
|
|
|
|
The winsocket C<select> function doesn't follow POSIX in that it |
|
|
|
|
requires socket I<handles> and not socket I<file descriptors> (it is |
|
|
|
|
also extremely buggy). This makes select very inefficient, and also |
|
|
|
|
requires a mapping from file descriptors to socket handles. See the |
|
|
|
|
discussion of the C<EV_SELECT_USE_FD_SET>, C<EV_SELECT_IS_WINSOCKET> and |
|
|
|
|
C<EV_FD_TO_WIN32_HANDLE> preprocessor symbols for more info. |
|
|
|
|
|
|
|
|
|
The configuration for a "naked" win32 using the microsoft runtime |
|
|
|
|
libraries and raw winsocket select is: |
|
|
|
@ -3388,6 +3409,32 @@ implementations implementing IEEE 754 (basically all existing ones). |
|
|
|
|
If you know of other additional requirements drop me a note. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=head1 COMPILER WARNINGS |
|
|
|
|
|
|
|
|
|
Depending on your compiler and compiler settings, you might get no or a |
|
|
|
|
lot of warnings when compiling libev code. Some people are apparently |
|
|
|
|
scared by this. |
|
|
|
|
|
|
|
|
|
However, these are unavoidable for many reasons. For one, each compiler |
|
|
|
|
has different warnings, and each user has different tastes regarding |
|
|
|
|
warning options. "Warn-free" code therefore cannot be a goal except when |
|
|
|
|
targetting a specific compiler and compiler-version. |
|
|
|
|
|
|
|
|
|
Another reason is that some compiler warnings require elaborate |
|
|
|
|
workarounds, or other changes to the code that make it less clear and less |
|
|
|
|
maintainable. |
|
|
|
|
|
|
|
|
|
And of course, some compiler warnings are just plain stupid, or simply |
|
|
|
|
wrong (because they don't actually warn about the cindition their message |
|
|
|
|
seems to warn about). |
|
|
|
|
|
|
|
|
|
While libev is written to generate as few warnings as possible, |
|
|
|
|
"warn-free" code is not a goal, and it is recommended not to build libev |
|
|
|
|
with any compiler warnings enabled unless you are prepared to cope with |
|
|
|
|
them (e.g. by ignoring them). Remember that warnings are just that: |
|
|
|
|
warnings, not errors, or proof of bugs. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=head1 VALGRIND |
|
|
|
|
|
|
|
|
|
Valgrind has a special section here because it is a popular tool that is |
|
|
|
|