… | |
… | |
4 | * Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de> |
4 | * Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de> |
5 | * All rights reserved. |
5 | * All rights reserved. |
6 | * |
6 | * |
7 | * Redistribution and use in source and binary forms, with or without modifica- |
7 | * Redistribution and use in source and binary forms, with or without modifica- |
8 | * tion, are permitted provided that the following conditions are met: |
8 | * tion, are permitted provided that the following conditions are met: |
9 | * |
9 | * |
10 | * 1. Redistributions of source code must retain the above copyright notice, |
10 | * 1. Redistributions of source code must retain the above copyright notice, |
11 | * this list of conditions and the following disclaimer. |
11 | * this list of conditions and the following disclaimer. |
12 | * |
12 | * |
13 | * 2. Redistributions in binary form must reproduce the above copyright |
13 | * 2. Redistributions in binary form must reproduce the above copyright |
14 | * notice, this list of conditions and the following disclaimer in the |
14 | * notice, this list of conditions and the following disclaimer in the |
15 | * documentation and/or other materials provided with the distribution. |
15 | * documentation and/or other materials provided with the distribution. |
16 | * |
16 | * |
17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
18 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- |
18 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- |
19 | * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
19 | * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
20 | * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- |
20 | * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- |
21 | * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
21 | * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
… | |
… | |
145 | |
145 | |
146 | assert (("libev: PORT_SOURCE_FD must not be zero", PORT_SOURCE_FD)); |
146 | assert (("libev: PORT_SOURCE_FD must not be zero", PORT_SOURCE_FD)); |
147 | |
147 | |
148 | fcntl (backend_fd, F_SETFD, FD_CLOEXEC); /* not sure if necessary, hopefully doesn't hurt */ |
148 | fcntl (backend_fd, F_SETFD, FD_CLOEXEC); /* not sure if necessary, hopefully doesn't hurt */ |
149 | |
149 | |
|
|
150 | /* if my reading of the opensolaris kernel sources are correct, then |
|
|
151 | * opensolaris does something very stupid: it checks if the time has already |
|
|
152 | * elapsed and doesn't round up if that is the case,m otherwise it DOES round |
|
|
153 | * up. Since we can't know what the case is, we need to guess by using a |
|
|
154 | * "large enough" timeout. Normally, 1e-9 would be correct. |
|
|
155 | */ |
150 | backend_fudge = 1e-3; /* needed to compensate for port_getn returning early */ |
156 | backend_mintime = 1e-3; /* needed to compensate for port_getn returning early */ |
151 | backend_modify = port_modify; |
157 | backend_modify = port_modify; |
152 | backend_poll = port_poll; |
158 | backend_poll = port_poll; |
153 | |
159 | |
154 | port_eventmax = 64; /* initial number of events receivable per poll */ |
160 | port_eventmax = 64; /* initial number of events receivable per poll */ |
155 | port_events = (port_event_t *)ev_malloc (sizeof (port_event_t) * port_eventmax); |
161 | port_events = (port_event_t *)ev_malloc (sizeof (port_event_t) * port_eventmax); |
156 | |
162 | |
157 | return EVBACKEND_PORT; |
163 | return EVBACKEND_PORT; |