Browse Source

*** empty log message ***

master
Marc Alexander Lehmann 14 years ago
parent
commit
9db1c2d1bf
  1. 59
      ev.pod

59
ev.pod

@ -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

Loading…
Cancel
Save