Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in src/patchsets/glibc/2.12.1/ports: 1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch
Date: Wed, 29 Sep 2010 22:41:37
Message-Id: 20100929224133.3013820054@flycatcher.gentoo.org
1 vapier 10/09/29 22:41:33
2
3 Added: 1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch
4 Log:
5 fix by Guy Martin for CLOEXEC and NONBLOCK values on hppa
6
7 Revision Changes Path
8 1.1 src/patchsets/glibc/2.12.1/ports/1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch
9
10 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.12.1/ports/1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch?rev=1.1&view=markup
11 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.12.1/ports/1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch?rev=1.1&content-type=text/plain
12
13 Index: 1509_all_glibc-2.11-hppa-SOCK_CLOEXEC.patch
14 ===================================================================
15 CLOEXEC and NONBLOCK values are different on hppa, so it needs its own headers
16
17 https://bugs.gentoo.org/331119
18
19 --- ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h
20 +++ ports/sysdeps/unix/sysv/linux/hppa/sys/epoll.h
21 @@ -0,0 +1,144 @@
22 +/* Copyright (C) 2002-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
23 + This file is part of the GNU C Library.
24 +
25 + The GNU C Library is free software; you can redistribute it and/or
26 + modify it under the terms of the GNU Lesser General Public
27 + License as published by the Free Software Foundation; either
28 + version 2.1 of the License, or (at your option) any later version.
29 +
30 + The GNU C Library is distributed in the hope that it will be useful,
31 + but WITHOUT ANY WARRANTY; without even the implied warranty of
32 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
33 + Lesser General Public License for more details.
34 +
35 + You should have received a copy of the GNU Lesser General Public
36 + License along with the GNU C Library; if not, write to the Free
37 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
38 + 02111-1307 USA. */
39 +
40 +#ifndef _SYS_EPOLL_H
41 +#define _SYS_EPOLL_H 1
42 +
43 +#include <stdint.h>
44 +#include <sys/types.h>
45 +
46 +/* Get __sigset_t. */
47 +#include <bits/sigset.h>
48 +
49 +#ifndef __sigset_t_defined
50 +# define __sigset_t_defined
51 +typedef __sigset_t sigset_t;
52 +#endif
53 +
54 +
55 +/* Flags to be passed to epoll_create1. */
56 +enum
57 + {
58 + EPOLL_CLOEXEC = 010000000,
59 +#define EPOLL_CLOEXEC EPOLL_CLOEXEC
60 + EPOLL_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
61 +#define EPOLL_NONBLOCK EPOLL_NONBLOCK
62 + };
63 +
64 +
65 +enum EPOLL_EVENTS
66 + {
67 + EPOLLIN = 0x001,
68 +#define EPOLLIN EPOLLIN
69 + EPOLLPRI = 0x002,
70 +#define EPOLLPRI EPOLLPRI
71 + EPOLLOUT = 0x004,
72 +#define EPOLLOUT EPOLLOUT
73 + EPOLLRDNORM = 0x040,
74 +#define EPOLLRDNORM EPOLLRDNORM
75 + EPOLLRDBAND = 0x080,
76 +#define EPOLLRDBAND EPOLLRDBAND
77 + EPOLLWRNORM = 0x100,
78 +#define EPOLLWRNORM EPOLLWRNORM
79 + EPOLLWRBAND = 0x200,
80 +#define EPOLLWRBAND EPOLLWRBAND
81 + EPOLLMSG = 0x400,
82 +#define EPOLLMSG EPOLLMSG
83 + EPOLLERR = 0x008,
84 +#define EPOLLERR EPOLLERR
85 + EPOLLHUP = 0x010,
86 +#define EPOLLHUP EPOLLHUP
87 + EPOLLRDHUP = 0x2000,
88 +#define EPOLLRDHUP EPOLLRDHUP
89 + EPOLLONESHOT = (1 << 30),
90 +#define EPOLLONESHOT EPOLLONESHOT
91 + EPOLLET = (1 << 31)
92 +#define EPOLLET EPOLLET
93 + };
94 +
95 +
96 +/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
97 +#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
98 +#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
99 +#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
100 +
101 +
102 +typedef union epoll_data
103 +{
104 + void *ptr;
105 + int fd;
106 + uint32_t u32;
107 + uint64_t u64;
108 +} epoll_data_t;
109 +
110 +struct epoll_event
111 +{
112 + uint32_t events; /* Epoll events */
113 + epoll_data_t data; /* User data variable */
114 +};
115 +
116 +
117 +__BEGIN_DECLS
118 +
119 +/* Creates an epoll instance. Returns an fd for the new instance.
120 + The "size" parameter is a hint specifying the number of file
121 + descriptors to be associated with the new instance. The fd
122 + returned by epoll_create() should be closed with close(). */
123 +extern int epoll_create (int __size) __THROW;
124 +
125 +/* Same as epoll_create but with an FLAGS parameter. The unused SIZE
126 + parameter has been dropped. */
127 +extern int epoll_create1 (int __flags) __THROW;
128 +
129 +
130 +/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
131 + -1 in case of error ( the "errno" variable will contain the
132 + specific error code ) The "op" parameter is one of the EPOLL_CTL_*
133 + constants defined above. The "fd" parameter is the target of the
134 + operation. The "event" parameter describes which events the caller
135 + is interested in and any associated user data. */
136 +extern int epoll_ctl (int __epfd, int __op, int __fd,
137 + struct epoll_event *__event) __THROW;
138 +
139 +
140 +/* Wait for events on an epoll instance "epfd". Returns the number of
141 + triggered events returned in "events" buffer. Or -1 in case of
142 + error with the "errno" variable set to the specific error code. The
143 + "events" parameter is a buffer that will contain triggered
144 + events. The "maxevents" is the maximum number of events to be
145 + returned ( usually size of "events" ). The "timeout" parameter
146 + specifies the maximum wait time in milliseconds (-1 == infinite).
147 +
148 + This function is a cancellation point and therefore not marked with
149 + __THROW. */
150 +extern int epoll_wait (int __epfd, struct epoll_event *__events,
151 + int __maxevents, int __timeout);
152 +
153 +
154 +/* Same as epoll_wait, but the thread's signal mask is temporarily
155 + and atomically replaced with the one provided as parameter.
156 +
157 + This function is a cancellation point and therefore not marked with
158 + __THROW. */
159 +extern int epoll_pwait (int __epfd, struct epoll_event *__events,
160 + int __maxevents, int __timeout,
161 + __const __sigset_t *__ss);
162 +
163 +__END_DECLS
164 +
165 +#endif /* sys/epoll.h */
166 --- ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
167 +++ ports/sysdeps/unix/sysv/linux/hppa/sys/eventfd.h
168 @@ -0,0 +1,54 @@
169 +/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
170 + This file is part of the GNU C Library.
171 +
172 + The GNU C Library is free software; you can redistribute it and/or
173 + modify it under the terms of the GNU Lesser General Public
174 + License as published by the Free Software Foundation; either
175 + version 2.1 of the License, or (at your option) any later version.
176 +
177 + The GNU C Library is distributed in the hope that it will be useful,
178 + but WITHOUT ANY WARRANTY; without even the implied warranty of
179 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
180 + Lesser General Public License for more details.
181 +
182 + You should have received a copy of the GNU Lesser General Public
183 + License along with the GNU C Library; if not, write to the Free
184 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
185 + 02111-1307 USA. */
186 +
187 +#ifndef _SYS_EVENTFD_H
188 +#define _SYS_EVENTFD_H 1
189 +
190 +#include <stdint.h>
191 +
192 +
193 +/* Type for event counter. */
194 +typedef uint64_t eventfd_t;
195 +
196 +/* Flags for signalfd. */
197 +enum
198 + {
199 + EFD_SEMAPHORE = 1,
200 +#define EFD_SEMAPHORE EFD_SEMAPHORE
201 + EFD_CLOEXEC = 010000000,
202 +#define EFD_CLOEXEC EFD_CLOEXEC
203 + EFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
204 +#define EFD_NONBLOCK EFD_NONBLOCK
205 + };
206 +
207 +
208 +__BEGIN_DECLS
209 +
210 +/* Return file descriptor for generic event channel. Set initial
211 + value to COUNT. */
212 +extern int eventfd (int __count, int __flags) __THROW;
213 +
214 +/* Read event counter and possibly wait for events. */
215 +extern int eventfd_read (int __fd, eventfd_t *__value);
216 +
217 +/* Increment event counter. */
218 +extern int eventfd_write (int __fd, eventfd_t __value);
219 +
220 +__END_DECLS
221 +
222 +#endif /* sys/eventfd.h */
223 --- ports/sysdeps/unix/sysv/linux/hppa/sys/inotify.h
224 +++ ports/sysdeps/unix/sysv/linux/hppa/sys/inotify.h
225 @@ -0,0 +1,105 @@
226 +/* Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
227 + This file is part of the GNU C Library.
228 +
229 + The GNU C Library is free software; you can redistribute it and/or
230 + modify it under the terms of the GNU Lesser General Public
231 + License as published by the Free Software Foundation; either
232 + version 2.1 of the License, or (at your option) any later version.
233 +
234 + The GNU C Library is distributed in the hope that it will be useful,
235 + but WITHOUT ANY WARRANTY; without even the implied warranty of
236 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
237 + Lesser General Public License for more details.
238 +
239 + You should have received a copy of the GNU Lesser General Public
240 + License along with the GNU C Library; if not, write to the Free
241 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
242 + 02111-1307 USA. */
243 +
244 +#ifndef _SYS_INOTIFY_H
245 +#define _SYS_INOTIFY_H 1
246 +
247 +#include <stdint.h>
248 +
249 +
250 +/* Flags for the parameter of inotify_init1. */
251 +enum
252 + {
253 + IN_CLOEXEC = 010000000,
254 +#define IN_CLOEXEC IN_CLOEXEC
255 + IN_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */
256 +#define IN_NONBLOCK IN_NONBLOCK
257 + };
258 +
259 +
260 +/* Structure describing an inotify event. */
261 +struct inotify_event
262 +{
263 + int wd; /* Watch descriptor. */
264 + uint32_t mask; /* Watch mask. */
265 + uint32_t cookie; /* Cookie to synchronize two events. */
266 + uint32_t len; /* Length (including NULs) of name. */
267 + char name __flexarr; /* Name. */
268 +};
269 +
270 +
271 +/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */
272 +#define IN_ACCESS 0x00000001 /* File was accessed. */
273 +#define IN_MODIFY 0x00000002 /* File was modified. */
274 +#define IN_ATTRIB 0x00000004 /* Metadata changed. */
275 +#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */
276 +#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */
277 +#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
278 +#define IN_OPEN 0x00000020 /* File was opened. */
279 +#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */
280 +#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */
281 +#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
282 +#define IN_CREATE 0x00000100 /* Subfile was created. */
283 +#define IN_DELETE 0x00000200 /* Subfile was deleted. */
284 +#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */
285 +#define IN_MOVE_SELF 0x00000800 /* Self was moved. */
286 +
287 +/* Events sent by the kernel. */
288 +#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */
289 +#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */
290 +#define IN_IGNORED 0x00008000 /* File was ignored. */
291 +
292 +/* Helper events. */
293 +#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
294 +#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
295 +
296 +/* Special flags. */
297 +#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a
298 + directory. */
299 +#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
300 +#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already
301 + existing watch. */
302 +#define IN_ISDIR 0x40000000 /* Event occurred against dir. */
303 +#define IN_ONESHOT 0x80000000 /* Only send event once. */
304 +
305 +/* All events which a program can wait on. */
306 +#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
307 + | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
308 + | IN_MOVED_TO | IN_CREATE | IN_DELETE \
309 + | IN_DELETE_SELF | IN_MOVE_SELF)
310 +
311 +
312 +__BEGIN_DECLS
313 +
314 +/* Create and initialize inotify instance. */
315 +extern int inotify_init (void) __THROW;
316 +
317 +/* Create and initialize inotify instance. */
318 +extern int inotify_init1 (int __flags) __THROW;
319 +
320 +/* Add watch of object NAME to inotify instance FD. Notify about
321 + events specified by MASK. */
322 +extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
323 + __THROW;
324 +
325 +/* Remove the watch specified by WD from the inotify instance FD. */
326 +extern int inotify_rm_watch (int __fd, int __wd) __THROW;
327 +
328 +__END_DECLS
329 +
330 +#endif /* sys/inotify.h */
331 --- ports/sysdeps/unix/sysv/linux/hppa/sys/signalfd.h
332 +++ ports/sysdeps/unix/sysv/linux/hppa/sys/signalfd.h
333 @@ -0,0 +1,66 @@
334 +/* Copyright (C) 2007, 2008 Free Software Foundation, Inc.
335 + This file is part of the GNU C Library.
336 +
337 + The GNU C Library is free software; you can redistribute it and/or
338 + modify it under the terms of the GNU Lesser General Public
339 + License as published by the Free Software Foundation; either
340 + version 2.1 of the License, or (at your option) any later version.
341 +
342 + The GNU C Library is distributed in the hope that it will be useful,
343 + but WITHOUT ANY WARRANTY; without even the implied warranty of
344 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
345 + Lesser General Public License for more details.
346 +
347 + You should have received a copy of the GNU Lesser General Public
348 + License along with the GNU C Library; if not, write to the Free
349 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
350 + 02111-1307 USA. */
351 +
352 +#ifndef _SYS_SIGNALFD_H
353 +#define _SYS_SIGNALFD_H 1
354 +
355 +#define __need_sigset_t
356 +#include <signal.h>
357 +#include <stdint.h>
358 +
359 +
360 +struct signalfd_siginfo
361 +{
362 + uint32_t ssi_signo;
363 + int32_t ssi_errno;
364 + int32_t ssi_code;
365 + uint32_t ssi_pid;
366 + uint32_t ssi_uid;
367 + int32_t ssi_fd;
368 + uint32_t ssi_tid;
369 + uint32_t ssi_band;
370 + uint32_t ssi_overrun;
371 + uint32_t ssi_trapno;
372 + int32_t ssi_status;
373 + int32_t ssi_int;
374 + uint64_t ssi_ptr;
375 + uint64_t ssi_utime;
376 + uint64_t ssi_stime;
377 + uint64_t ssi_addr;
378 + uint8_t __pad[48];
379 +};
380 +
381 +/* Flags for signalfd. */
382 +enum
383 + {
384 + SFD_CLOEXEC = 010000000,
385 +#define SFD_CLOEXEC SFD_CLOEXEC
386 + SFD_NONBLOCK = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
387 +#define SFD_NONBLOCK SFD_NONBLOCK
388 + };
389 +
390 +__BEGIN_DECLS
391 +
392 +/* Request notification for delivery of signals in MASK to be
393 + performed using descriptor FD.*/
394 +extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
395 + __THROW __nonnull ((2));
396 +
397 +__END_DECLS
398 +
399 +#endif /* sys/signalfd.h */
400 --- ports/sysdeps/unix/sysv/linux/hppa/sys/timerfd.h
401 +++ ports/sysdeps/unix/sysv/linux/hppa/sys/timerfd.h
402 @@ -0,0 +1,60 @@
403 +/* Copyright (C) 2008 Free Software Foundation, Inc.
404 + This file is part of the GNU C Library.
405 +
406 + The GNU C Library is free software; you can redistribute it and/or
407 + modify it under the terms of the GNU Lesser General Public
408 + License as published by the Free Software Foundation; either
409 + version 2.1 of the License, or (at your option) any later version.
410 +
411 + The GNU C Library is distributed in the hope that it will be useful,
412 + but WITHOUT ANY WARRANTY; without even the implied warranty of
413 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
414 + Lesser General Public License for more details.
415 +
416 + You should have received a copy of the GNU Lesser General Public
417 + License along with the GNU C Library; if not, write to the Free
418 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
419 + 02111-1307 USA. */
420 +
421 +#ifndef _SYS_TIMERFD_H
422 +#define _SYS_TIMERFD_H 1
423 +
424 +#include <time.h>
425 +
426 +
427 +/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
428 +enum
429 + {
430 + TFD_CLOEXEC = 010000000,
431 +#define TFD_CLOEXEC TFD_CLOEXEC
432 + TFD_NONBLOCK = 000200004 /* HPUX has separate NDELAY & NONBLOCK */
433 +#define TFD_NONBLOCK TFD_NONBLOCK
434 + };
435 +
436 +
437 +/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
438 +enum
439 + {
440 + TFD_TIMER_ABSTIME = 1 << 0
441 +#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
442 + };
443 +
444 +
445 +__BEGIN_DECLS
446 +
447 +/* Return file descriptor for new interval timer source. */
448 +extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
449 +
450 +/* Set next expiration time of interval timer source UFD to UTMR. If
451 + FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
452 + absolute. Optionally return the old expiration time in OTMR. */
453 +extern int timerfd_settime (int __ufd, int __flags,
454 + __const struct itimerspec *__utmr,
455 + struct itimerspec *__otmr) __THROW;
456 +
457 +/* Return the next expiration time of UFD. */
458 +extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
459 +
460 +__END_DECLS
461 +
462 +#endif /* sys/timerfd.h */