]>
Commit | Line | Data |
---|---|---|
81f80d8c MF |
1 | # 1 "buf/buf0buf.c" |
2 | # 1 "<built-in>" | |
3 | # 1 "<command-line>" | |
4 | # 1 "buf/buf0buf.c" | |
5 | # 23 "buf/buf0buf.c" | |
6 | # 1 "./include/buf0buf.h" 1 | |
7 | # 26 "./include/buf0buf.h" | |
8 | # 1 "./include/univ.i" 1 | |
9 | # 33 "./include/univ.i" | |
10 | # 1 "./../include/my_global.h" 1 | |
11 | # 83 "./../include/my_global.h" | |
12 | # 1 "./../include/my_config.h" 1 | |
13 | # 84 "./../include/my_global.h" 2 | |
14 | # 241 "./../include/my_global.h" | |
15 | # 1 "/usr/include/pthread.h" 1 3 4 | |
16 | # 23 "/usr/include/pthread.h" 3 4 | |
17 | # 1 "/usr/include/features.h" 1 3 4 | |
18 | # 347 "/usr/include/features.h" 3 4 | |
19 | # 1 "/usr/include/sys/cdefs.h" 1 3 4 | |
20 | # 353 "/usr/include/sys/cdefs.h" 3 4 | |
21 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
22 | # 354 "/usr/include/sys/cdefs.h" 2 3 4 | |
23 | # 348 "/usr/include/features.h" 2 3 4 | |
24 | # 371 "/usr/include/features.h" 3 4 | |
25 | # 1 "/usr/include/gnu/stubs.h" 1 3 4 | |
26 | ||
27 | ||
28 | ||
29 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
30 | # 5 "/usr/include/gnu/stubs.h" 2 3 4 | |
31 | ||
32 | ||
33 | ||
34 | ||
35 | # 1 "/usr/include/gnu/stubs-64.h" 1 3 4 | |
36 | # 10 "/usr/include/gnu/stubs.h" 2 3 4 | |
37 | # 372 "/usr/include/features.h" 2 3 4 | |
38 | # 24 "/usr/include/pthread.h" 2 3 4 | |
39 | # 1 "/usr/include/endian.h" 1 3 4 | |
40 | # 37 "/usr/include/endian.h" 3 4 | |
41 | # 1 "/usr/include/bits/endian.h" 1 3 4 | |
42 | # 38 "/usr/include/endian.h" 2 3 4 | |
43 | # 61 "/usr/include/endian.h" 3 4 | |
44 | # 1 "/usr/include/bits/byteswap.h" 1 3 4 | |
45 | # 62 "/usr/include/endian.h" 2 3 4 | |
46 | # 25 "/usr/include/pthread.h" 2 3 4 | |
47 | # 1 "/usr/include/sched.h" 1 3 4 | |
48 | # 26 "/usr/include/sched.h" 3 4 | |
49 | # 1 "/usr/include/bits/types.h" 1 3 4 | |
50 | # 28 "/usr/include/bits/types.h" 3 4 | |
51 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
52 | # 29 "/usr/include/bits/types.h" 2 3 4 | |
53 | ||
54 | ||
55 | typedef unsigned char __u_char; | |
56 | typedef unsigned short int __u_short; | |
57 | typedef unsigned int __u_int; | |
58 | typedef unsigned long int __u_long; | |
59 | ||
60 | ||
61 | typedef signed char __int8_t; | |
62 | typedef unsigned char __uint8_t; | |
63 | typedef signed short int __int16_t; | |
64 | typedef unsigned short int __uint16_t; | |
65 | typedef signed int __int32_t; | |
66 | typedef unsigned int __uint32_t; | |
67 | ||
68 | typedef signed long int __int64_t; | |
69 | typedef unsigned long int __uint64_t; | |
70 | ||
71 | ||
72 | ||
73 | ||
74 | ||
75 | ||
76 | ||
77 | typedef long int __quad_t; | |
78 | typedef unsigned long int __u_quad_t; | |
79 | # 131 "/usr/include/bits/types.h" 3 4 | |
80 | # 1 "/usr/include/bits/typesizes.h" 1 3 4 | |
81 | # 132 "/usr/include/bits/types.h" 2 3 4 | |
82 | ||
83 | ||
84 | typedef unsigned long int __dev_t; | |
85 | typedef unsigned int __uid_t; | |
86 | typedef unsigned int __gid_t; | |
87 | typedef unsigned long int __ino_t; | |
88 | typedef unsigned long int __ino64_t; | |
89 | typedef unsigned int __mode_t; | |
90 | typedef unsigned long int __nlink_t; | |
91 | typedef long int __off_t; | |
92 | typedef long int __off64_t; | |
93 | typedef int __pid_t; | |
94 | typedef struct { int __val[2]; } __fsid_t; | |
95 | typedef long int __clock_t; | |
96 | typedef unsigned long int __rlim_t; | |
97 | typedef unsigned long int __rlim64_t; | |
98 | typedef unsigned int __id_t; | |
99 | typedef long int __time_t; | |
100 | typedef unsigned int __useconds_t; | |
101 | typedef long int __suseconds_t; | |
102 | ||
103 | typedef int __daddr_t; | |
104 | typedef long int __swblk_t; | |
105 | typedef int __key_t; | |
106 | ||
107 | ||
108 | typedef int __clockid_t; | |
109 | ||
110 | ||
111 | typedef void * __timer_t; | |
112 | ||
113 | ||
114 | typedef long int __blksize_t; | |
115 | ||
116 | ||
117 | ||
118 | ||
119 | typedef long int __blkcnt_t; | |
120 | typedef long int __blkcnt64_t; | |
121 | ||
122 | ||
123 | typedef unsigned long int __fsblkcnt_t; | |
124 | typedef unsigned long int __fsblkcnt64_t; | |
125 | ||
126 | ||
127 | typedef unsigned long int __fsfilcnt_t; | |
128 | typedef unsigned long int __fsfilcnt64_t; | |
129 | ||
130 | typedef long int __ssize_t; | |
131 | ||
132 | ||
133 | ||
134 | typedef __off64_t __loff_t; | |
135 | typedef __quad_t *__qaddr_t; | |
136 | typedef char *__caddr_t; | |
137 | ||
138 | ||
139 | typedef long int __intptr_t; | |
140 | ||
141 | ||
142 | typedef unsigned int __socklen_t; | |
143 | # 27 "/usr/include/sched.h" 2 3 4 | |
144 | ||
145 | ||
146 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
147 | # 214 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4 | |
148 | typedef long unsigned int size_t; | |
149 | # 30 "/usr/include/sched.h" 2 3 4 | |
150 | ||
151 | ||
152 | # 1 "/usr/include/time.h" 1 3 4 | |
153 | # 120 "/usr/include/time.h" 3 4 | |
154 | struct timespec | |
155 | { | |
156 | __time_t tv_sec; | |
157 | long int tv_nsec; | |
158 | }; | |
159 | # 33 "/usr/include/sched.h" 2 3 4 | |
160 | ||
161 | ||
162 | # 1 "/usr/include/bits/sched.h" 1 3 4 | |
163 | # 71 "/usr/include/bits/sched.h" 3 4 | |
164 | struct sched_param | |
165 | { | |
166 | int __sched_priority; | |
167 | }; | |
168 | ||
169 | ||
170 | ||
171 | ||
172 | ||
173 | extern int clone (int (*__fn) (void *__arg), void *__child_stack, | |
174 | int __flags, void *__arg, ...) __attribute__ ((__nothrow__)); | |
175 | ||
176 | ||
177 | extern int unshare (int __flags) __attribute__ ((__nothrow__)); | |
178 | ||
179 | ||
180 | extern int sched_getcpu (void) __attribute__ ((__nothrow__)); | |
181 | ||
182 | ||
183 | ||
184 | ||
185 | ||
186 | ||
187 | ||
188 | ||
189 | ||
190 | ||
191 | struct __sched_param | |
192 | { | |
193 | int __sched_priority; | |
194 | }; | |
195 | # 113 "/usr/include/bits/sched.h" 3 4 | |
196 | typedef unsigned long int __cpu_mask; | |
197 | ||
198 | ||
199 | ||
200 | ||
201 | ||
202 | ||
203 | typedef struct | |
204 | { | |
205 | __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; | |
206 | } cpu_set_t; | |
207 | # 196 "/usr/include/bits/sched.h" 3 4 | |
208 | ||
209 | ||
210 | extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp) | |
211 | __attribute__ ((__nothrow__)); | |
212 | extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
213 | extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__)); | |
214 | ||
215 | ||
216 | # 36 "/usr/include/sched.h" 2 3 4 | |
217 | ||
218 | ||
219 | ||
220 | ||
221 | ||
222 | ||
223 | ||
224 | extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param) | |
225 | __attribute__ ((__nothrow__)); | |
226 | ||
227 | ||
228 | extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__)); | |
229 | ||
230 | ||
231 | extern int sched_setscheduler (__pid_t __pid, int __policy, | |
232 | __const struct sched_param *__param) __attribute__ ((__nothrow__)); | |
233 | ||
234 | ||
235 | extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__)); | |
236 | ||
237 | ||
238 | extern int sched_yield (void) __attribute__ ((__nothrow__)); | |
239 | ||
240 | ||
241 | extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__)); | |
242 | ||
243 | ||
244 | extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__)); | |
245 | ||
246 | ||
247 | extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__)); | |
248 | # 110 "/usr/include/sched.h" 3 4 | |
249 | extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize, | |
250 | __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); | |
251 | ||
252 | ||
253 | extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize, | |
254 | cpu_set_t *__cpuset) __attribute__ ((__nothrow__)); | |
255 | ||
256 | ||
257 | ||
258 | # 26 "/usr/include/pthread.h" 2 3 4 | |
259 | # 1 "/usr/include/time.h" 1 3 4 | |
260 | # 30 "/usr/include/time.h" 3 4 | |
261 | ||
262 | ||
263 | ||
264 | ||
265 | ||
266 | ||
267 | ||
268 | ||
269 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
270 | # 39 "/usr/include/time.h" 2 3 4 | |
271 | ||
272 | ||
273 | ||
274 | # 1 "/usr/include/bits/time.h" 1 3 4 | |
275 | # 43 "/usr/include/time.h" 2 3 4 | |
276 | # 58 "/usr/include/time.h" 3 4 | |
277 | ||
278 | ||
279 | typedef __clock_t clock_t; | |
280 | ||
281 | ||
282 | ||
283 | # 74 "/usr/include/time.h" 3 4 | |
284 | ||
285 | ||
286 | typedef __time_t time_t; | |
287 | ||
288 | ||
289 | ||
290 | # 92 "/usr/include/time.h" 3 4 | |
291 | typedef __clockid_t clockid_t; | |
292 | # 104 "/usr/include/time.h" 3 4 | |
293 | typedef __timer_t timer_t; | |
294 | # 131 "/usr/include/time.h" 3 4 | |
295 | ||
296 | ||
297 | struct tm | |
298 | { | |
299 | int tm_sec; | |
300 | int tm_min; | |
301 | int tm_hour; | |
302 | int tm_mday; | |
303 | int tm_mon; | |
304 | int tm_year; | |
305 | int tm_wday; | |
306 | int tm_yday; | |
307 | int tm_isdst; | |
308 | ||
309 | ||
310 | long int tm_gmtoff; | |
311 | __const char *tm_zone; | |
312 | ||
313 | ||
314 | ||
315 | ||
316 | }; | |
317 | ||
318 | ||
319 | ||
320 | ||
321 | ||
322 | ||
323 | ||
324 | ||
325 | struct itimerspec | |
326 | { | |
327 | struct timespec it_interval; | |
328 | struct timespec it_value; | |
329 | }; | |
330 | ||
331 | ||
332 | struct sigevent; | |
333 | ||
334 | ||
335 | ||
336 | ||
337 | ||
338 | typedef __pid_t pid_t; | |
339 | ||
340 | ||
341 | ||
342 | ||
343 | ||
344 | ||
345 | ||
346 | ||
347 | extern clock_t clock (void) __attribute__ ((__nothrow__)); | |
348 | ||
349 | ||
350 | extern time_t time (time_t *__timer) __attribute__ ((__nothrow__)); | |
351 | ||
352 | ||
353 | extern double difftime (time_t __time1, time_t __time0) | |
354 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
355 | ||
356 | ||
357 | extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__)); | |
358 | ||
359 | ||
360 | ||
361 | ||
362 | ||
363 | extern size_t strftime (char *__restrict __s, size_t __maxsize, | |
364 | __const char *__restrict __format, | |
365 | __const struct tm *__restrict __tp) __attribute__ ((__nothrow__)); | |
366 | ||
367 | ||
368 | ||
369 | ||
370 | ||
371 | extern char *strptime (__const char *__restrict __s, | |
372 | __const char *__restrict __fmt, struct tm *__tp) | |
373 | __attribute__ ((__nothrow__)); | |
374 | ||
375 | ||
376 | ||
377 | ||
378 | ||
379 | # 1 "/usr/include/xlocale.h" 1 3 4 | |
380 | # 28 "/usr/include/xlocale.h" 3 4 | |
381 | typedef struct __locale_struct | |
382 | { | |
383 | ||
384 | struct locale_data *__locales[13]; | |
385 | ||
386 | ||
387 | const unsigned short int *__ctype_b; | |
388 | const int *__ctype_tolower; | |
389 | const int *__ctype_toupper; | |
390 | ||
391 | ||
392 | const char *__names[13]; | |
393 | } *__locale_t; | |
394 | ||
395 | ||
396 | typedef __locale_t locale_t; | |
397 | # 216 "/usr/include/time.h" 2 3 4 | |
398 | ||
399 | extern size_t strftime_l (char *__restrict __s, size_t __maxsize, | |
400 | __const char *__restrict __format, | |
401 | __const struct tm *__restrict __tp, | |
402 | __locale_t __loc) __attribute__ ((__nothrow__)); | |
403 | ||
404 | ||
405 | ||
406 | extern char *strptime_l (__const char *__restrict __s, | |
407 | __const char *__restrict __fmt, struct tm *__tp, | |
408 | __locale_t __loc) __attribute__ ((__nothrow__)); | |
409 | ||
410 | ||
411 | ||
412 | ||
413 | ||
414 | ||
415 | extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__)); | |
416 | ||
417 | ||
418 | ||
419 | extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__)); | |
420 | ||
421 | ||
422 | ||
423 | ||
424 | ||
425 | extern struct tm *gmtime_r (__const time_t *__restrict __timer, | |
426 | struct tm *__restrict __tp) __attribute__ ((__nothrow__)); | |
427 | ||
428 | ||
429 | ||
430 | extern struct tm *localtime_r (__const time_t *__restrict __timer, | |
431 | struct tm *__restrict __tp) __attribute__ ((__nothrow__)); | |
432 | ||
433 | ||
434 | ||
435 | ||
436 | ||
437 | extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__)); | |
438 | ||
439 | ||
440 | extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__)); | |
441 | ||
442 | ||
443 | ||
444 | ||
445 | ||
446 | ||
447 | ||
448 | extern char *asctime_r (__const struct tm *__restrict __tp, | |
449 | char *__restrict __buf) __attribute__ ((__nothrow__)); | |
450 | ||
451 | ||
452 | extern char *ctime_r (__const time_t *__restrict __timer, | |
453 | char *__restrict __buf) __attribute__ ((__nothrow__)); | |
454 | ||
455 | ||
456 | ||
457 | ||
458 | extern char *__tzname[2]; | |
459 | extern int __daylight; | |
460 | extern long int __timezone; | |
461 | ||
462 | ||
463 | ||
464 | ||
465 | extern char *tzname[2]; | |
466 | ||
467 | ||
468 | ||
469 | extern void tzset (void) __attribute__ ((__nothrow__)); | |
470 | ||
471 | ||
472 | ||
473 | extern int daylight; | |
474 | extern long int timezone; | |
475 | ||
476 | ||
477 | ||
478 | ||
479 | ||
480 | extern int stime (__const time_t *__when) __attribute__ ((__nothrow__)); | |
481 | # 313 "/usr/include/time.h" 3 4 | |
482 | extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__)); | |
483 | ||
484 | ||
485 | extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__)); | |
486 | ||
487 | ||
488 | extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
489 | # 328 "/usr/include/time.h" 3 4 | |
490 | extern int nanosleep (__const struct timespec *__requested_time, | |
491 | struct timespec *__remaining); | |
492 | ||
493 | ||
494 | ||
495 | extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__)); | |
496 | ||
497 | ||
498 | extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__)); | |
499 | ||
500 | ||
501 | extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp) | |
502 | __attribute__ ((__nothrow__)); | |
503 | ||
504 | ||
505 | ||
506 | ||
507 | ||
508 | ||
509 | extern int clock_nanosleep (clockid_t __clock_id, int __flags, | |
510 | __const struct timespec *__req, | |
511 | struct timespec *__rem); | |
512 | ||
513 | ||
514 | extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__)); | |
515 | ||
516 | ||
517 | ||
518 | ||
519 | extern int timer_create (clockid_t __clock_id, | |
520 | struct sigevent *__restrict __evp, | |
521 | timer_t *__restrict __timerid) __attribute__ ((__nothrow__)); | |
522 | ||
523 | ||
524 | extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__)); | |
525 | ||
526 | ||
527 | extern int timer_settime (timer_t __timerid, int __flags, | |
528 | __const struct itimerspec *__restrict __value, | |
529 | struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__)); | |
530 | ||
531 | ||
532 | extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) | |
533 | __attribute__ ((__nothrow__)); | |
534 | ||
535 | ||
536 | extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__)); | |
537 | # 390 "/usr/include/time.h" 3 4 | |
538 | extern int getdate_err; | |
539 | # 399 "/usr/include/time.h" 3 4 | |
540 | extern struct tm *getdate (__const char *__string); | |
541 | # 413 "/usr/include/time.h" 3 4 | |
542 | extern int getdate_r (__const char *__restrict __string, | |
543 | struct tm *__restrict __resbufp); | |
544 | ||
545 | ||
546 | ||
547 | # 27 "/usr/include/pthread.h" 2 3 4 | |
548 | ||
549 | ||
550 | # 1 "/usr/include/signal.h" 1 3 4 | |
551 | # 31 "/usr/include/signal.h" 3 4 | |
552 | ||
553 | ||
554 | # 1 "/usr/include/bits/sigset.h" 1 3 4 | |
555 | # 24 "/usr/include/bits/sigset.h" 3 4 | |
556 | typedef int __sig_atomic_t; | |
557 | ||
558 | ||
559 | ||
560 | ||
561 | typedef struct | |
562 | { | |
563 | unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; | |
564 | } __sigset_t; | |
565 | # 34 "/usr/include/signal.h" 2 3 4 | |
566 | # 50 "/usr/include/signal.h" 3 4 | |
567 | typedef __sigset_t sigset_t; | |
568 | # 408 "/usr/include/signal.h" 3 4 | |
569 | ||
570 | # 30 "/usr/include/pthread.h" 2 3 4 | |
571 | # 1 "/usr/include/bits/pthreadtypes.h" 1 3 4 | |
572 | # 24 "/usr/include/bits/pthreadtypes.h" 3 4 | |
573 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
574 | # 25 "/usr/include/bits/pthreadtypes.h" 2 3 4 | |
575 | # 51 "/usr/include/bits/pthreadtypes.h" 3 4 | |
576 | typedef unsigned long int pthread_t; | |
577 | ||
578 | ||
579 | typedef union | |
580 | { | |
581 | char __size[56]; | |
582 | long int __align; | |
583 | } pthread_attr_t; | |
584 | ||
585 | ||
586 | ||
587 | typedef struct __pthread_internal_list | |
588 | { | |
589 | struct __pthread_internal_list *__prev; | |
590 | struct __pthread_internal_list *__next; | |
591 | } __pthread_list_t; | |
592 | # 77 "/usr/include/bits/pthreadtypes.h" 3 4 | |
593 | typedef union | |
594 | { | |
595 | struct __pthread_mutex_s | |
596 | { | |
597 | int __lock; | |
598 | unsigned int __count; | |
599 | int __owner; | |
600 | ||
601 | unsigned int __nusers; | |
602 | ||
603 | ||
604 | ||
605 | int __kind; | |
606 | ||
607 | int __spins; | |
608 | __pthread_list_t __list; | |
609 | # 102 "/usr/include/bits/pthreadtypes.h" 3 4 | |
610 | } __data; | |
611 | char __size[40]; | |
612 | long int __align; | |
613 | } pthread_mutex_t; | |
614 | ||
615 | typedef union | |
616 | { | |
617 | char __size[4]; | |
618 | int __align; | |
619 | } pthread_mutexattr_t; | |
620 | ||
621 | ||
622 | ||
623 | ||
624 | typedef union | |
625 | { | |
626 | struct | |
627 | { | |
628 | int __lock; | |
629 | unsigned int __futex; | |
630 | __extension__ unsigned long long int __total_seq; | |
631 | __extension__ unsigned long long int __wakeup_seq; | |
632 | __extension__ unsigned long long int __woken_seq; | |
633 | void *__mutex; | |
634 | unsigned int __nwaiters; | |
635 | unsigned int __broadcast_seq; | |
636 | } __data; | |
637 | char __size[48]; | |
638 | __extension__ long long int __align; | |
639 | } pthread_cond_t; | |
640 | ||
641 | typedef union | |
642 | { | |
643 | char __size[4]; | |
644 | int __align; | |
645 | } pthread_condattr_t; | |
646 | ||
647 | ||
648 | ||
649 | typedef unsigned int pthread_key_t; | |
650 | ||
651 | ||
652 | ||
653 | typedef int pthread_once_t; | |
654 | ||
655 | ||
656 | ||
657 | ||
658 | ||
659 | typedef union | |
660 | { | |
661 | ||
662 | struct | |
663 | { | |
664 | int __lock; | |
665 | unsigned int __nr_readers; | |
666 | unsigned int __readers_wakeup; | |
667 | unsigned int __writer_wakeup; | |
668 | unsigned int __nr_readers_queued; | |
669 | unsigned int __nr_writers_queued; | |
670 | int __writer; | |
671 | int __shared; | |
672 | unsigned long int __pad1; | |
673 | unsigned long int __pad2; | |
674 | ||
675 | ||
676 | unsigned int __flags; | |
677 | } __data; | |
678 | # 188 "/usr/include/bits/pthreadtypes.h" 3 4 | |
679 | char __size[56]; | |
680 | long int __align; | |
681 | } pthread_rwlock_t; | |
682 | ||
683 | typedef union | |
684 | { | |
685 | char __size[8]; | |
686 | long int __align; | |
687 | } pthread_rwlockattr_t; | |
688 | ||
689 | ||
690 | ||
691 | ||
692 | ||
693 | typedef volatile int pthread_spinlock_t; | |
694 | ||
695 | ||
696 | ||
697 | ||
698 | typedef union | |
699 | { | |
700 | char __size[32]; | |
701 | long int __align; | |
702 | } pthread_barrier_t; | |
703 | ||
704 | typedef union | |
705 | { | |
706 | char __size[4]; | |
707 | int __align; | |
708 | } pthread_barrierattr_t; | |
709 | # 31 "/usr/include/pthread.h" 2 3 4 | |
710 | # 1 "/usr/include/bits/setjmp.h" 1 3 4 | |
711 | # 33 "/usr/include/bits/setjmp.h" 3 4 | |
712 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
713 | # 34 "/usr/include/bits/setjmp.h" 2 3 4 | |
714 | # 44 "/usr/include/bits/setjmp.h" 3 4 | |
715 | typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16))); | |
716 | # 32 "/usr/include/pthread.h" 2 3 4 | |
717 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
718 | # 33 "/usr/include/pthread.h" 2 3 4 | |
719 | ||
720 | ||
721 | ||
722 | enum | |
723 | { | |
724 | PTHREAD_CREATE_JOINABLE, | |
725 | ||
726 | PTHREAD_CREATE_DETACHED | |
727 | ||
728 | }; | |
729 | ||
730 | ||
731 | ||
732 | enum | |
733 | { | |
734 | PTHREAD_MUTEX_TIMED_NP, | |
735 | PTHREAD_MUTEX_RECURSIVE_NP, | |
736 | PTHREAD_MUTEX_ERRORCHECK_NP, | |
737 | PTHREAD_MUTEX_ADAPTIVE_NP | |
738 | ||
739 | , | |
740 | PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP, | |
741 | PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP, | |
742 | PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP, | |
743 | PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL | |
744 | ||
745 | ||
746 | ||
747 | , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP | |
748 | ||
749 | }; | |
750 | ||
751 | ||
752 | ||
753 | ||
754 | enum | |
755 | { | |
756 | PTHREAD_MUTEX_STALLED, | |
757 | PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED, | |
758 | PTHREAD_MUTEX_ROBUST, | |
759 | PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST | |
760 | }; | |
761 | ||
762 | ||
763 | ||
764 | ||
765 | ||
766 | enum | |
767 | { | |
768 | PTHREAD_PRIO_NONE, | |
769 | PTHREAD_PRIO_INHERIT, | |
770 | PTHREAD_PRIO_PROTECT | |
771 | }; | |
772 | # 117 "/usr/include/pthread.h" 3 4 | |
773 | enum | |
774 | { | |
775 | PTHREAD_RWLOCK_PREFER_READER_NP, | |
776 | PTHREAD_RWLOCK_PREFER_WRITER_NP, | |
777 | PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, | |
778 | PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP | |
779 | }; | |
780 | # 149 "/usr/include/pthread.h" 3 4 | |
781 | enum | |
782 | { | |
783 | PTHREAD_INHERIT_SCHED, | |
784 | ||
785 | PTHREAD_EXPLICIT_SCHED | |
786 | ||
787 | }; | |
788 | ||
789 | ||
790 | ||
791 | enum | |
792 | { | |
793 | PTHREAD_SCOPE_SYSTEM, | |
794 | ||
795 | PTHREAD_SCOPE_PROCESS | |
796 | ||
797 | }; | |
798 | ||
799 | ||
800 | ||
801 | enum | |
802 | { | |
803 | PTHREAD_PROCESS_PRIVATE, | |
804 | ||
805 | PTHREAD_PROCESS_SHARED | |
806 | ||
807 | }; | |
808 | # 184 "/usr/include/pthread.h" 3 4 | |
809 | struct _pthread_cleanup_buffer | |
810 | { | |
811 | void (*__routine) (void *); | |
812 | void *__arg; | |
813 | int __canceltype; | |
814 | struct _pthread_cleanup_buffer *__prev; | |
815 | }; | |
816 | ||
817 | ||
818 | enum | |
819 | { | |
820 | PTHREAD_CANCEL_ENABLE, | |
821 | ||
822 | PTHREAD_CANCEL_DISABLE | |
823 | ||
824 | }; | |
825 | enum | |
826 | { | |
827 | PTHREAD_CANCEL_DEFERRED, | |
828 | ||
829 | PTHREAD_CANCEL_ASYNCHRONOUS | |
830 | ||
831 | }; | |
832 | # 222 "/usr/include/pthread.h" 3 4 | |
833 | ||
834 | ||
835 | ||
836 | ||
837 | ||
838 | extern int pthread_create (pthread_t *__restrict __newthread, | |
839 | __const pthread_attr_t *__restrict __attr, | |
840 | void *(*__start_routine) (void *), | |
841 | void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); | |
842 | ||
843 | ||
844 | ||
845 | ||
846 | ||
847 | extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__)); | |
848 | ||
849 | ||
850 | ||
851 | ||
852 | ||
853 | ||
854 | ||
855 | extern int pthread_join (pthread_t __th, void **__thread_return); | |
856 | ||
857 | ||
858 | ||
859 | ||
860 | extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__)); | |
861 | ||
862 | ||
863 | ||
864 | ||
865 | ||
866 | ||
867 | ||
868 | extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return, | |
869 | __const struct timespec *__abstime); | |
870 | ||
871 | ||
872 | ||
873 | ||
874 | ||
875 | ||
876 | extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__)); | |
877 | ||
878 | ||
879 | ||
880 | extern pthread_t pthread_self (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
881 | ||
882 | ||
883 | extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__)); | |
884 | ||
885 | ||
886 | ||
887 | ||
888 | ||
889 | ||
890 | ||
891 | extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
892 | ||
893 | ||
894 | extern int pthread_attr_destroy (pthread_attr_t *__attr) | |
895 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
896 | ||
897 | ||
898 | extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr, | |
899 | int *__detachstate) | |
900 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
901 | ||
902 | ||
903 | extern int pthread_attr_setdetachstate (pthread_attr_t *__attr, | |
904 | int __detachstate) | |
905 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
906 | ||
907 | ||
908 | ||
909 | extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr, | |
910 | size_t *__guardsize) | |
911 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
912 | ||
913 | ||
914 | extern int pthread_attr_setguardsize (pthread_attr_t *__attr, | |
915 | size_t __guardsize) | |
916 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
917 | ||
918 | ||
919 | ||
920 | extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict | |
921 | __attr, | |
922 | struct sched_param *__restrict __param) | |
923 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
924 | ||
925 | ||
926 | extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr, | |
927 | __const struct sched_param *__restrict | |
928 | __param) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
929 | ||
930 | ||
931 | extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict | |
932 | __attr, int *__restrict __policy) | |
933 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
934 | ||
935 | ||
936 | extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy) | |
937 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
938 | ||
939 | ||
940 | extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict | |
941 | __attr, int *__restrict __inherit) | |
942 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
943 | ||
944 | ||
945 | extern int pthread_attr_setinheritsched (pthread_attr_t *__attr, | |
946 | int __inherit) | |
947 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
948 | ||
949 | ||
950 | ||
951 | extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr, | |
952 | int *__restrict __scope) | |
953 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
954 | ||
955 | ||
956 | extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope) | |
957 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
958 | ||
959 | ||
960 | extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict | |
961 | __attr, void **__restrict __stackaddr) | |
962 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__)); | |
963 | ||
964 | ||
965 | ||
966 | ||
967 | ||
968 | extern int pthread_attr_setstackaddr (pthread_attr_t *__attr, | |
969 | void *__stackaddr) | |
970 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)); | |
971 | ||
972 | ||
973 | extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict | |
974 | __attr, size_t *__restrict __stacksize) | |
975 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
976 | ||
977 | ||
978 | ||
979 | ||
980 | extern int pthread_attr_setstacksize (pthread_attr_t *__attr, | |
981 | size_t __stacksize) | |
982 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
983 | ||
984 | ||
985 | ||
986 | extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr, | |
987 | void **__restrict __stackaddr, | |
988 | size_t *__restrict __stacksize) | |
989 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); | |
990 | ||
991 | ||
992 | ||
993 | ||
994 | extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr, | |
995 | size_t __stacksize) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
996 | ||
997 | ||
998 | ||
999 | ||
1000 | ||
1001 | extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr, | |
1002 | size_t __cpusetsize, | |
1003 | __const cpu_set_t *__cpuset) | |
1004 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); | |
1005 | ||
1006 | ||
1007 | ||
1008 | extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr, | |
1009 | size_t __cpusetsize, | |
1010 | cpu_set_t *__cpuset) | |
1011 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); | |
1012 | ||
1013 | ||
1014 | ||
1015 | ||
1016 | ||
1017 | extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr) | |
1018 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
1019 | ||
1020 | ||
1021 | ||
1022 | ||
1023 | ||
1024 | ||
1025 | ||
1026 | extern int pthread_setschedparam (pthread_t __target_thread, int __policy, | |
1027 | __const struct sched_param *__param) | |
1028 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); | |
1029 | ||
1030 | ||
1031 | extern int pthread_getschedparam (pthread_t __target_thread, | |
1032 | int *__restrict __policy, | |
1033 | struct sched_param *__restrict __param) | |
1034 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
1035 | ||
1036 | ||
1037 | extern int pthread_setschedprio (pthread_t __target_thread, int __prio) | |
1038 | __attribute__ ((__nothrow__)); | |
1039 | ||
1040 | ||
1041 | ||
1042 | ||
1043 | extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__)); | |
1044 | ||
1045 | ||
1046 | extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__)); | |
1047 | ||
1048 | ||
1049 | ||
1050 | ||
1051 | ||
1052 | ||
1053 | ||
1054 | extern int pthread_yield (void) __attribute__ ((__nothrow__)); | |
1055 | ||
1056 | ||
1057 | ||
1058 | ||
1059 | extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize, | |
1060 | __const cpu_set_t *__cpuset) | |
1061 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); | |
1062 | ||
1063 | ||
1064 | extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize, | |
1065 | cpu_set_t *__cpuset) | |
1066 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); | |
1067 | # 468 "/usr/include/pthread.h" 3 4 | |
1068 | extern int pthread_once (pthread_once_t *__once_control, | |
1069 | void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2))); | |
1070 | # 480 "/usr/include/pthread.h" 3 4 | |
1071 | extern int pthread_setcancelstate (int __state, int *__oldstate); | |
1072 | ||
1073 | ||
1074 | ||
1075 | extern int pthread_setcanceltype (int __type, int *__oldtype); | |
1076 | ||
1077 | ||
1078 | extern int pthread_cancel (pthread_t __th); | |
1079 | ||
1080 | ||
1081 | ||
1082 | ||
1083 | extern void pthread_testcancel (void); | |
1084 | ||
1085 | ||
1086 | ||
1087 | ||
1088 | typedef struct | |
1089 | { | |
1090 | struct | |
1091 | { | |
1092 | __jmp_buf __cancel_jmp_buf; | |
1093 | int __mask_was_saved; | |
1094 | } __cancel_jmp_buf[1]; | |
1095 | void *__pad[4]; | |
1096 | } __pthread_unwind_buf_t __attribute__ ((__aligned__)); | |
1097 | # 514 "/usr/include/pthread.h" 3 4 | |
1098 | struct __pthread_cleanup_frame | |
1099 | { | |
1100 | void (*__cancel_routine) (void *); | |
1101 | void *__cancel_arg; | |
1102 | int __do_it; | |
1103 | int __cancel_type; | |
1104 | }; | |
1105 | # 654 "/usr/include/pthread.h" 3 4 | |
1106 | extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) | |
1107 | ; | |
1108 | # 666 "/usr/include/pthread.h" 3 4 | |
1109 | extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) | |
1110 | ; | |
1111 | # 689 "/usr/include/pthread.h" 3 4 | |
1112 | extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) | |
1113 | ; | |
1114 | # 702 "/usr/include/pthread.h" 3 4 | |
1115 | extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf) | |
1116 | ; | |
1117 | ||
1118 | ||
1119 | ||
1120 | extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) | |
1121 | __attribute__ ((__noreturn__)) | |
1122 | ||
1123 | __attribute__ ((__weak__)) | |
1124 | ||
1125 | ; | |
1126 | ||
1127 | ||
1128 | ||
1129 | struct __jmp_buf_tag; | |
1130 | extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__)); | |
1131 | ||
1132 | ||
1133 | ||
1134 | ||
1135 | ||
1136 | extern int pthread_mutex_init (pthread_mutex_t *__mutex, | |
1137 | __const pthread_mutexattr_t *__mutexattr) | |
1138 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1139 | ||
1140 | ||
1141 | extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) | |
1142 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1143 | ||
1144 | ||
1145 | extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) | |
1146 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1147 | ||
1148 | ||
1149 | extern int pthread_mutex_lock (pthread_mutex_t *__mutex) | |
1150 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1151 | ||
1152 | ||
1153 | ||
1154 | extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex, | |
1155 | __const struct timespec *__restrict | |
1156 | __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1157 | ||
1158 | ||
1159 | ||
1160 | extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) | |
1161 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1162 | ||
1163 | ||
1164 | ||
1165 | ||
1166 | extern int pthread_mutex_getprioceiling (__const pthread_mutex_t * | |
1167 | __restrict __mutex, | |
1168 | int *__restrict __prioceiling) | |
1169 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1170 | ||
1171 | ||
1172 | ||
1173 | extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex, | |
1174 | int __prioceiling, | |
1175 | int *__restrict __old_ceiling) | |
1176 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); | |
1177 | ||
1178 | ||
1179 | ||
1180 | ||
1181 | ||
1182 | extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) | |
1183 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1184 | ||
1185 | extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex) | |
1186 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1187 | # 782 "/usr/include/pthread.h" 3 4 | |
1188 | extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) | |
1189 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1190 | ||
1191 | ||
1192 | extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) | |
1193 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1194 | ||
1195 | ||
1196 | extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t * | |
1197 | __restrict __attr, | |
1198 | int *__restrict __pshared) | |
1199 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1200 | ||
1201 | ||
1202 | extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr, | |
1203 | int __pshared) | |
1204 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1205 | ||
1206 | ||
1207 | ||
1208 | extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict | |
1209 | __attr, int *__restrict __kind) | |
1210 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1211 | ||
1212 | ||
1213 | ||
1214 | ||
1215 | extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind) | |
1216 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1217 | ||
1218 | ||
1219 | extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t * | |
1220 | __restrict __attr, | |
1221 | int *__restrict __protocol) | |
1222 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1223 | ||
1224 | ||
1225 | ||
1226 | extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr, | |
1227 | int __protocol) | |
1228 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1229 | ||
1230 | ||
1231 | extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t * | |
1232 | __restrict __attr, | |
1233 | int *__restrict __prioceiling) | |
1234 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1235 | ||
1236 | ||
1237 | extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr, | |
1238 | int __prioceiling) | |
1239 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1240 | ||
1241 | ||
1242 | ||
1243 | ||
1244 | extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr, | |
1245 | int *__robustness) | |
1246 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1247 | ||
1248 | extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr, | |
1249 | int *__robustness) | |
1250 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1251 | ||
1252 | ||
1253 | ||
1254 | extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr, | |
1255 | int __robustness) | |
1256 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1257 | ||
1258 | extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr, | |
1259 | int __robustness) | |
1260 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1261 | # 864 "/usr/include/pthread.h" 3 4 | |
1262 | extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock, | |
1263 | __const pthread_rwlockattr_t *__restrict | |
1264 | __attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1265 | ||
1266 | ||
1267 | extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) | |
1268 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1269 | ||
1270 | ||
1271 | extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) | |
1272 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1273 | ||
1274 | ||
1275 | extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) | |
1276 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1277 | ||
1278 | ||
1279 | ||
1280 | extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock, | |
1281 | __const struct timespec *__restrict | |
1282 | __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1283 | ||
1284 | ||
1285 | ||
1286 | extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) | |
1287 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1288 | ||
1289 | ||
1290 | extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) | |
1291 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1292 | ||
1293 | ||
1294 | ||
1295 | extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock, | |
1296 | __const struct timespec *__restrict | |
1297 | __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1298 | ||
1299 | ||
1300 | ||
1301 | extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) | |
1302 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1303 | ||
1304 | ||
1305 | ||
1306 | ||
1307 | ||
1308 | extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) | |
1309 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1310 | ||
1311 | ||
1312 | extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) | |
1313 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1314 | ||
1315 | ||
1316 | extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t * | |
1317 | __restrict __attr, | |
1318 | int *__restrict __pshared) | |
1319 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1320 | ||
1321 | ||
1322 | extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr, | |
1323 | int __pshared) | |
1324 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1325 | ||
1326 | ||
1327 | extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t * | |
1328 | __restrict __attr, | |
1329 | int *__restrict __pref) | |
1330 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1331 | ||
1332 | ||
1333 | extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr, | |
1334 | int __pref) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1335 | ||
1336 | ||
1337 | ||
1338 | ||
1339 | ||
1340 | ||
1341 | ||
1342 | extern int pthread_cond_init (pthread_cond_t *__restrict __cond, | |
1343 | __const pthread_condattr_t *__restrict | |
1344 | __cond_attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1345 | ||
1346 | ||
1347 | extern int pthread_cond_destroy (pthread_cond_t *__cond) | |
1348 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1349 | ||
1350 | ||
1351 | extern int pthread_cond_signal (pthread_cond_t *__cond) | |
1352 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1353 | ||
1354 | ||
1355 | extern int pthread_cond_broadcast (pthread_cond_t *__cond) | |
1356 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1357 | ||
1358 | ||
1359 | ||
1360 | ||
1361 | ||
1362 | ||
1363 | extern int pthread_cond_wait (pthread_cond_t *__restrict __cond, | |
1364 | pthread_mutex_t *__restrict __mutex) | |
1365 | __attribute__ ((__nonnull__ (1, 2))); | |
1366 | # 976 "/usr/include/pthread.h" 3 4 | |
1367 | extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond, | |
1368 | pthread_mutex_t *__restrict __mutex, | |
1369 | __const struct timespec *__restrict | |
1370 | __abstime) __attribute__ ((__nonnull__ (1, 2, 3))); | |
1371 | ||
1372 | ||
1373 | ||
1374 | ||
1375 | extern int pthread_condattr_init (pthread_condattr_t *__attr) | |
1376 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1377 | ||
1378 | ||
1379 | extern int pthread_condattr_destroy (pthread_condattr_t *__attr) | |
1380 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1381 | ||
1382 | ||
1383 | extern int pthread_condattr_getpshared (__const pthread_condattr_t * | |
1384 | __restrict __attr, | |
1385 | int *__restrict __pshared) | |
1386 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1387 | ||
1388 | ||
1389 | extern int pthread_condattr_setpshared (pthread_condattr_t *__attr, | |
1390 | int __pshared) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1391 | ||
1392 | ||
1393 | ||
1394 | extern int pthread_condattr_getclock (__const pthread_condattr_t * | |
1395 | __restrict __attr, | |
1396 | __clockid_t *__restrict __clock_id) | |
1397 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1398 | ||
1399 | ||
1400 | extern int pthread_condattr_setclock (pthread_condattr_t *__attr, | |
1401 | __clockid_t __clock_id) | |
1402 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1403 | # 1020 "/usr/include/pthread.h" 3 4 | |
1404 | extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared) | |
1405 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1406 | ||
1407 | ||
1408 | extern int pthread_spin_destroy (pthread_spinlock_t *__lock) | |
1409 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1410 | ||
1411 | ||
1412 | extern int pthread_spin_lock (pthread_spinlock_t *__lock) | |
1413 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1414 | ||
1415 | ||
1416 | extern int pthread_spin_trylock (pthread_spinlock_t *__lock) | |
1417 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1418 | ||
1419 | ||
1420 | extern int pthread_spin_unlock (pthread_spinlock_t *__lock) | |
1421 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1422 | ||
1423 | ||
1424 | ||
1425 | ||
1426 | ||
1427 | ||
1428 | extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier, | |
1429 | __const pthread_barrierattr_t *__restrict | |
1430 | __attr, unsigned int __count) | |
1431 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1432 | ||
1433 | ||
1434 | extern int pthread_barrier_destroy (pthread_barrier_t *__barrier) | |
1435 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1436 | ||
1437 | ||
1438 | extern int pthread_barrier_wait (pthread_barrier_t *__barrier) | |
1439 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1440 | ||
1441 | ||
1442 | ||
1443 | extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr) | |
1444 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1445 | ||
1446 | ||
1447 | extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr) | |
1448 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1449 | ||
1450 | ||
1451 | extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t * | |
1452 | __restrict __attr, | |
1453 | int *__restrict __pshared) | |
1454 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
1455 | ||
1456 | ||
1457 | extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr, | |
1458 | int __pshared) | |
1459 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1460 | # 1087 "/usr/include/pthread.h" 3 4 | |
1461 | extern int pthread_key_create (pthread_key_t *__key, | |
1462 | void (*__destr_function) (void *)) | |
1463 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
1464 | ||
1465 | ||
1466 | extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__)); | |
1467 | ||
1468 | ||
1469 | extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__)); | |
1470 | ||
1471 | ||
1472 | extern int pthread_setspecific (pthread_key_t __key, | |
1473 | __const void *__pointer) __attribute__ ((__nothrow__)) ; | |
1474 | ||
1475 | ||
1476 | ||
1477 | ||
1478 | extern int pthread_getcpuclockid (pthread_t __thread_id, | |
1479 | __clockid_t *__clock_id) | |
1480 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
1481 | # 1121 "/usr/include/pthread.h" 3 4 | |
1482 | extern int pthread_atfork (void (*__prepare) (void), | |
1483 | void (*__parent) (void), | |
1484 | void (*__child) (void)) __attribute__ ((__nothrow__)); | |
1485 | ||
1486 | ||
1487 | ||
1488 | ||
1489 | extern __inline int | |
1490 | __attribute__ ((__nothrow__)) pthread_equal (pthread_t __thread1, pthread_t __thread2) | |
1491 | { | |
1492 | return __thread1 == __thread2; | |
1493 | } | |
1494 | ||
1495 | ||
1496 | ||
1497 | # 242 "./../include/my_global.h" 2 | |
1498 | # 311 "./../include/my_global.h" | |
1499 | # 1 "/usr/include/stdio.h" 1 3 4 | |
1500 | # 30 "/usr/include/stdio.h" 3 4 | |
1501 | ||
1502 | ||
1503 | ||
1504 | ||
1505 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
1506 | # 35 "/usr/include/stdio.h" 2 3 4 | |
1507 | # 45 "/usr/include/stdio.h" 3 4 | |
1508 | struct _IO_FILE; | |
1509 | ||
1510 | ||
1511 | ||
1512 | typedef struct _IO_FILE FILE; | |
1513 | ||
1514 | ||
1515 | ||
1516 | ||
1517 | ||
1518 | # 65 "/usr/include/stdio.h" 3 4 | |
1519 | typedef struct _IO_FILE __FILE; | |
1520 | # 75 "/usr/include/stdio.h" 3 4 | |
1521 | # 1 "/usr/include/libio.h" 1 3 4 | |
1522 | # 32 "/usr/include/libio.h" 3 4 | |
1523 | # 1 "/usr/include/_G_config.h" 1 3 4 | |
1524 | # 15 "/usr/include/_G_config.h" 3 4 | |
1525 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
1526 | # 16 "/usr/include/_G_config.h" 2 3 4 | |
1527 | ||
1528 | ||
1529 | ||
1530 | ||
1531 | # 1 "/usr/include/wchar.h" 1 3 4 | |
1532 | # 83 "/usr/include/wchar.h" 3 4 | |
1533 | typedef struct | |
1534 | { | |
1535 | int __count; | |
1536 | union | |
1537 | { | |
1538 | ||
1539 | unsigned int __wch; | |
1540 | ||
1541 | ||
1542 | ||
1543 | char __wchb[4]; | |
1544 | } __value; | |
1545 | } __mbstate_t; | |
1546 | # 21 "/usr/include/_G_config.h" 2 3 4 | |
1547 | ||
1548 | typedef struct | |
1549 | { | |
1550 | __off_t __pos; | |
1551 | __mbstate_t __state; | |
1552 | } _G_fpos_t; | |
1553 | typedef struct | |
1554 | { | |
1555 | __off64_t __pos; | |
1556 | __mbstate_t __state; | |
1557 | } _G_fpos64_t; | |
1558 | # 53 "/usr/include/_G_config.h" 3 4 | |
1559 | typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); | |
1560 | typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); | |
1561 | typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); | |
1562 | typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); | |
1563 | # 33 "/usr/include/libio.h" 2 3 4 | |
1564 | # 53 "/usr/include/libio.h" 3 4 | |
1565 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stdarg.h" 1 3 4 | |
1566 | # 43 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stdarg.h" 3 4 | |
1567 | typedef __builtin_va_list __gnuc_va_list; | |
1568 | # 54 "/usr/include/libio.h" 2 3 4 | |
1569 | # 170 "/usr/include/libio.h" 3 4 | |
1570 | struct _IO_jump_t; struct _IO_FILE; | |
1571 | # 180 "/usr/include/libio.h" 3 4 | |
1572 | typedef void _IO_lock_t; | |
1573 | ||
1574 | ||
1575 | ||
1576 | ||
1577 | ||
1578 | struct _IO_marker { | |
1579 | struct _IO_marker *_next; | |
1580 | struct _IO_FILE *_sbuf; | |
1581 | ||
1582 | ||
1583 | ||
1584 | int _pos; | |
1585 | # 203 "/usr/include/libio.h" 3 4 | |
1586 | }; | |
1587 | ||
1588 | ||
1589 | enum __codecvt_result | |
1590 | { | |
1591 | __codecvt_ok, | |
1592 | __codecvt_partial, | |
1593 | __codecvt_error, | |
1594 | __codecvt_noconv | |
1595 | }; | |
1596 | # 271 "/usr/include/libio.h" 3 4 | |
1597 | struct _IO_FILE { | |
1598 | int _flags; | |
1599 | ||
1600 | ||
1601 | ||
1602 | ||
1603 | char* _IO_read_ptr; | |
1604 | char* _IO_read_end; | |
1605 | char* _IO_read_base; | |
1606 | char* _IO_write_base; | |
1607 | char* _IO_write_ptr; | |
1608 | char* _IO_write_end; | |
1609 | char* _IO_buf_base; | |
1610 | char* _IO_buf_end; | |
1611 | ||
1612 | char *_IO_save_base; | |
1613 | char *_IO_backup_base; | |
1614 | char *_IO_save_end; | |
1615 | ||
1616 | struct _IO_marker *_markers; | |
1617 | ||
1618 | struct _IO_FILE *_chain; | |
1619 | ||
1620 | int _fileno; | |
1621 | ||
1622 | ||
1623 | ||
1624 | int _flags2; | |
1625 | ||
1626 | __off_t _old_offset; | |
1627 | ||
1628 | ||
1629 | ||
1630 | unsigned short _cur_column; | |
1631 | signed char _vtable_offset; | |
1632 | char _shortbuf[1]; | |
1633 | ||
1634 | ||
1635 | ||
1636 | _IO_lock_t *_lock; | |
1637 | # 319 "/usr/include/libio.h" 3 4 | |
1638 | __off64_t _offset; | |
1639 | # 328 "/usr/include/libio.h" 3 4 | |
1640 | void *__pad1; | |
1641 | void *__pad2; | |
1642 | void *__pad3; | |
1643 | void *__pad4; | |
1644 | size_t __pad5; | |
1645 | ||
1646 | int _mode; | |
1647 | ||
1648 | char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)]; | |
1649 | ||
1650 | }; | |
1651 | ||
1652 | ||
1653 | typedef struct _IO_FILE _IO_FILE; | |
1654 | ||
1655 | ||
1656 | struct _IO_FILE_plus; | |
1657 | ||
1658 | extern struct _IO_FILE_plus _IO_2_1_stdin_; | |
1659 | extern struct _IO_FILE_plus _IO_2_1_stdout_; | |
1660 | extern struct _IO_FILE_plus _IO_2_1_stderr_; | |
1661 | # 364 "/usr/include/libio.h" 3 4 | |
1662 | typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); | |
1663 | ||
1664 | ||
1665 | ||
1666 | ||
1667 | ||
1668 | ||
1669 | ||
1670 | typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, | |
1671 | size_t __n); | |
1672 | ||
1673 | ||
1674 | ||
1675 | ||
1676 | ||
1677 | ||
1678 | ||
1679 | typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); | |
1680 | ||
1681 | ||
1682 | typedef int __io_close_fn (void *__cookie); | |
1683 | ||
1684 | ||
1685 | ||
1686 | ||
1687 | typedef __io_read_fn cookie_read_function_t; | |
1688 | typedef __io_write_fn cookie_write_function_t; | |
1689 | typedef __io_seek_fn cookie_seek_function_t; | |
1690 | typedef __io_close_fn cookie_close_function_t; | |
1691 | ||
1692 | ||
1693 | typedef struct | |
1694 | { | |
1695 | __io_read_fn *read; | |
1696 | __io_write_fn *write; | |
1697 | __io_seek_fn *seek; | |
1698 | __io_close_fn *close; | |
1699 | } _IO_cookie_io_functions_t; | |
1700 | typedef _IO_cookie_io_functions_t cookie_io_functions_t; | |
1701 | ||
1702 | struct _IO_cookie_file; | |
1703 | ||
1704 | ||
1705 | extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write, | |
1706 | void *__cookie, _IO_cookie_io_functions_t __fns); | |
1707 | ||
1708 | ||
1709 | ||
1710 | ||
1711 | ||
1712 | ||
1713 | ||
1714 | extern int __underflow (_IO_FILE *); | |
1715 | extern int __uflow (_IO_FILE *); | |
1716 | extern int __overflow (_IO_FILE *, int); | |
1717 | # 458 "/usr/include/libio.h" 3 4 | |
1718 | extern int _IO_getc (_IO_FILE *__fp); | |
1719 | extern int _IO_putc (int __c, _IO_FILE *__fp); | |
1720 | extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__)); | |
1721 | extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__)); | |
1722 | ||
1723 | extern int _IO_peekc_locked (_IO_FILE *__fp); | |
1724 | ||
1725 | ||
1726 | ||
1727 | ||
1728 | ||
1729 | extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__)); | |
1730 | extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__)); | |
1731 | extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__)); | |
1732 | # 488 "/usr/include/libio.h" 3 4 | |
1733 | extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, | |
1734 | __gnuc_va_list, int *__restrict); | |
1735 | extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, | |
1736 | __gnuc_va_list); | |
1737 | extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t); | |
1738 | extern size_t _IO_sgetn (_IO_FILE *, void *, size_t); | |
1739 | ||
1740 | extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int); | |
1741 | extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int); | |
1742 | ||
1743 | extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__)); | |
1744 | # 76 "/usr/include/stdio.h" 2 3 4 | |
1745 | ||
1746 | ||
1747 | ||
1748 | ||
1749 | typedef __gnuc_va_list va_list; | |
1750 | # 89 "/usr/include/stdio.h" 3 4 | |
1751 | ||
1752 | ||
1753 | typedef _G_fpos_t fpos_t; | |
1754 | ||
1755 | ||
1756 | ||
1757 | ||
1758 | ||
1759 | typedef _G_fpos64_t fpos64_t; | |
1760 | # 141 "/usr/include/stdio.h" 3 4 | |
1761 | # 1 "/usr/include/bits/stdio_lim.h" 1 3 4 | |
1762 | # 142 "/usr/include/stdio.h" 2 3 4 | |
1763 | ||
1764 | ||
1765 | ||
1766 | extern struct _IO_FILE *stdin; | |
1767 | extern struct _IO_FILE *stdout; | |
1768 | extern struct _IO_FILE *stderr; | |
1769 | ||
1770 | ||
1771 | ||
1772 | ||
1773 | ||
1774 | ||
1775 | ||
1776 | extern int remove (__const char *__filename) __attribute__ ((__nothrow__)); | |
1777 | ||
1778 | extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__)); | |
1779 | ||
1780 | ||
1781 | ||
1782 | ||
1783 | extern int renameat (int __oldfd, __const char *__old, int __newfd, | |
1784 | __const char *__new) __attribute__ ((__nothrow__)); | |
1785 | ||
1786 | ||
1787 | ||
1788 | ||
1789 | ||
1790 | ||
1791 | ||
1792 | ||
1793 | extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__)); | |
1794 | # 182 "/usr/include/stdio.h" 3 4 | |
1795 | extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__)); | |
1796 | ||
1797 | ||
1798 | ||
1799 | extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1800 | ||
1801 | ||
1802 | ||
1803 | ||
1804 | ||
1805 | extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1806 | # 204 "/usr/include/stdio.h" 3 4 | |
1807 | extern char *tempnam (__const char *__dir, __const char *__pfx) | |
1808 | __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); | |
1809 | ||
1810 | ||
1811 | ||
1812 | ||
1813 | ||
1814 | ||
1815 | ||
1816 | ||
1817 | extern int fclose (FILE *__stream); | |
1818 | ||
1819 | ||
1820 | ||
1821 | ||
1822 | extern int fflush (FILE *__stream); | |
1823 | ||
1824 | # 229 "/usr/include/stdio.h" 3 4 | |
1825 | extern int fflush_unlocked (FILE *__stream); | |
1826 | # 239 "/usr/include/stdio.h" 3 4 | |
1827 | extern int fcloseall (void); | |
1828 | ||
1829 | ||
1830 | ||
1831 | ||
1832 | ||
1833 | ||
1834 | ||
1835 | ||
1836 | ||
1837 | extern FILE *fopen (__const char *__restrict __filename, | |
1838 | __const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); | |
1839 | ||
1840 | ||
1841 | ||
1842 | ||
1843 | extern FILE *freopen (__const char *__restrict __filename, | |
1844 | __const char *__restrict __modes, | |
1845 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
1846 | # 272 "/usr/include/stdio.h" 3 4 | |
1847 | ||
1848 | ||
1849 | extern FILE *fopen64 (__const char *__restrict __filename, | |
1850 | __const char *__restrict __modes) __attribute__ ((__warn_unused_result__)); | |
1851 | extern FILE *freopen64 (__const char *__restrict __filename, | |
1852 | __const char *__restrict __modes, | |
1853 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
1854 | ||
1855 | ||
1856 | ||
1857 | ||
1858 | extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1859 | ||
1860 | ||
1861 | ||
1862 | ||
1863 | ||
1864 | extern FILE *fopencookie (void *__restrict __magic_cookie, | |
1865 | __const char *__restrict __modes, | |
1866 | _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1867 | ||
1868 | ||
1869 | ||
1870 | ||
1871 | extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes) | |
1872 | __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1873 | ||
1874 | ||
1875 | ||
1876 | ||
1877 | extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
1878 | ||
1879 | ||
1880 | ||
1881 | ||
1882 | ||
1883 | ||
1884 | extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__)); | |
1885 | ||
1886 | ||
1887 | ||
1888 | extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, | |
1889 | int __modes, size_t __n) __attribute__ ((__nothrow__)); | |
1890 | ||
1891 | ||
1892 | ||
1893 | ||
1894 | ||
1895 | extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, | |
1896 | size_t __size) __attribute__ ((__nothrow__)); | |
1897 | ||
1898 | ||
1899 | extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__)); | |
1900 | ||
1901 | ||
1902 | ||
1903 | ||
1904 | ||
1905 | ||
1906 | ||
1907 | ||
1908 | extern int fprintf (FILE *__restrict __stream, | |
1909 | __const char *__restrict __format, ...); | |
1910 | ||
1911 | ||
1912 | ||
1913 | ||
1914 | extern int printf (__const char *__restrict __format, ...); | |
1915 | ||
1916 | extern int sprintf (char *__restrict __s, | |
1917 | __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); | |
1918 | ||
1919 | ||
1920 | ||
1921 | ||
1922 | ||
1923 | extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, | |
1924 | __gnuc_va_list __arg); | |
1925 | ||
1926 | ||
1927 | ||
1928 | ||
1929 | extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg); | |
1930 | ||
1931 | extern int vsprintf (char *__restrict __s, __const char *__restrict __format, | |
1932 | __gnuc_va_list __arg) __attribute__ ((__nothrow__)); | |
1933 | ||
1934 | ||
1935 | ||
1936 | ||
1937 | ||
1938 | extern int snprintf (char *__restrict __s, size_t __maxlen, | |
1939 | __const char *__restrict __format, ...) | |
1940 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); | |
1941 | ||
1942 | extern int vsnprintf (char *__restrict __s, size_t __maxlen, | |
1943 | __const char *__restrict __format, __gnuc_va_list __arg) | |
1944 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); | |
1945 | ||
1946 | ||
1947 | ||
1948 | ||
1949 | ||
1950 | ||
1951 | extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f, | |
1952 | __gnuc_va_list __arg) | |
1953 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__)); | |
1954 | extern int __asprintf (char **__restrict __ptr, | |
1955 | __const char *__restrict __fmt, ...) | |
1956 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); | |
1957 | extern int asprintf (char **__restrict __ptr, | |
1958 | __const char *__restrict __fmt, ...) | |
1959 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__)); | |
1960 | # 394 "/usr/include/stdio.h" 3 4 | |
1961 | extern int vdprintf (int __fd, __const char *__restrict __fmt, | |
1962 | __gnuc_va_list __arg) | |
1963 | __attribute__ ((__format__ (__printf__, 2, 0))); | |
1964 | extern int dprintf (int __fd, __const char *__restrict __fmt, ...) | |
1965 | __attribute__ ((__format__ (__printf__, 2, 3))); | |
1966 | ||
1967 | ||
1968 | ||
1969 | ||
1970 | ||
1971 | ||
1972 | ||
1973 | ||
1974 | extern int fscanf (FILE *__restrict __stream, | |
1975 | __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); | |
1976 | ||
1977 | ||
1978 | ||
1979 | ||
1980 | extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__)); | |
1981 | ||
1982 | extern int sscanf (__const char *__restrict __s, | |
1983 | __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); | |
1984 | # 445 "/usr/include/stdio.h" 3 4 | |
1985 | ||
1986 | ||
1987 | ||
1988 | ||
1989 | ||
1990 | ||
1991 | ||
1992 | ||
1993 | extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, | |
1994 | __gnuc_va_list __arg) | |
1995 | __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__)); | |
1996 | ||
1997 | ||
1998 | ||
1999 | ||
2000 | ||
2001 | extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) | |
2002 | __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__)); | |
2003 | ||
2004 | ||
2005 | extern int vsscanf (__const char *__restrict __s, | |
2006 | __const char *__restrict __format, __gnuc_va_list __arg) | |
2007 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0))); | |
2008 | # 504 "/usr/include/stdio.h" 3 4 | |
2009 | ||
2010 | ||
2011 | ||
2012 | ||
2013 | ||
2014 | ||
2015 | ||
2016 | ||
2017 | ||
2018 | extern int fgetc (FILE *__stream); | |
2019 | extern int getc (FILE *__stream); | |
2020 | ||
2021 | ||
2022 | ||
2023 | ||
2024 | ||
2025 | extern int getchar (void); | |
2026 | ||
2027 | # 532 "/usr/include/stdio.h" 3 4 | |
2028 | extern int getc_unlocked (FILE *__stream); | |
2029 | extern int getchar_unlocked (void); | |
2030 | # 543 "/usr/include/stdio.h" 3 4 | |
2031 | extern int fgetc_unlocked (FILE *__stream); | |
2032 | ||
2033 | ||
2034 | ||
2035 | ||
2036 | ||
2037 | ||
2038 | ||
2039 | ||
2040 | ||
2041 | ||
2042 | ||
2043 | extern int fputc (int __c, FILE *__stream); | |
2044 | extern int putc (int __c, FILE *__stream); | |
2045 | ||
2046 | ||
2047 | ||
2048 | ||
2049 | ||
2050 | extern int putchar (int __c); | |
2051 | ||
2052 | # 576 "/usr/include/stdio.h" 3 4 | |
2053 | extern int fputc_unlocked (int __c, FILE *__stream); | |
2054 | ||
2055 | ||
2056 | ||
2057 | ||
2058 | ||
2059 | ||
2060 | ||
2061 | extern int putc_unlocked (int __c, FILE *__stream); | |
2062 | extern int putchar_unlocked (int __c); | |
2063 | ||
2064 | ||
2065 | ||
2066 | ||
2067 | ||
2068 | ||
2069 | extern int getw (FILE *__stream); | |
2070 | ||
2071 | ||
2072 | extern int putw (int __w, FILE *__stream); | |
2073 | ||
2074 | ||
2075 | ||
2076 | ||
2077 | ||
2078 | ||
2079 | ||
2080 | ||
2081 | extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) | |
2082 | __attribute__ ((__warn_unused_result__)); | |
2083 | ||
2084 | ||
2085 | ||
2086 | ||
2087 | ||
2088 | ||
2089 | extern char *gets (char *__s) __attribute__ ((__warn_unused_result__)); | |
2090 | ||
2091 | # 622 "/usr/include/stdio.h" 3 4 | |
2092 | extern char *fgets_unlocked (char *__restrict __s, int __n, | |
2093 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2094 | # 638 "/usr/include/stdio.h" 3 4 | |
2095 | extern __ssize_t __getdelim (char **__restrict __lineptr, | |
2096 | size_t *__restrict __n, int __delimiter, | |
2097 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2098 | extern __ssize_t getdelim (char **__restrict __lineptr, | |
2099 | size_t *__restrict __n, int __delimiter, | |
2100 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2101 | ||
2102 | ||
2103 | ||
2104 | ||
2105 | ||
2106 | ||
2107 | ||
2108 | extern __ssize_t getline (char **__restrict __lineptr, | |
2109 | size_t *__restrict __n, | |
2110 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2111 | ||
2112 | ||
2113 | ||
2114 | ||
2115 | ||
2116 | ||
2117 | ||
2118 | ||
2119 | extern int fputs (__const char *__restrict __s, FILE *__restrict __stream); | |
2120 | ||
2121 | ||
2122 | ||
2123 | ||
2124 | ||
2125 | extern int puts (__const char *__s); | |
2126 | ||
2127 | ||
2128 | ||
2129 | ||
2130 | ||
2131 | ||
2132 | extern int ungetc (int __c, FILE *__stream); | |
2133 | ||
2134 | ||
2135 | ||
2136 | ||
2137 | ||
2138 | ||
2139 | extern size_t fread (void *__restrict __ptr, size_t __size, | |
2140 | size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2141 | ||
2142 | ||
2143 | ||
2144 | ||
2145 | extern size_t fwrite (__const void *__restrict __ptr, size_t __size, | |
2146 | size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__)); | |
2147 | ||
2148 | # 699 "/usr/include/stdio.h" 3 4 | |
2149 | extern int fputs_unlocked (__const char *__restrict __s, | |
2150 | FILE *__restrict __stream); | |
2151 | # 710 "/usr/include/stdio.h" 3 4 | |
2152 | extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, | |
2153 | size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2154 | extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, | |
2155 | size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2156 | ||
2157 | ||
2158 | ||
2159 | ||
2160 | ||
2161 | ||
2162 | ||
2163 | ||
2164 | extern int fseek (FILE *__stream, long int __off, int __whence); | |
2165 | ||
2166 | ||
2167 | ||
2168 | ||
2169 | extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__)); | |
2170 | ||
2171 | ||
2172 | ||
2173 | ||
2174 | extern void rewind (FILE *__stream); | |
2175 | ||
2176 | # 746 "/usr/include/stdio.h" 3 4 | |
2177 | extern int fseeko (FILE *__stream, __off_t __off, int __whence); | |
2178 | ||
2179 | ||
2180 | ||
2181 | ||
2182 | extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__)); | |
2183 | # 765 "/usr/include/stdio.h" 3 4 | |
2184 | ||
2185 | ||
2186 | ||
2187 | ||
2188 | ||
2189 | ||
2190 | extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); | |
2191 | ||
2192 | ||
2193 | ||
2194 | ||
2195 | extern int fsetpos (FILE *__stream, __const fpos_t *__pos); | |
2196 | # 788 "/usr/include/stdio.h" 3 4 | |
2197 | ||
2198 | ||
2199 | ||
2200 | extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); | |
2201 | extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__)); | |
2202 | extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); | |
2203 | extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos); | |
2204 | ||
2205 | ||
2206 | ||
2207 | ||
2208 | extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__)); | |
2209 | ||
2210 | extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2211 | ||
2212 | extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2213 | ||
2214 | ||
2215 | ||
2216 | ||
2217 | extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__)); | |
2218 | extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2219 | extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2220 | ||
2221 | ||
2222 | ||
2223 | ||
2224 | ||
2225 | ||
2226 | ||
2227 | ||
2228 | extern void perror (__const char *__s); | |
2229 | ||
2230 | ||
2231 | ||
2232 | ||
2233 | ||
2234 | ||
2235 | # 1 "/usr/include/bits/sys_errlist.h" 1 3 4 | |
2236 | # 27 "/usr/include/bits/sys_errlist.h" 3 4 | |
2237 | extern int sys_nerr; | |
2238 | extern __const char *__const sys_errlist[]; | |
2239 | ||
2240 | ||
2241 | extern int _sys_nerr; | |
2242 | extern __const char *__const _sys_errlist[]; | |
2243 | # 827 "/usr/include/stdio.h" 2 3 4 | |
2244 | ||
2245 | ||
2246 | ||
2247 | ||
2248 | extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2249 | ||
2250 | ||
2251 | ||
2252 | ||
2253 | extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2254 | # 846 "/usr/include/stdio.h" 3 4 | |
2255 | extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__)); | |
2256 | ||
2257 | ||
2258 | ||
2259 | ||
2260 | ||
2261 | extern int pclose (FILE *__stream); | |
2262 | ||
2263 | ||
2264 | ||
2265 | ||
2266 | ||
2267 | extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); | |
2268 | ||
2269 | ||
2270 | ||
2271 | ||
2272 | ||
2273 | extern char *cuserid (char *__s); | |
2274 | ||
2275 | ||
2276 | ||
2277 | ||
2278 | struct obstack; | |
2279 | ||
2280 | ||
2281 | extern int obstack_printf (struct obstack *__restrict __obstack, | |
2282 | __const char *__restrict __format, ...) | |
2283 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))); | |
2284 | extern int obstack_vprintf (struct obstack *__restrict __obstack, | |
2285 | __const char *__restrict __format, | |
2286 | __gnuc_va_list __args) | |
2287 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))); | |
2288 | ||
2289 | ||
2290 | ||
2291 | ||
2292 | ||
2293 | ||
2294 | ||
2295 | extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__)); | |
2296 | ||
2297 | ||
2298 | ||
2299 | extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2300 | ||
2301 | ||
2302 | extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__)); | |
2303 | # 907 "/usr/include/stdio.h" 3 4 | |
2304 | # 1 "/usr/include/bits/stdio.h" 1 3 4 | |
2305 | # 44 "/usr/include/bits/stdio.h" 3 4 | |
2306 | extern __inline int | |
2307 | getchar (void) | |
2308 | { | |
2309 | return _IO_getc (stdin); | |
2310 | } | |
2311 | ||
2312 | ||
2313 | ||
2314 | ||
2315 | extern __inline int | |
2316 | fgetc_unlocked (FILE *__fp) | |
2317 | { | |
2318 | return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); | |
2319 | } | |
2320 | ||
2321 | ||
2322 | ||
2323 | ||
2324 | ||
2325 | extern __inline int | |
2326 | getc_unlocked (FILE *__fp) | |
2327 | { | |
2328 | return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); | |
2329 | } | |
2330 | ||
2331 | ||
2332 | extern __inline int | |
2333 | getchar_unlocked (void) | |
2334 | { | |
2335 | return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); | |
2336 | } | |
2337 | ||
2338 | ||
2339 | ||
2340 | ||
2341 | extern __inline int | |
2342 | putchar (int __c) | |
2343 | { | |
2344 | return _IO_putc (__c, stdout); | |
2345 | } | |
2346 | ||
2347 | ||
2348 | ||
2349 | ||
2350 | extern __inline int | |
2351 | fputc_unlocked (int __c, FILE *__stream) | |
2352 | { | |
2353 | return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); | |
2354 | } | |
2355 | ||
2356 | ||
2357 | ||
2358 | ||
2359 | ||
2360 | extern __inline int | |
2361 | putc_unlocked (int __c, FILE *__stream) | |
2362 | { | |
2363 | return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); | |
2364 | } | |
2365 | ||
2366 | ||
2367 | extern __inline int | |
2368 | putchar_unlocked (int __c) | |
2369 | { | |
2370 | return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); | |
2371 | } | |
2372 | ||
2373 | ||
2374 | ||
2375 | ||
2376 | ||
2377 | extern __inline __ssize_t | |
2378 | getline (char **__lineptr, size_t *__n, FILE *__stream) | |
2379 | { | |
2380 | return __getdelim (__lineptr, __n, '\n', __stream); | |
2381 | } | |
2382 | ||
2383 | ||
2384 | ||
2385 | ||
2386 | ||
2387 | extern __inline int | |
2388 | __attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream) | |
2389 | { | |
2390 | return (((__stream)->_flags & 0x10) != 0); | |
2391 | } | |
2392 | ||
2393 | ||
2394 | extern __inline int | |
2395 | __attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream) | |
2396 | { | |
2397 | return (((__stream)->_flags & 0x20) != 0); | |
2398 | } | |
2399 | # 908 "/usr/include/stdio.h" 2 3 4 | |
2400 | ||
2401 | ||
2402 | # 1 "/usr/include/bits/stdio2.h" 1 3 4 | |
2403 | # 24 "/usr/include/bits/stdio2.h" 3 4 | |
2404 | extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen, | |
2405 | __const char *__restrict __format, ...) __attribute__ ((__nothrow__)); | |
2406 | extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen, | |
2407 | __const char *__restrict __format, | |
2408 | __gnuc_va_list __ap) __attribute__ ((__nothrow__)); | |
2409 | ||
2410 | ||
2411 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2412 | __attribute__ ((__nothrow__)) sprintf (char *__restrict __s, __const char *__restrict __fmt, ...) | |
2413 | { | |
2414 | return __builtin___sprintf_chk (__s, 2 - 1, | |
2415 | __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); | |
2416 | } | |
2417 | ||
2418 | ||
2419 | ||
2420 | ||
2421 | ||
2422 | ||
2423 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2424 | __attribute__ ((__nothrow__)) vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2425 | ||
2426 | { | |
2427 | return __builtin___vsprintf_chk (__s, 2 - 1, | |
2428 | __builtin_object_size (__s, 2 > 1), __fmt, __ap); | |
2429 | } | |
2430 | ||
2431 | ||
2432 | ||
2433 | extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag, | |
2434 | size_t __slen, __const char *__restrict __format, | |
2435 | ...) __attribute__ ((__nothrow__)); | |
2436 | extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag, | |
2437 | size_t __slen, __const char *__restrict __format, | |
2438 | __gnuc_va_list __ap) __attribute__ ((__nothrow__)); | |
2439 | ||
2440 | ||
2441 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2442 | __attribute__ ((__nothrow__)) snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...) | |
2443 | ||
2444 | { | |
2445 | return __builtin___snprintf_chk (__s, __n, 2 - 1, | |
2446 | __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ()); | |
2447 | } | |
2448 | ||
2449 | ||
2450 | ||
2451 | ||
2452 | ||
2453 | ||
2454 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2455 | __attribute__ ((__nothrow__)) vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2456 | ||
2457 | { | |
2458 | return __builtin___vsnprintf_chk (__s, __n, 2 - 1, | |
2459 | __builtin_object_size (__s, 2 > 1), __fmt, __ap); | |
2460 | } | |
2461 | ||
2462 | ||
2463 | ||
2464 | ||
2465 | ||
2466 | extern int __fprintf_chk (FILE *__restrict __stream, int __flag, | |
2467 | __const char *__restrict __format, ...); | |
2468 | extern int __printf_chk (int __flag, __const char *__restrict __format, ...); | |
2469 | extern int __vfprintf_chk (FILE *__restrict __stream, int __flag, | |
2470 | __const char *__restrict __format, __gnuc_va_list __ap); | |
2471 | extern int __vprintf_chk (int __flag, __const char *__restrict __format, | |
2472 | __gnuc_va_list __ap); | |
2473 | ||
2474 | ||
2475 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2476 | fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...) | |
2477 | { | |
2478 | return __fprintf_chk (__stream, 2 - 1, __fmt, | |
2479 | __builtin_va_arg_pack ()); | |
2480 | } | |
2481 | ||
2482 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2483 | printf (__const char *__restrict __fmt, ...) | |
2484 | { | |
2485 | return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ()); | |
2486 | } | |
2487 | ||
2488 | ||
2489 | ||
2490 | ||
2491 | ||
2492 | ||
2493 | ||
2494 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2495 | vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap) | |
2496 | { | |
2497 | ||
2498 | return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap); | |
2499 | ||
2500 | ||
2501 | ||
2502 | } | |
2503 | ||
2504 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2505 | vfprintf (FILE *__restrict __stream, | |
2506 | __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2507 | { | |
2508 | return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap); | |
2509 | } | |
2510 | ||
2511 | ||
2512 | ||
2513 | extern int __asprintf_chk (char **__restrict __ptr, int __flag, | |
2514 | __const char *__restrict __fmt, ...) | |
2515 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__)); | |
2516 | extern int __vasprintf_chk (char **__restrict __ptr, int __flag, | |
2517 | __const char *__restrict __fmt, __gnuc_va_list __arg) | |
2518 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__)); | |
2519 | extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt, | |
2520 | ...) __attribute__ ((__format__ (__printf__, 3, 4))); | |
2521 | extern int __vdprintf_chk (int __fd, int __flag, | |
2522 | __const char *__restrict __fmt, __gnuc_va_list __arg) | |
2523 | __attribute__ ((__format__ (__printf__, 3, 0))); | |
2524 | extern int __obstack_printf_chk (struct obstack *__restrict __obstack, | |
2525 | int __flag, __const char *__restrict __format, | |
2526 | ...) | |
2527 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))); | |
2528 | extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack, | |
2529 | int __flag, | |
2530 | __const char *__restrict __format, | |
2531 | __gnuc_va_list __args) | |
2532 | __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))); | |
2533 | ||
2534 | ||
2535 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2536 | __attribute__ ((__nothrow__)) asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) | |
2537 | { | |
2538 | return __asprintf_chk (__ptr, 2 - 1, __fmt, | |
2539 | __builtin_va_arg_pack ()); | |
2540 | } | |
2541 | ||
2542 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2543 | __attribute__ ((__nothrow__)) __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...) | |
2544 | ||
2545 | { | |
2546 | return __asprintf_chk (__ptr, 2 - 1, __fmt, | |
2547 | __builtin_va_arg_pack ()); | |
2548 | } | |
2549 | ||
2550 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2551 | dprintf (int __fd, __const char *__restrict __fmt, ...) | |
2552 | { | |
2553 | return __dprintf_chk (__fd, 2 - 1, __fmt, | |
2554 | __builtin_va_arg_pack ()); | |
2555 | } | |
2556 | ||
2557 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2558 | __attribute__ ((__nothrow__)) obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...) | |
2559 | ||
2560 | { | |
2561 | return __obstack_printf_chk (__obstack, 2 - 1, __fmt, | |
2562 | __builtin_va_arg_pack ()); | |
2563 | } | |
2564 | # 195 "/usr/include/bits/stdio2.h" 3 4 | |
2565 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2566 | __attribute__ ((__nothrow__)) vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2567 | ||
2568 | { | |
2569 | return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap); | |
2570 | } | |
2571 | ||
2572 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2573 | vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2574 | { | |
2575 | return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap); | |
2576 | } | |
2577 | ||
2578 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
2579 | __attribute__ ((__nothrow__)) obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap) | |
2580 | ||
2581 | { | |
2582 | return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt, | |
2583 | __ap); | |
2584 | } | |
2585 | ||
2586 | ||
2587 | ||
2588 | ||
2589 | ||
2590 | extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__)); | |
2591 | extern char *__gets_warn (char *__str) __asm__ ("" "gets") | |
2592 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size"))); | |
2593 | ||
2594 | ||
2595 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * | |
2596 | gets (char *__str) | |
2597 | { | |
2598 | if (__builtin_object_size (__str, 2 > 1) != (size_t) -1) | |
2599 | return __gets_chk (__str, __builtin_object_size (__str, 2 > 1)); | |
2600 | return __gets_warn (__str); | |
2601 | } | |
2602 | ||
2603 | extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n, | |
2604 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2605 | extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") __attribute__ ((__warn_unused_result__)); | |
2606 | ||
2607 | ||
2608 | extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk") | |
2609 | ||
2610 | ||
2611 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer"))); | |
2612 | ||
2613 | ||
2614 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * | |
2615 | fgets (char *__restrict __s, int __n, FILE *__restrict __stream) | |
2616 | { | |
2617 | if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) | |
2618 | { | |
2619 | if (!__builtin_constant_p (__n) || __n <= 0) | |
2620 | return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); | |
2621 | ||
2622 | if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) | |
2623 | return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); | |
2624 | } | |
2625 | return __fgets_alias (__s, __n, __stream); | |
2626 | } | |
2627 | ||
2628 | extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen, | |
2629 | size_t __size, size_t __n, | |
2630 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2631 | extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") __attribute__ ((__warn_unused_result__)); | |
2632 | ||
2633 | ||
2634 | ||
2635 | extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk") | |
2636 | ||
2637 | ||
2638 | ||
2639 | ||
2640 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer"))); | |
2641 | ||
2642 | ||
2643 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t | |
2644 | fread (void *__restrict __ptr, size_t __size, size_t __n, | |
2645 | FILE *__restrict __stream) | |
2646 | { | |
2647 | if (__builtin_object_size (__ptr, 0) != (size_t) -1) | |
2648 | { | |
2649 | if (!__builtin_constant_p (__size) | |
2650 | || !__builtin_constant_p (__n) | |
2651 | || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) | |
2652 | return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); | |
2653 | ||
2654 | if (__size * __n > __builtin_object_size (__ptr, 0)) | |
2655 | return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream); | |
2656 | } | |
2657 | return __fread_alias (__ptr, __size, __n, __stream); | |
2658 | } | |
2659 | ||
2660 | ||
2661 | extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size, | |
2662 | int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2663 | extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") __attribute__ ((__warn_unused_result__)); | |
2664 | ||
2665 | ||
2666 | extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk") | |
2667 | ||
2668 | ||
2669 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer"))); | |
2670 | ||
2671 | ||
2672 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * | |
2673 | fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream) | |
2674 | { | |
2675 | if (__builtin_object_size (__s, 2 > 1) != (size_t) -1) | |
2676 | { | |
2677 | if (!__builtin_constant_p (__n) || __n <= 0) | |
2678 | return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); | |
2679 | ||
2680 | if ((size_t) __n > __builtin_object_size (__s, 2 > 1)) | |
2681 | return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream); | |
2682 | } | |
2683 | return __fgets_unlocked_alias (__s, __n, __stream); | |
2684 | } | |
2685 | ||
2686 | ||
2687 | ||
2688 | ||
2689 | extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen, | |
2690 | size_t __size, size_t __n, | |
2691 | FILE *__restrict __stream) __attribute__ ((__warn_unused_result__)); | |
2692 | extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") __attribute__ ((__warn_unused_result__)); | |
2693 | ||
2694 | ||
2695 | ||
2696 | extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk") | |
2697 | ||
2698 | ||
2699 | ||
2700 | ||
2701 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer"))); | |
2702 | ||
2703 | ||
2704 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t | |
2705 | fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, | |
2706 | FILE *__restrict __stream) | |
2707 | { | |
2708 | if (__builtin_object_size (__ptr, 0) != (size_t) -1) | |
2709 | { | |
2710 | if (!__builtin_constant_p (__size) | |
2711 | || !__builtin_constant_p (__n) | |
2712 | || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2))) | |
2713 | return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, | |
2714 | __stream); | |
2715 | ||
2716 | if (__size * __n > __builtin_object_size (__ptr, 0)) | |
2717 | return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, | |
2718 | __stream); | |
2719 | } | |
2720 | ||
2721 | ||
2722 | if (__builtin_constant_p (__size) | |
2723 | && __builtin_constant_p (__n) | |
2724 | && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2)) | |
2725 | && __size * __n <= 8) | |
2726 | { | |
2727 | size_t __cnt = __size * __n; | |
2728 | char *__cptr = (char *) __ptr; | |
2729 | if (__cnt == 0) | |
2730 | return 0; | |
2731 | ||
2732 | for (; __cnt > 0; --__cnt) | |
2733 | { | |
2734 | int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); | |
2735 | if (__c == (-1)) | |
2736 | break; | |
2737 | *__cptr++ = __c; | |
2738 | } | |
2739 | return (__cptr - (char *) __ptr) / __size; | |
2740 | } | |
2741 | ||
2742 | return __fread_unlocked_alias (__ptr, __size, __n, __stream); | |
2743 | } | |
2744 | # 911 "/usr/include/stdio.h" 2 3 4 | |
2745 | ||
2746 | ||
2747 | ||
2748 | ||
2749 | ||
2750 | ||
2751 | # 312 "./../include/my_global.h" 2 | |
2752 | ||
2753 | ||
2754 | # 1 "/usr/include/stdlib.h" 1 3 4 | |
2755 | # 33 "/usr/include/stdlib.h" 3 4 | |
2756 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
2757 | # 326 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4 | |
2758 | typedef int wchar_t; | |
2759 | # 34 "/usr/include/stdlib.h" 2 3 4 | |
2760 | ||
2761 | ||
2762 | ||
2763 | ||
2764 | ||
2765 | ||
2766 | ||
2767 | ||
2768 | # 1 "/usr/include/bits/waitflags.h" 1 3 4 | |
2769 | # 43 "/usr/include/stdlib.h" 2 3 4 | |
2770 | # 1 "/usr/include/bits/waitstatus.h" 1 3 4 | |
2771 | # 67 "/usr/include/bits/waitstatus.h" 3 4 | |
2772 | union wait | |
2773 | { | |
2774 | int w_status; | |
2775 | struct | |
2776 | { | |
2777 | ||
2778 | ||
2779 | ||
2780 | ||
2781 | ||
2782 | ||
2783 | ||
2784 | unsigned int:16; | |
2785 | unsigned int __w_retcode:8; | |
2786 | unsigned int __w_coredump:1; | |
2787 | unsigned int __w_termsig:7; | |
2788 | ||
2789 | } __wait_terminated; | |
2790 | struct | |
2791 | { | |
2792 | ||
2793 | ||
2794 | ||
2795 | ||
2796 | ||
2797 | ||
2798 | unsigned int:16; | |
2799 | unsigned int __w_stopsig:8; | |
2800 | unsigned int __w_stopval:8; | |
2801 | ||
2802 | } __wait_stopped; | |
2803 | }; | |
2804 | # 44 "/usr/include/stdlib.h" 2 3 4 | |
2805 | # 68 "/usr/include/stdlib.h" 3 4 | |
2806 | typedef union | |
2807 | { | |
2808 | union wait *__uptr; | |
2809 | int *__iptr; | |
2810 | } __WAIT_STATUS __attribute__ ((__transparent_union__)); | |
2811 | # 96 "/usr/include/stdlib.h" 3 4 | |
2812 | ||
2813 | ||
2814 | typedef struct | |
2815 | { | |
2816 | int quot; | |
2817 | int rem; | |
2818 | } div_t; | |
2819 | ||
2820 | ||
2821 | ||
2822 | typedef struct | |
2823 | { | |
2824 | long int quot; | |
2825 | long int rem; | |
2826 | } ldiv_t; | |
2827 | ||
2828 | ||
2829 | ||
2830 | ||
2831 | ||
2832 | ||
2833 | ||
2834 | __extension__ typedef struct | |
2835 | { | |
2836 | long long int quot; | |
2837 | long long int rem; | |
2838 | } lldiv_t; | |
2839 | ||
2840 | ||
2841 | # 140 "/usr/include/stdlib.h" 3 4 | |
2842 | extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2843 | ||
2844 | ||
2845 | ||
2846 | ||
2847 | extern double atof (__const char *__nptr) | |
2848 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2849 | ||
2850 | extern int atoi (__const char *__nptr) | |
2851 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2852 | ||
2853 | extern long int atol (__const char *__nptr) | |
2854 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2855 | ||
2856 | ||
2857 | ||
2858 | ||
2859 | ||
2860 | __extension__ extern long long int atoll (__const char *__nptr) | |
2861 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2862 | ||
2863 | ||
2864 | ||
2865 | ||
2866 | ||
2867 | extern double strtod (__const char *__restrict __nptr, | |
2868 | char **__restrict __endptr) | |
2869 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2870 | ||
2871 | ||
2872 | ||
2873 | ||
2874 | ||
2875 | extern float strtof (__const char *__restrict __nptr, | |
2876 | char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2877 | ||
2878 | extern long double strtold (__const char *__restrict __nptr, | |
2879 | char **__restrict __endptr) | |
2880 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2881 | ||
2882 | ||
2883 | ||
2884 | ||
2885 | ||
2886 | extern long int strtol (__const char *__restrict __nptr, | |
2887 | char **__restrict __endptr, int __base) | |
2888 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2889 | ||
2890 | extern unsigned long int strtoul (__const char *__restrict __nptr, | |
2891 | char **__restrict __endptr, int __base) | |
2892 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2893 | ||
2894 | ||
2895 | ||
2896 | ||
2897 | __extension__ | |
2898 | extern long long int strtoq (__const char *__restrict __nptr, | |
2899 | char **__restrict __endptr, int __base) | |
2900 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2901 | ||
2902 | __extension__ | |
2903 | extern unsigned long long int strtouq (__const char *__restrict __nptr, | |
2904 | char **__restrict __endptr, int __base) | |
2905 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2906 | ||
2907 | ||
2908 | ||
2909 | ||
2910 | ||
2911 | __extension__ | |
2912 | extern long long int strtoll (__const char *__restrict __nptr, | |
2913 | char **__restrict __endptr, int __base) | |
2914 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2915 | ||
2916 | __extension__ | |
2917 | extern unsigned long long int strtoull (__const char *__restrict __nptr, | |
2918 | char **__restrict __endptr, int __base) | |
2919 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2920 | ||
2921 | # 240 "/usr/include/stdlib.h" 3 4 | |
2922 | extern long int strtol_l (__const char *__restrict __nptr, | |
2923 | char **__restrict __endptr, int __base, | |
2924 | __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__)); | |
2925 | ||
2926 | extern unsigned long int strtoul_l (__const char *__restrict __nptr, | |
2927 | char **__restrict __endptr, | |
2928 | int __base, __locale_t __loc) | |
2929 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__)); | |
2930 | ||
2931 | __extension__ | |
2932 | extern long long int strtoll_l (__const char *__restrict __nptr, | |
2933 | char **__restrict __endptr, int __base, | |
2934 | __locale_t __loc) | |
2935 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__)); | |
2936 | ||
2937 | __extension__ | |
2938 | extern unsigned long long int strtoull_l (__const char *__restrict __nptr, | |
2939 | char **__restrict __endptr, | |
2940 | int __base, __locale_t __loc) | |
2941 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__)); | |
2942 | ||
2943 | extern double strtod_l (__const char *__restrict __nptr, | |
2944 | char **__restrict __endptr, __locale_t __loc) | |
2945 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); | |
2946 | ||
2947 | extern float strtof_l (__const char *__restrict __nptr, | |
2948 | char **__restrict __endptr, __locale_t __loc) | |
2949 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); | |
2950 | ||
2951 | extern long double strtold_l (__const char *__restrict __nptr, | |
2952 | char **__restrict __endptr, | |
2953 | __locale_t __loc) | |
2954 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); | |
2955 | ||
2956 | ||
2957 | ||
2958 | ||
2959 | ||
2960 | extern __inline double | |
2961 | __attribute__ ((__nothrow__)) atof (__const char *__nptr) | |
2962 | { | |
2963 | return strtod (__nptr, (char **) ((void *)0)); | |
2964 | } | |
2965 | extern __inline int | |
2966 | __attribute__ ((__nothrow__)) atoi (__const char *__nptr) | |
2967 | { | |
2968 | return (int) strtol (__nptr, (char **) ((void *)0), 10); | |
2969 | } | |
2970 | extern __inline long int | |
2971 | __attribute__ ((__nothrow__)) atol (__const char *__nptr) | |
2972 | { | |
2973 | return strtol (__nptr, (char **) ((void *)0), 10); | |
2974 | } | |
2975 | ||
2976 | ||
2977 | ||
2978 | ||
2979 | __extension__ extern __inline long long int | |
2980 | __attribute__ ((__nothrow__)) atoll (__const char *__nptr) | |
2981 | { | |
2982 | return strtoll (__nptr, (char **) ((void *)0), 10); | |
2983 | } | |
2984 | ||
2985 | # 311 "/usr/include/stdlib.h" 3 4 | |
2986 | extern char *l64a (long int __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
2987 | ||
2988 | ||
2989 | extern long int a64l (__const char *__s) | |
2990 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
2991 | ||
2992 | ||
2993 | ||
2994 | ||
2995 | # 1 "/usr/include/sys/types.h" 1 3 4 | |
2996 | # 29 "/usr/include/sys/types.h" 3 4 | |
2997 | ||
2998 | ||
2999 | ||
3000 | ||
3001 | ||
3002 | ||
3003 | typedef __u_char u_char; | |
3004 | typedef __u_short u_short; | |
3005 | typedef __u_int u_int; | |
3006 | typedef __u_long u_long; | |
3007 | typedef __quad_t quad_t; | |
3008 | typedef __u_quad_t u_quad_t; | |
3009 | typedef __fsid_t fsid_t; | |
3010 | ||
3011 | ||
3012 | ||
3013 | ||
3014 | typedef __loff_t loff_t; | |
3015 | ||
3016 | ||
3017 | ||
3018 | typedef __ino_t ino_t; | |
3019 | ||
3020 | ||
3021 | ||
3022 | ||
3023 | ||
3024 | ||
3025 | typedef __ino64_t ino64_t; | |
3026 | ||
3027 | ||
3028 | ||
3029 | ||
3030 | typedef __dev_t dev_t; | |
3031 | ||
3032 | ||
3033 | ||
3034 | ||
3035 | typedef __gid_t gid_t; | |
3036 | ||
3037 | ||
3038 | ||
3039 | ||
3040 | typedef __mode_t mode_t; | |
3041 | ||
3042 | ||
3043 | ||
3044 | ||
3045 | typedef __nlink_t nlink_t; | |
3046 | ||
3047 | ||
3048 | ||
3049 | ||
3050 | typedef __uid_t uid_t; | |
3051 | ||
3052 | ||
3053 | ||
3054 | ||
3055 | ||
3056 | typedef __off_t off_t; | |
3057 | ||
3058 | ||
3059 | ||
3060 | ||
3061 | ||
3062 | ||
3063 | typedef __off64_t off64_t; | |
3064 | # 105 "/usr/include/sys/types.h" 3 4 | |
3065 | typedef __id_t id_t; | |
3066 | ||
3067 | ||
3068 | ||
3069 | ||
3070 | typedef __ssize_t ssize_t; | |
3071 | ||
3072 | ||
3073 | ||
3074 | ||
3075 | ||
3076 | typedef __daddr_t daddr_t; | |
3077 | typedef __caddr_t caddr_t; | |
3078 | ||
3079 | ||
3080 | ||
3081 | ||
3082 | ||
3083 | typedef __key_t key_t; | |
3084 | # 137 "/usr/include/sys/types.h" 3 4 | |
3085 | typedef __useconds_t useconds_t; | |
3086 | ||
3087 | ||
3088 | ||
3089 | typedef __suseconds_t suseconds_t; | |
3090 | ||
3091 | ||
3092 | ||
3093 | ||
3094 | ||
3095 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
3096 | # 148 "/usr/include/sys/types.h" 2 3 4 | |
3097 | ||
3098 | ||
3099 | ||
3100 | typedef unsigned long int ulong; | |
3101 | typedef unsigned short int ushort; | |
3102 | typedef unsigned int uint; | |
3103 | # 195 "/usr/include/sys/types.h" 3 4 | |
3104 | typedef int int8_t __attribute__ ((__mode__ (__QI__))); | |
3105 | typedef int int16_t __attribute__ ((__mode__ (__HI__))); | |
3106 | typedef int int32_t __attribute__ ((__mode__ (__SI__))); | |
3107 | typedef int int64_t __attribute__ ((__mode__ (__DI__))); | |
3108 | ||
3109 | ||
3110 | typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); | |
3111 | typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); | |
3112 | typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); | |
3113 | typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); | |
3114 | ||
3115 | typedef int register_t __attribute__ ((__mode__ (__word__))); | |
3116 | # 220 "/usr/include/sys/types.h" 3 4 | |
3117 | # 1 "/usr/include/sys/select.h" 1 3 4 | |
3118 | # 31 "/usr/include/sys/select.h" 3 4 | |
3119 | # 1 "/usr/include/bits/select.h" 1 3 4 | |
3120 | # 32 "/usr/include/sys/select.h" 2 3 4 | |
3121 | ||
3122 | ||
3123 | # 1 "/usr/include/bits/sigset.h" 1 3 4 | |
3124 | # 35 "/usr/include/sys/select.h" 2 3 4 | |
3125 | # 46 "/usr/include/sys/select.h" 3 4 | |
3126 | # 1 "/usr/include/bits/time.h" 1 3 4 | |
3127 | # 69 "/usr/include/bits/time.h" 3 4 | |
3128 | struct timeval | |
3129 | { | |
3130 | __time_t tv_sec; | |
3131 | __suseconds_t tv_usec; | |
3132 | }; | |
3133 | # 47 "/usr/include/sys/select.h" 2 3 4 | |
3134 | # 55 "/usr/include/sys/select.h" 3 4 | |
3135 | typedef long int __fd_mask; | |
3136 | # 67 "/usr/include/sys/select.h" 3 4 | |
3137 | typedef struct | |
3138 | { | |
3139 | ||
3140 | ||
3141 | ||
3142 | __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))]; | |
3143 | ||
3144 | ||
3145 | ||
3146 | ||
3147 | ||
3148 | } fd_set; | |
3149 | ||
3150 | ||
3151 | ||
3152 | ||
3153 | ||
3154 | ||
3155 | typedef __fd_mask fd_mask; | |
3156 | # 99 "/usr/include/sys/select.h" 3 4 | |
3157 | ||
3158 | # 109 "/usr/include/sys/select.h" 3 4 | |
3159 | extern int select (int __nfds, fd_set *__restrict __readfds, | |
3160 | fd_set *__restrict __writefds, | |
3161 | fd_set *__restrict __exceptfds, | |
3162 | struct timeval *__restrict __timeout); | |
3163 | # 121 "/usr/include/sys/select.h" 3 4 | |
3164 | extern int pselect (int __nfds, fd_set *__restrict __readfds, | |
3165 | fd_set *__restrict __writefds, | |
3166 | fd_set *__restrict __exceptfds, | |
3167 | const struct timespec *__restrict __timeout, | |
3168 | const __sigset_t *__restrict __sigmask); | |
3169 | ||
3170 | ||
3171 | ||
3172 | # 221 "/usr/include/sys/types.h" 2 3 4 | |
3173 | ||
3174 | ||
3175 | # 1 "/usr/include/sys/sysmacros.h" 1 3 4 | |
3176 | # 30 "/usr/include/sys/sysmacros.h" 3 4 | |
3177 | __extension__ | |
3178 | extern unsigned int gnu_dev_major (unsigned long long int __dev) | |
3179 | __attribute__ ((__nothrow__)); | |
3180 | __extension__ | |
3181 | extern unsigned int gnu_dev_minor (unsigned long long int __dev) | |
3182 | __attribute__ ((__nothrow__)); | |
3183 | __extension__ | |
3184 | extern unsigned long long int gnu_dev_makedev (unsigned int __major, | |
3185 | unsigned int __minor) | |
3186 | __attribute__ ((__nothrow__)); | |
3187 | ||
3188 | ||
3189 | __extension__ extern __inline unsigned int | |
3190 | __attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev) | |
3191 | { | |
3192 | return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); | |
3193 | } | |
3194 | ||
3195 | __extension__ extern __inline unsigned int | |
3196 | __attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev) | |
3197 | { | |
3198 | return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); | |
3199 | } | |
3200 | ||
3201 | __extension__ extern __inline unsigned long long int | |
3202 | __attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor) | |
3203 | { | |
3204 | return ((__minor & 0xff) | ((__major & 0xfff) << 8) | |
3205 | | (((unsigned long long int) (__minor & ~0xff)) << 12) | |
3206 | | (((unsigned long long int) (__major & ~0xfff)) << 32)); | |
3207 | } | |
3208 | # 224 "/usr/include/sys/types.h" 2 3 4 | |
3209 | ||
3210 | ||
3211 | ||
3212 | ||
3213 | typedef __blksize_t blksize_t; | |
3214 | ||
3215 | ||
3216 | ||
3217 | ||
3218 | ||
3219 | ||
3220 | typedef __blkcnt_t blkcnt_t; | |
3221 | ||
3222 | ||
3223 | ||
3224 | typedef __fsblkcnt_t fsblkcnt_t; | |
3225 | ||
3226 | ||
3227 | ||
3228 | typedef __fsfilcnt_t fsfilcnt_t; | |
3229 | # 262 "/usr/include/sys/types.h" 3 4 | |
3230 | typedef __blkcnt64_t blkcnt64_t; | |
3231 | typedef __fsblkcnt64_t fsblkcnt64_t; | |
3232 | typedef __fsfilcnt64_t fsfilcnt64_t; | |
3233 | # 273 "/usr/include/sys/types.h" 3 4 | |
3234 | ||
3235 | # 321 "/usr/include/stdlib.h" 2 3 4 | |
3236 | ||
3237 | ||
3238 | ||
3239 | ||
3240 | ||
3241 | ||
3242 | extern long int random (void) __attribute__ ((__nothrow__)); | |
3243 | ||
3244 | ||
3245 | extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__)); | |
3246 | ||
3247 | ||
3248 | ||
3249 | ||
3250 | ||
3251 | extern char *initstate (unsigned int __seed, char *__statebuf, | |
3252 | size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3253 | ||
3254 | ||
3255 | ||
3256 | extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3257 | ||
3258 | ||
3259 | ||
3260 | ||
3261 | ||
3262 | ||
3263 | ||
3264 | struct random_data | |
3265 | { | |
3266 | int32_t *fptr; | |
3267 | int32_t *rptr; | |
3268 | int32_t *state; | |
3269 | int rand_type; | |
3270 | int rand_deg; | |
3271 | int rand_sep; | |
3272 | int32_t *end_ptr; | |
3273 | }; | |
3274 | ||
3275 | extern int random_r (struct random_data *__restrict __buf, | |
3276 | int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3277 | ||
3278 | extern int srandom_r (unsigned int __seed, struct random_data *__buf) | |
3279 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3280 | ||
3281 | extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, | |
3282 | size_t __statelen, | |
3283 | struct random_data *__restrict __buf) | |
3284 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); | |
3285 | ||
3286 | extern int setstate_r (char *__restrict __statebuf, | |
3287 | struct random_data *__restrict __buf) | |
3288 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3289 | ||
3290 | ||
3291 | ||
3292 | ||
3293 | ||
3294 | ||
3295 | extern int rand (void) __attribute__ ((__nothrow__)); | |
3296 | ||
3297 | extern void srand (unsigned int __seed) __attribute__ ((__nothrow__)); | |
3298 | ||
3299 | ||
3300 | ||
3301 | ||
3302 | extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__)); | |
3303 | ||
3304 | ||
3305 | ||
3306 | ||
3307 | ||
3308 | ||
3309 | ||
3310 | extern double drand48 (void) __attribute__ ((__nothrow__)); | |
3311 | extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3312 | ||
3313 | ||
3314 | extern long int lrand48 (void) __attribute__ ((__nothrow__)); | |
3315 | extern long int nrand48 (unsigned short int __xsubi[3]) | |
3316 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3317 | ||
3318 | ||
3319 | extern long int mrand48 (void) __attribute__ ((__nothrow__)); | |
3320 | extern long int jrand48 (unsigned short int __xsubi[3]) | |
3321 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3322 | ||
3323 | ||
3324 | extern void srand48 (long int __seedval) __attribute__ ((__nothrow__)); | |
3325 | extern unsigned short int *seed48 (unsigned short int __seed16v[3]) | |
3326 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3327 | extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3328 | ||
3329 | ||
3330 | ||
3331 | ||
3332 | ||
3333 | struct drand48_data | |
3334 | { | |
3335 | unsigned short int __x[3]; | |
3336 | unsigned short int __old_x[3]; | |
3337 | unsigned short int __c; | |
3338 | unsigned short int __init; | |
3339 | unsigned long long int __a; | |
3340 | }; | |
3341 | ||
3342 | ||
3343 | extern int drand48_r (struct drand48_data *__restrict __buffer, | |
3344 | double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3345 | extern int erand48_r (unsigned short int __xsubi[3], | |
3346 | struct drand48_data *__restrict __buffer, | |
3347 | double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3348 | ||
3349 | ||
3350 | extern int lrand48_r (struct drand48_data *__restrict __buffer, | |
3351 | long int *__restrict __result) | |
3352 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3353 | extern int nrand48_r (unsigned short int __xsubi[3], | |
3354 | struct drand48_data *__restrict __buffer, | |
3355 | long int *__restrict __result) | |
3356 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3357 | ||
3358 | ||
3359 | extern int mrand48_r (struct drand48_data *__restrict __buffer, | |
3360 | long int *__restrict __result) | |
3361 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3362 | extern int jrand48_r (unsigned short int __xsubi[3], | |
3363 | struct drand48_data *__restrict __buffer, | |
3364 | long int *__restrict __result) | |
3365 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3366 | ||
3367 | ||
3368 | extern int srand48_r (long int __seedval, struct drand48_data *__buffer) | |
3369 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3370 | ||
3371 | extern int seed48_r (unsigned short int __seed16v[3], | |
3372 | struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3373 | ||
3374 | extern int lcong48_r (unsigned short int __param[7], | |
3375 | struct drand48_data *__buffer) | |
3376 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
3377 | ||
3378 | ||
3379 | ||
3380 | ||
3381 | ||
3382 | ||
3383 | ||
3384 | ||
3385 | ||
3386 | extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); | |
3387 | ||
3388 | extern void *calloc (size_t __nmemb, size_t __size) | |
3389 | __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); | |
3390 | ||
3391 | ||
3392 | ||
3393 | ||
3394 | ||
3395 | ||
3396 | ||
3397 | ||
3398 | ||
3399 | ||
3400 | extern void *realloc (void *__ptr, size_t __size) | |
3401 | __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3402 | ||
3403 | extern void free (void *__ptr) __attribute__ ((__nothrow__)); | |
3404 | ||
3405 | ||
3406 | ||
3407 | ||
3408 | extern void cfree (void *__ptr) __attribute__ ((__nothrow__)); | |
3409 | ||
3410 | ||
3411 | ||
3412 | # 1 "/usr/include/alloca.h" 1 3 4 | |
3413 | # 25 "/usr/include/alloca.h" 3 4 | |
3414 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
3415 | # 26 "/usr/include/alloca.h" 2 3 4 | |
3416 | ||
3417 | ||
3418 | ||
3419 | ||
3420 | ||
3421 | ||
3422 | ||
3423 | extern void *alloca (size_t __size) __attribute__ ((__nothrow__)); | |
3424 | ||
3425 | ||
3426 | ||
3427 | ||
3428 | ||
3429 | ||
3430 | # 498 "/usr/include/stdlib.h" 2 3 4 | |
3431 | ||
3432 | ||
3433 | ||
3434 | ||
3435 | extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)); | |
3436 | ||
3437 | ||
3438 | ||
3439 | ||
3440 | extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) | |
3441 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3442 | ||
3443 | ||
3444 | ||
3445 | ||
3446 | extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
3447 | ||
3448 | ||
3449 | ||
3450 | extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3451 | # 527 "/usr/include/stdlib.h" 3 4 | |
3452 | extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3453 | ||
3454 | ||
3455 | ||
3456 | ||
3457 | ||
3458 | ||
3459 | ||
3460 | extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) | |
3461 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3462 | ||
3463 | ||
3464 | ||
3465 | ||
3466 | ||
3467 | ||
3468 | extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
3469 | ||
3470 | ||
3471 | ||
3472 | ||
3473 | ||
3474 | ||
3475 | ||
3476 | extern void quick_exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
3477 | ||
3478 | ||
3479 | ||
3480 | ||
3481 | ||
3482 | ||
3483 | ||
3484 | extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
3485 | ||
3486 | ||
3487 | ||
3488 | ||
3489 | ||
3490 | ||
3491 | extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3492 | ||
3493 | ||
3494 | ||
3495 | ||
3496 | extern char *__secure_getenv (__const char *__name) | |
3497 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3498 | ||
3499 | ||
3500 | ||
3501 | ||
3502 | ||
3503 | extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3504 | ||
3505 | ||
3506 | ||
3507 | ||
3508 | ||
3509 | extern int setenv (__const char *__name, __const char *__value, int __replace) | |
3510 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3511 | ||
3512 | ||
3513 | extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__)); | |
3514 | ||
3515 | ||
3516 | ||
3517 | ||
3518 | ||
3519 | ||
3520 | extern int clearenv (void) __attribute__ ((__nothrow__)); | |
3521 | # 604 "/usr/include/stdlib.h" 3 4 | |
3522 | extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3523 | # 615 "/usr/include/stdlib.h" 3 4 | |
3524 | extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3525 | # 625 "/usr/include/stdlib.h" 3 4 | |
3526 | extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3527 | # 635 "/usr/include/stdlib.h" 3 4 | |
3528 | extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3529 | # 646 "/usr/include/stdlib.h" 3 4 | |
3530 | extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3531 | # 656 "/usr/include/stdlib.h" 3 4 | |
3532 | extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3533 | ||
3534 | ||
3535 | ||
3536 | ||
3537 | ||
3538 | ||
3539 | ||
3540 | ||
3541 | ||
3542 | extern int system (__const char *__command) __attribute__ ((__warn_unused_result__)); | |
3543 | ||
3544 | ||
3545 | ||
3546 | ||
3547 | ||
3548 | ||
3549 | extern char *canonicalize_file_name (__const char *__name) | |
3550 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3551 | # 683 "/usr/include/stdlib.h" 3 4 | |
3552 | extern char *realpath (__const char *__restrict __name, | |
3553 | char *__restrict __resolved) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3554 | ||
3555 | ||
3556 | ||
3557 | ||
3558 | ||
3559 | ||
3560 | typedef int (*__compar_fn_t) (__const void *, __const void *); | |
3561 | ||
3562 | ||
3563 | typedef __compar_fn_t comparison_fn_t; | |
3564 | ||
3565 | ||
3566 | ||
3567 | typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *); | |
3568 | ||
3569 | ||
3570 | ||
3571 | ||
3572 | ||
3573 | extern void *bsearch (__const void *__key, __const void *__base, | |
3574 | size_t __nmemb, size_t __size, __compar_fn_t __compar) | |
3575 | __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__)); | |
3576 | ||
3577 | ||
3578 | ||
3579 | extern void qsort (void *__base, size_t __nmemb, size_t __size, | |
3580 | __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4))); | |
3581 | ||
3582 | extern void qsort_r (void *__base, size_t __nmemb, size_t __size, | |
3583 | __compar_d_fn_t __compar, void *__arg) | |
3584 | __attribute__ ((__nonnull__ (1, 4))); | |
3585 | ||
3586 | ||
3587 | ||
3588 | ||
3589 | extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3590 | extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3591 | ||
3592 | ||
3593 | ||
3594 | __extension__ extern long long int llabs (long long int __x) | |
3595 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3596 | ||
3597 | ||
3598 | ||
3599 | ||
3600 | ||
3601 | ||
3602 | ||
3603 | extern div_t div (int __numer, int __denom) | |
3604 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3605 | extern ldiv_t ldiv (long int __numer, long int __denom) | |
3606 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3607 | ||
3608 | ||
3609 | ||
3610 | ||
3611 | __extension__ extern lldiv_t lldiv (long long int __numer, | |
3612 | long long int __denom) | |
3613 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__)); | |
3614 | ||
3615 | # 756 "/usr/include/stdlib.h" 3 4 | |
3616 | extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, | |
3617 | int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); | |
3618 | ||
3619 | ||
3620 | ||
3621 | ||
3622 | extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, | |
3623 | int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); | |
3624 | ||
3625 | ||
3626 | ||
3627 | ||
3628 | extern char *gcvt (double __value, int __ndigit, char *__buf) | |
3629 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); | |
3630 | ||
3631 | ||
3632 | ||
3633 | ||
3634 | extern char *qecvt (long double __value, int __ndigit, | |
3635 | int *__restrict __decpt, int *__restrict __sign) | |
3636 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); | |
3637 | extern char *qfcvt (long double __value, int __ndigit, | |
3638 | int *__restrict __decpt, int *__restrict __sign) | |
3639 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__)); | |
3640 | extern char *qgcvt (long double __value, int __ndigit, char *__buf) | |
3641 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__)); | |
3642 | ||
3643 | ||
3644 | ||
3645 | ||
3646 | extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
3647 | int *__restrict __sign, char *__restrict __buf, | |
3648 | size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); | |
3649 | extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
3650 | int *__restrict __sign, char *__restrict __buf, | |
3651 | size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); | |
3652 | ||
3653 | extern int qecvt_r (long double __value, int __ndigit, | |
3654 | int *__restrict __decpt, int *__restrict __sign, | |
3655 | char *__restrict __buf, size_t __len) | |
3656 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); | |
3657 | extern int qfcvt_r (long double __value, int __ndigit, | |
3658 | int *__restrict __decpt, int *__restrict __sign, | |
3659 | char *__restrict __buf, size_t __len) | |
3660 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5))); | |
3661 | ||
3662 | ||
3663 | ||
3664 | ||
3665 | ||
3666 | ||
3667 | ||
3668 | extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3669 | ||
3670 | ||
3671 | extern int mbtowc (wchar_t *__restrict __pwc, | |
3672 | __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3673 | ||
3674 | ||
3675 | extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3676 | ||
3677 | ||
3678 | ||
3679 | extern size_t mbstowcs (wchar_t *__restrict __pwcs, | |
3680 | __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)); | |
3681 | ||
3682 | extern size_t wcstombs (char *__restrict __s, | |
3683 | __const wchar_t *__restrict __pwcs, size_t __n) | |
3684 | __attribute__ ((__nothrow__)); | |
3685 | ||
3686 | ||
3687 | ||
3688 | ||
3689 | ||
3690 | ||
3691 | ||
3692 | ||
3693 | extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
3694 | # 844 "/usr/include/stdlib.h" 3 4 | |
3695 | extern int getsubopt (char **__restrict __optionp, | |
3696 | char *__const *__restrict __tokens, | |
3697 | char **__restrict __valuep) | |
3698 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__)); | |
3699 | ||
3700 | ||
3701 | ||
3702 | ||
3703 | ||
3704 | extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3705 | ||
3706 | ||
3707 | ||
3708 | ||
3709 | ||
3710 | ||
3711 | ||
3712 | extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__)); | |
3713 | ||
3714 | ||
3715 | ||
3716 | ||
3717 | ||
3718 | ||
3719 | ||
3720 | extern int grantpt (int __fd) __attribute__ ((__nothrow__)); | |
3721 | ||
3722 | ||
3723 | ||
3724 | extern int unlockpt (int __fd) __attribute__ ((__nothrow__)); | |
3725 | ||
3726 | ||
3727 | ||
3728 | ||
3729 | extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3730 | ||
3731 | ||
3732 | ||
3733 | ||
3734 | ||
3735 | ||
3736 | extern int ptsname_r (int __fd, char *__buf, size_t __buflen) | |
3737 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3738 | ||
3739 | ||
3740 | extern int getpt (void); | |
3741 | ||
3742 | ||
3743 | ||
3744 | ||
3745 | ||
3746 | ||
3747 | extern int getloadavg (double __loadavg[], int __nelem) | |
3748 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
3749 | ||
3750 | ||
3751 | ||
3752 | ||
3753 | ||
3754 | # 1 "/usr/include/bits/stdlib.h" 1 3 4 | |
3755 | # 24 "/usr/include/bits/stdlib.h" 3 4 | |
3756 | extern char *__realpath_chk (__const char *__restrict __name, | |
3757 | char *__restrict __resolved, | |
3758 | size_t __resolvedlen) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3759 | extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3760 | ||
3761 | ||
3762 | extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)) | |
3763 | ||
3764 | ||
3765 | ||
3766 | __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer"))); | |
3767 | ||
3768 | ||
3769 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * | |
3770 | __attribute__ ((__nothrow__)) realpath (__const char *__restrict __name, char *__restrict __resolved) | |
3771 | { | |
3772 | if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1) | |
3773 | { | |
3774 | ||
3775 | ||
3776 | ||
3777 | ||
3778 | return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1)); | |
3779 | } | |
3780 | ||
3781 | return __realpath_alias (__name, __resolved); | |
3782 | } | |
3783 | ||
3784 | ||
3785 | extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen, | |
3786 | size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
3787 | extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__)) | |
3788 | ||
3789 | __attribute__ ((__nonnull__ (2))); | |
3790 | extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__)) | |
3791 | ||
3792 | ||
3793 | __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf"))); | |
3794 | ||
3795 | ||
3796 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
3797 | __attribute__ ((__nothrow__)) ptsname_r (int __fd, char *__buf, size_t __buflen) | |
3798 | { | |
3799 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
3800 | { | |
3801 | if (!__builtin_constant_p (__buflen)) | |
3802 | return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
3803 | if (__buflen > __builtin_object_size (__buf, 2 > 1)) | |
3804 | return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
3805 | } | |
3806 | return __ptsname_r_alias (__fd, __buf, __buflen); | |
3807 | } | |
3808 | ||
3809 | ||
3810 | extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen) | |
3811 | __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3812 | extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
3813 | ||
3814 | ||
3815 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int | |
3816 | __attribute__ ((__nothrow__)) wctomb (char *__s, wchar_t __wchar) | |
3817 | { | |
3818 | ||
3819 | ||
3820 | ||
3821 | ||
3822 | ||
3823 | ||
3824 | ||
3825 | if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1)) | |
3826 | return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1)); | |
3827 | return __wctomb_alias (__s, __wchar); | |
3828 | } | |
3829 | ||
3830 | ||
3831 | extern size_t __mbstowcs_chk (wchar_t *__restrict __dst, | |
3832 | __const char *__restrict __src, | |
3833 | size_t __len, size_t __dstlen) __attribute__ ((__nothrow__)); | |
3834 | extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__)); | |
3835 | ||
3836 | ||
3837 | ||
3838 | extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__)) | |
3839 | ||
3840 | ||
3841 | ||
3842 | __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)"))); | |
3843 | ||
3844 | ||
3845 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t | |
3846 | __attribute__ ((__nothrow__)) mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) | |
3847 | ||
3848 | { | |
3849 | if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) | |
3850 | { | |
3851 | if (!__builtin_constant_p (__len)) | |
3852 | return __mbstowcs_chk (__dst, __src, __len, | |
3853 | __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); | |
3854 | ||
3855 | if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)) | |
3856 | return __mbstowcs_chk_warn (__dst, __src, __len, | |
3857 | __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t)); | |
3858 | } | |
3859 | return __mbstowcs_alias (__dst, __src, __len); | |
3860 | } | |
3861 | ||
3862 | ||
3863 | extern size_t __wcstombs_chk (char *__restrict __dst, | |
3864 | __const wchar_t *__restrict __src, | |
3865 | size_t __len, size_t __dstlen) __attribute__ ((__nothrow__)); | |
3866 | extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__)); | |
3867 | ||
3868 | ||
3869 | ||
3870 | extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__)) | |
3871 | ||
3872 | ||
3873 | ||
3874 | __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len"))); | |
3875 | ||
3876 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t | |
3877 | __attribute__ ((__nothrow__)) wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) | |
3878 | ||
3879 | { | |
3880 | if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1) | |
3881 | { | |
3882 | if (!__builtin_constant_p (__len)) | |
3883 | return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); | |
3884 | if (__len > __builtin_object_size (__dst, 2 > 1)) | |
3885 | return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)); | |
3886 | } | |
3887 | return __wcstombs_alias (__dst, __src, __len); | |
3888 | } | |
3889 | # 904 "/usr/include/stdlib.h" 2 3 4 | |
3890 | # 912 "/usr/include/stdlib.h" 3 4 | |
3891 | ||
3892 | # 315 "./../include/my_global.h" 2 | |
3893 | ||
3894 | ||
3895 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
3896 | # 152 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4 | |
3897 | typedef long int ptrdiff_t; | |
3898 | # 318 "./../include/my_global.h" 2 | |
3899 | ||
3900 | ||
3901 | # 1 "/usr/include/math.h" 1 3 4 | |
3902 | # 30 "/usr/include/math.h" 3 4 | |
3903 | ||
3904 | ||
3905 | ||
3906 | ||
3907 | # 1 "/usr/include/bits/huge_val.h" 1 3 4 | |
3908 | # 35 "/usr/include/math.h" 2 3 4 | |
3909 | ||
3910 | # 1 "/usr/include/bits/huge_valf.h" 1 3 4 | |
3911 | # 37 "/usr/include/math.h" 2 3 4 | |
3912 | # 1 "/usr/include/bits/huge_vall.h" 1 3 4 | |
3913 | # 38 "/usr/include/math.h" 2 3 4 | |
3914 | ||
3915 | ||
3916 | # 1 "/usr/include/bits/inf.h" 1 3 4 | |
3917 | # 41 "/usr/include/math.h" 2 3 4 | |
3918 | ||
3919 | ||
3920 | # 1 "/usr/include/bits/nan.h" 1 3 4 | |
3921 | # 44 "/usr/include/math.h" 2 3 4 | |
3922 | ||
3923 | ||
3924 | ||
3925 | # 1 "/usr/include/bits/mathdef.h" 1 3 4 | |
3926 | # 38 "/usr/include/bits/mathdef.h" 3 4 | |
3927 | typedef float float_t; | |
3928 | ||
3929 | typedef double double_t; | |
3930 | # 48 "/usr/include/math.h" 2 3 4 | |
3931 | # 71 "/usr/include/math.h" 3 4 | |
3932 | # 1 "/usr/include/bits/mathcalls.h" 1 3 4 | |
3933 | # 53 "/usr/include/bits/mathcalls.h" 3 4 | |
3934 | ||
3935 | ||
3936 | extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__)); | |
3937 | ||
3938 | extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__)); | |
3939 | ||
3940 | extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__)); | |
3941 | ||
3942 | extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__)); | |
3943 | ||
3944 | ||
3945 | extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__)); | |
3946 | ||
3947 | extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__)); | |
3948 | ||
3949 | extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__)); | |
3950 | ||
3951 | ||
3952 | ||
3953 | ||
3954 | extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__)); | |
3955 | ||
3956 | extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__)); | |
3957 | ||
3958 | extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__)); | |
3959 | ||
3960 | ||
3961 | ||
3962 | ||
3963 | extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); | |
3964 | ||
3965 | ||
3966 | ||
3967 | ||
3968 | ||
3969 | ||
3970 | extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__)); | |
3971 | ||
3972 | extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__)); | |
3973 | ||
3974 | extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__)); | |
3975 | ||
3976 | ||
3977 | ||
3978 | ||
3979 | ||
3980 | ||
3981 | ||
3982 | extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__)); | |
3983 | ||
3984 | ||
3985 | extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); | |
3986 | ||
3987 | ||
3988 | extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); | |
3989 | ||
3990 | ||
3991 | extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__)); | |
3992 | ||
3993 | ||
3994 | extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__)); | |
3995 | ||
3996 | ||
3997 | extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); | |
3998 | ||
3999 | ||
4000 | ||
4001 | ||
4002 | extern double exp10 (double __x) __attribute__ ((__nothrow__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__)); | |
4003 | ||
4004 | extern double pow10 (double __x) __attribute__ ((__nothrow__)); extern double __pow10 (double __x) __attribute__ ((__nothrow__)); | |
4005 | ||
4006 | ||
4007 | ||
4008 | ||
4009 | ||
4010 | extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__)); | |
4011 | ||
4012 | ||
4013 | extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__)); | |
4014 | ||
4015 | ||
4016 | extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__)); | |
4017 | ||
4018 | ||
4019 | ||
4020 | ||
4021 | ||
4022 | ||
4023 | extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__)); | |
4024 | ||
4025 | ||
4026 | extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__)); | |
4027 | ||
4028 | ||
4029 | ||
4030 | ||
4031 | ||
4032 | ||
4033 | ||
4034 | ||
4035 | extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__)); | |
4036 | ||
4037 | ||
4038 | extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__)); | |
4039 | ||
4040 | ||
4041 | ||
4042 | ||
4043 | ||
4044 | extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__)); | |
4045 | ||
4046 | ||
4047 | ||
4048 | ||
4049 | ||
4050 | ||
4051 | extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__)); | |
4052 | ||
4053 | ||
4054 | ||
4055 | ||
4056 | ||
4057 | ||
4058 | ||
4059 | ||
4060 | extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4061 | ||
4062 | ||
4063 | extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4064 | ||
4065 | ||
4066 | extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4067 | ||
4068 | ||
4069 | extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__)); | |
4070 | ||
4071 | ||
4072 | ||
4073 | ||
4074 | extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4075 | ||
4076 | ||
4077 | extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4078 | ||
4079 | ||
4080 | ||
4081 | ||
4082 | ||
4083 | extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4084 | ||
4085 | ||
4086 | extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4087 | ||
4088 | ||
4089 | extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__)); | |
4090 | ||
4091 | ||
4092 | ||
4093 | extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__)); | |
4094 | ||
4095 | ||
4096 | ||
4097 | ||
4098 | ||
4099 | extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4100 | ||
4101 | ||
4102 | ||
4103 | ||
4104 | ||
4105 | ||
4106 | extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4107 | ||
4108 | ||
4109 | ||
4110 | ||
4111 | ||
4112 | extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4113 | ||
4114 | ||
4115 | ||
4116 | extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4117 | ||
4118 | ||
4119 | extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__)); | |
4120 | extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__)); | |
4121 | extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__)); | |
4122 | extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__)); | |
4123 | extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__)); | |
4124 | extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__)); | |
4125 | ||
4126 | ||
4127 | ||
4128 | ||
4129 | ||
4130 | ||
4131 | extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__)); | |
4132 | extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__)); | |
4133 | extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__)); | |
4134 | ||
4135 | ||
4136 | ||
4137 | ||
4138 | ||
4139 | ||
4140 | extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__)); | |
4141 | ||
4142 | ||
4143 | ||
4144 | ||
4145 | ||
4146 | extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__)); | |
4147 | ||
4148 | ||
4149 | ||
4150 | ||
4151 | ||
4152 | ||
4153 | extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); | |
4154 | ||
4155 | ||
4156 | ||
4157 | ||
4158 | ||
4159 | ||
4160 | ||
4161 | extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__)); | |
4162 | ||
4163 | ||
4164 | extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4165 | ||
4166 | extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4167 | ||
4168 | ||
4169 | ||
4170 | extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__)); | |
4171 | ||
4172 | ||
4173 | ||
4174 | extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__)); | |
4175 | ||
4176 | ||
4177 | ||
4178 | extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__)); | |
4179 | ||
4180 | ||
4181 | ||
4182 | ||
4183 | extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); | |
4184 | ||
4185 | ||
4186 | ||
4187 | extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__)); | |
4188 | ||
4189 | ||
4190 | ||
4191 | extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4192 | ||
4193 | ||
4194 | ||
4195 | extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4196 | ||
4197 | ||
4198 | ||
4199 | ||
4200 | extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); | |
4201 | ||
4202 | ||
4203 | ||
4204 | ||
4205 | ||
4206 | ||
4207 | extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__)); | |
4208 | extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__)); | |
4209 | ||
4210 | ||
4211 | ||
4212 | extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__)); | |
4213 | extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__)); | |
4214 | ||
4215 | ||
4216 | ||
4217 | extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__)); | |
4218 | ||
4219 | ||
4220 | extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__)); | |
4221 | ||
4222 | ||
4223 | extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__)); | |
4224 | ||
4225 | ||
4226 | ||
4227 | extern int __fpclassify (double __value) __attribute__ ((__nothrow__)) | |
4228 | __attribute__ ((__const__)); | |
4229 | ||
4230 | ||
4231 | extern int __signbit (double __value) __attribute__ ((__nothrow__)) | |
4232 | __attribute__ ((__const__)); | |
4233 | ||
4234 | ||
4235 | ||
4236 | extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); | |
4237 | ||
4238 | ||
4239 | ||
4240 | ||
4241 | ||
4242 | ||
4243 | ||
4244 | ||
4245 | extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__)); | |
4246 | # 72 "/usr/include/math.h" 2 3 4 | |
4247 | # 94 "/usr/include/math.h" 3 4 | |
4248 | # 1 "/usr/include/bits/mathcalls.h" 1 3 4 | |
4249 | # 53 "/usr/include/bits/mathcalls.h" 3 4 | |
4250 | ||
4251 | ||
4252 | extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__)); | |
4253 | ||
4254 | extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__)); | |
4255 | ||
4256 | extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__)); | |
4257 | ||
4258 | extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__)); | |
4259 | ||
4260 | ||
4261 | extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__)); | |
4262 | ||
4263 | extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__)); | |
4264 | ||
4265 | extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__)); | |
4266 | ||
4267 | ||
4268 | ||
4269 | ||
4270 | extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__)); | |
4271 | ||
4272 | extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__)); | |
4273 | ||
4274 | extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__)); | |
4275 | ||
4276 | ||
4277 | ||
4278 | ||
4279 | extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); | |
4280 | ||
4281 | ||
4282 | ||
4283 | ||
4284 | ||
4285 | ||
4286 | extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__)); | |
4287 | ||
4288 | extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__)); | |
4289 | ||
4290 | extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__)); | |
4291 | ||
4292 | ||
4293 | ||
4294 | ||
4295 | ||
4296 | ||
4297 | ||
4298 | extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__)); | |
4299 | ||
4300 | ||
4301 | extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); | |
4302 | ||
4303 | ||
4304 | extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); | |
4305 | ||
4306 | ||
4307 | extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__)); | |
4308 | ||
4309 | ||
4310 | extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__)); | |
4311 | ||
4312 | ||
4313 | extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); | |
4314 | ||
4315 | ||
4316 | ||
4317 | ||
4318 | extern float exp10f (float __x) __attribute__ ((__nothrow__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__)); | |
4319 | ||
4320 | extern float pow10f (float __x) __attribute__ ((__nothrow__)); extern float __pow10f (float __x) __attribute__ ((__nothrow__)); | |
4321 | ||
4322 | ||
4323 | ||
4324 | ||
4325 | ||
4326 | extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__)); | |
4327 | ||
4328 | ||
4329 | extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__)); | |
4330 | ||
4331 | ||
4332 | extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__)); | |
4333 | ||
4334 | ||
4335 | ||
4336 | ||
4337 | ||
4338 | ||
4339 | extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__)); | |
4340 | ||
4341 | ||
4342 | extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__)); | |
4343 | ||
4344 | ||
4345 | ||
4346 | ||
4347 | ||
4348 | ||
4349 | ||
4350 | ||
4351 | extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4352 | ||
4353 | ||
4354 | extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__)); | |
4355 | ||
4356 | ||
4357 | ||
4358 | ||
4359 | ||
4360 | extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4361 | ||
4362 | ||
4363 | ||
4364 | ||
4365 | ||
4366 | ||
4367 | extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__)); | |
4368 | ||
4369 | ||
4370 | ||
4371 | ||
4372 | ||
4373 | ||
4374 | ||
4375 | ||
4376 | extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4377 | ||
4378 | ||
4379 | extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4380 | ||
4381 | ||
4382 | extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4383 | ||
4384 | ||
4385 | extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4386 | ||
4387 | ||
4388 | ||
4389 | ||
4390 | extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4391 | ||
4392 | ||
4393 | extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4394 | ||
4395 | ||
4396 | ||
4397 | ||
4398 | ||
4399 | extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4400 | ||
4401 | ||
4402 | extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4403 | ||
4404 | ||
4405 | extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4406 | ||
4407 | ||
4408 | ||
4409 | extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__)); | |
4410 | ||
4411 | ||
4412 | ||
4413 | ||
4414 | ||
4415 | extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4416 | ||
4417 | ||
4418 | ||
4419 | ||
4420 | ||
4421 | ||
4422 | extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4423 | ||
4424 | ||
4425 | ||
4426 | ||
4427 | ||
4428 | extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4429 | ||
4430 | ||
4431 | ||
4432 | extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4433 | ||
4434 | ||
4435 | extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__)); | |
4436 | extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__)); | |
4437 | extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__)); | |
4438 | extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__)); | |
4439 | extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__)); | |
4440 | extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__)); | |
4441 | ||
4442 | ||
4443 | ||
4444 | ||
4445 | ||
4446 | ||
4447 | extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__)); | |
4448 | extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__)); | |
4449 | extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__)); | |
4450 | ||
4451 | ||
4452 | ||
4453 | ||
4454 | ||
4455 | ||
4456 | extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__)); | |
4457 | ||
4458 | ||
4459 | ||
4460 | ||
4461 | ||
4462 | extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__)); | |
4463 | ||
4464 | ||
4465 | ||
4466 | ||
4467 | ||
4468 | ||
4469 | extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); | |
4470 | ||
4471 | ||
4472 | ||
4473 | ||
4474 | ||
4475 | ||
4476 | ||
4477 | extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__)); | |
4478 | ||
4479 | ||
4480 | extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4481 | ||
4482 | extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4483 | ||
4484 | ||
4485 | ||
4486 | extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4487 | ||
4488 | ||
4489 | ||
4490 | extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); | |
4491 | ||
4492 | ||
4493 | ||
4494 | extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__)); | |
4495 | ||
4496 | ||
4497 | ||
4498 | ||
4499 | extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); | |
4500 | ||
4501 | ||
4502 | ||
4503 | extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__)); | |
4504 | ||
4505 | ||
4506 | ||
4507 | extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4508 | ||
4509 | ||
4510 | ||
4511 | extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4512 | ||
4513 | ||
4514 | ||
4515 | ||
4516 | extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); | |
4517 | ||
4518 | ||
4519 | ||
4520 | ||
4521 | ||
4522 | ||
4523 | extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__)); | |
4524 | extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__)); | |
4525 | ||
4526 | ||
4527 | ||
4528 | extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__)); | |
4529 | extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__)); | |
4530 | ||
4531 | ||
4532 | ||
4533 | extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4534 | ||
4535 | ||
4536 | extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4537 | ||
4538 | ||
4539 | extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4540 | ||
4541 | ||
4542 | ||
4543 | extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__)) | |
4544 | __attribute__ ((__const__)); | |
4545 | ||
4546 | ||
4547 | extern int __signbitf (float __value) __attribute__ ((__nothrow__)) | |
4548 | __attribute__ ((__const__)); | |
4549 | ||
4550 | ||
4551 | ||
4552 | extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); | |
4553 | ||
4554 | ||
4555 | ||
4556 | ||
4557 | ||
4558 | ||
4559 | ||
4560 | ||
4561 | extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__)); | |
4562 | # 95 "/usr/include/math.h" 2 3 4 | |
4563 | # 141 "/usr/include/math.h" 3 4 | |
4564 | # 1 "/usr/include/bits/mathcalls.h" 1 3 4 | |
4565 | # 53 "/usr/include/bits/mathcalls.h" 3 4 | |
4566 | ||
4567 | ||
4568 | extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__)); | |
4569 | ||
4570 | extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__)); | |
4571 | ||
4572 | extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__)); | |
4573 | ||
4574 | extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); | |
4575 | ||
4576 | ||
4577 | extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__)); | |
4578 | ||
4579 | extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__)); | |
4580 | ||
4581 | extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__)); | |
4582 | ||
4583 | ||
4584 | ||
4585 | ||
4586 | extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__)); | |
4587 | ||
4588 | extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__)); | |
4589 | ||
4590 | extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__)); | |
4591 | ||
4592 | ||
4593 | ||
4594 | ||
4595 | extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); | |
4596 | ||
4597 | ||
4598 | ||
4599 | ||
4600 | ||
4601 | ||
4602 | extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__)); | |
4603 | ||
4604 | extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__)); | |
4605 | ||
4606 | extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__)); | |
4607 | ||
4608 | ||
4609 | ||
4610 | ||
4611 | ||
4612 | ||
4613 | ||
4614 | extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__)); | |
4615 | ||
4616 | ||
4617 | extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); | |
4618 | ||
4619 | ||
4620 | extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); | |
4621 | ||
4622 | ||
4623 | extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__)); | |
4624 | ||
4625 | ||
4626 | extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__)); | |
4627 | ||
4628 | ||
4629 | extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); | |
4630 | ||
4631 | ||
4632 | ||
4633 | ||
4634 | extern long double exp10l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__)); | |
4635 | ||
4636 | extern long double pow10l (long double __x) __attribute__ ((__nothrow__)); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__)); | |
4637 | ||
4638 | ||
4639 | ||
4640 | ||
4641 | ||
4642 | extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__)); | |
4643 | ||
4644 | ||
4645 | extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__)); | |
4646 | ||
4647 | ||
4648 | extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__)); | |
4649 | ||
4650 | ||
4651 | ||
4652 | ||
4653 | ||
4654 | ||
4655 | extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__)); | |
4656 | ||
4657 | ||
4658 | extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__)); | |
4659 | ||
4660 | ||
4661 | ||
4662 | ||
4663 | ||
4664 | ||
4665 | ||
4666 | ||
4667 | extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4668 | ||
4669 | ||
4670 | extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__)); | |
4671 | ||
4672 | ||
4673 | ||
4674 | ||
4675 | ||
4676 | extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4677 | ||
4678 | ||
4679 | ||
4680 | ||
4681 | ||
4682 | ||
4683 | extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__)); | |
4684 | ||
4685 | ||
4686 | ||
4687 | ||
4688 | ||
4689 | ||
4690 | ||
4691 | ||
4692 | extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4693 | ||
4694 | ||
4695 | extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4696 | ||
4697 | ||
4698 | extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4699 | ||
4700 | ||
4701 | extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4702 | ||
4703 | ||
4704 | ||
4705 | ||
4706 | extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4707 | ||
4708 | ||
4709 | extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4710 | ||
4711 | ||
4712 | ||
4713 | ||
4714 | ||
4715 | extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4716 | ||
4717 | ||
4718 | extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4719 | ||
4720 | ||
4721 | extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4722 | ||
4723 | ||
4724 | ||
4725 | extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__)); | |
4726 | ||
4727 | ||
4728 | ||
4729 | ||
4730 | ||
4731 | extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4732 | ||
4733 | ||
4734 | ||
4735 | ||
4736 | ||
4737 | ||
4738 | extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4739 | ||
4740 | ||
4741 | ||
4742 | ||
4743 | ||
4744 | extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4745 | ||
4746 | ||
4747 | ||
4748 | extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4749 | ||
4750 | ||
4751 | extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__)); | |
4752 | extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__)); | |
4753 | extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__)); | |
4754 | extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__)); | |
4755 | extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__)); | |
4756 | extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__)); | |
4757 | ||
4758 | ||
4759 | ||
4760 | ||
4761 | ||
4762 | ||
4763 | extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__)); | |
4764 | extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__)); | |
4765 | extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__)); | |
4766 | ||
4767 | ||
4768 | ||
4769 | ||
4770 | ||
4771 | ||
4772 | extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__)); | |
4773 | ||
4774 | ||
4775 | ||
4776 | ||
4777 | ||
4778 | extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__)); | |
4779 | ||
4780 | ||
4781 | ||
4782 | ||
4783 | ||
4784 | ||
4785 | extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); | |
4786 | ||
4787 | ||
4788 | ||
4789 | ||
4790 | ||
4791 | ||
4792 | ||
4793 | extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__)); | |
4794 | ||
4795 | ||
4796 | extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4797 | ||
4798 | extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4799 | ||
4800 | ||
4801 | ||
4802 | extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4803 | ||
4804 | ||
4805 | ||
4806 | extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); | |
4807 | ||
4808 | ||
4809 | ||
4810 | extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__)); | |
4811 | ||
4812 | ||
4813 | ||
4814 | ||
4815 | extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); | |
4816 | ||
4817 | ||
4818 | ||
4819 | extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__)); | |
4820 | ||
4821 | ||
4822 | ||
4823 | extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4824 | ||
4825 | ||
4826 | ||
4827 | extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
4828 | ||
4829 | ||
4830 | ||
4831 | ||
4832 | extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); | |
4833 | ||
4834 | ||
4835 | ||
4836 | ||
4837 | ||
4838 | ||
4839 | extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__)); | |
4840 | extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__)); | |
4841 | ||
4842 | ||
4843 | ||
4844 | extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__)); | |
4845 | extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__)); | |
4846 | ||
4847 | ||
4848 | ||
4849 | extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4850 | ||
4851 | ||
4852 | extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4853 | ||
4854 | ||
4855 | extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); | |
4856 | ||
4857 | ||
4858 | ||
4859 | extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__)) | |
4860 | __attribute__ ((__const__)); | |
4861 | ||
4862 | ||
4863 | extern int __signbitl (long double __value) __attribute__ ((__nothrow__)) | |
4864 | __attribute__ ((__const__)); | |
4865 | ||
4866 | ||
4867 | ||
4868 | extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); | |
4869 | ||
4870 | ||
4871 | ||
4872 | ||
4873 | ||
4874 | ||
4875 | ||
4876 | ||
4877 | extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); | |
4878 | # 142 "/usr/include/math.h" 2 3 4 | |
4879 | # 157 "/usr/include/math.h" 3 4 | |
4880 | extern int signgam; | |
4881 | # 198 "/usr/include/math.h" 3 4 | |
4882 | enum | |
4883 | { | |
4884 | FP_NAN, | |
4885 | ||
4886 | FP_INFINITE, | |
4887 | ||
4888 | FP_ZERO, | |
4889 | ||
4890 | FP_SUBNORMAL, | |
4891 | ||
4892 | FP_NORMAL | |
4893 | ||
4894 | }; | |
4895 | # 284 "/usr/include/math.h" 3 4 | |
4896 | typedef enum | |
4897 | { | |
4898 | _IEEE_ = -1, | |
4899 | _SVID_, | |
4900 | _XOPEN_, | |
4901 | _POSIX_, | |
4902 | _ISOC_ | |
4903 | } _LIB_VERSION_TYPE; | |
4904 | ||
4905 | ||
4906 | ||
4907 | ||
4908 | extern _LIB_VERSION_TYPE _LIB_VERSION; | |
4909 | # 309 "/usr/include/math.h" 3 4 | |
4910 | struct exception | |
4911 | ||
4912 | { | |
4913 | int type; | |
4914 | char *name; | |
4915 | double arg1; | |
4916 | double arg2; | |
4917 | double retval; | |
4918 | }; | |
4919 | ||
4920 | ||
4921 | ||
4922 | ||
4923 | extern int matherr (struct exception *__exc); | |
4924 | # 409 "/usr/include/math.h" 3 4 | |
4925 | # 1 "/usr/include/bits/mathinline.h" 1 3 4 | |
4926 | # 63 "/usr/include/bits/mathinline.h" 3 4 | |
4927 | extern __inline int | |
4928 | __attribute__ ((__nothrow__)) __signbitf (float __x) | |
4929 | { | |
4930 | __extension__ union { float __f; int __i; } __u = { __f: __x }; | |
4931 | return __u.__i < 0; | |
4932 | } | |
4933 | extern __inline int | |
4934 | __attribute__ ((__nothrow__)) __signbit (double __x) | |
4935 | { | |
4936 | __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; | |
4937 | return __u.__i[0] < 0; | |
4938 | } | |
4939 | ||
4940 | extern __inline int | |
4941 | __attribute__ ((__nothrow__)) __signbitl (long double __x) | |
4942 | { | |
4943 | __extension__ union { long double __d; int __i[4]; } __u = { __d: __x }; | |
4944 | return __u.__i[0] < 0; | |
4945 | } | |
4946 | # 116 "/usr/include/bits/mathinline.h" 3 4 | |
4947 | extern __inline double fdim (double __x, double __y) __attribute__ ((__nothrow__)); | |
4948 | extern __inline double | |
4949 | __attribute__ ((__nothrow__)) fdim (double __x, double __y) | |
4950 | { | |
4951 | return __x <= __y ? 0 : __x - __y; | |
4952 | } | |
4953 | ||
4954 | extern __inline float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); | |
4955 | extern __inline float | |
4956 | __attribute__ ((__nothrow__)) fdimf (float __x, float __y) | |
4957 | { | |
4958 | return __x <= __y ? 0 : __x - __y; | |
4959 | } | |
4960 | # 410 "/usr/include/math.h" 2 3 4 | |
4961 | # 465 "/usr/include/math.h" 3 4 | |
4962 | ||
4963 | # 321 "./../include/my_global.h" 2 | |
4964 | ||
4965 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 1 3 4 | |
4966 | # 11 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 3 4 | |
4967 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/syslimits.h" 1 3 4 | |
4968 | ||
4969 | ||
4970 | ||
4971 | ||
4972 | ||
4973 | ||
4974 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 1 3 4 | |
4975 | # 122 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 3 4 | |
4976 | # 1 "/usr/include/limits.h" 1 3 4 | |
4977 | # 145 "/usr/include/limits.h" 3 4 | |
4978 | # 1 "/usr/include/bits/posix1_lim.h" 1 3 4 | |
4979 | # 157 "/usr/include/bits/posix1_lim.h" 3 4 | |
4980 | # 1 "/usr/include/bits/local_lim.h" 1 3 4 | |
4981 | # 40 "/usr/include/bits/local_lim.h" 3 4 | |
4982 | # 1 "/usr/include/linux/limits.h" 1 3 4 | |
4983 | # 41 "/usr/include/bits/local_lim.h" 2 3 4 | |
4984 | # 158 "/usr/include/bits/posix1_lim.h" 2 3 4 | |
4985 | # 146 "/usr/include/limits.h" 2 3 4 | |
4986 | ||
4987 | ||
4988 | ||
4989 | # 1 "/usr/include/bits/posix2_lim.h" 1 3 4 | |
4990 | # 150 "/usr/include/limits.h" 2 3 4 | |
4991 | ||
4992 | ||
4993 | ||
4994 | # 1 "/usr/include/bits/xopen_lim.h" 1 3 4 | |
4995 | # 34 "/usr/include/bits/xopen_lim.h" 3 4 | |
4996 | # 1 "/usr/include/bits/stdio_lim.h" 1 3 4 | |
4997 | # 35 "/usr/include/bits/xopen_lim.h" 2 3 4 | |
4998 | # 154 "/usr/include/limits.h" 2 3 4 | |
4999 | # 123 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 2 3 4 | |
5000 | # 8 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/syslimits.h" 2 3 4 | |
5001 | # 12 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 2 3 4 | |
5002 | # 323 "./../include/my_global.h" 2 | |
5003 | ||
5004 | ||
5005 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/float.h" 1 3 4 | |
5006 | # 326 "./../include/my_global.h" 2 | |
5007 | ||
5008 | ||
5009 | # 1 "/usr/include/fenv.h" 1 3 4 | |
5010 | # 58 "/usr/include/fenv.h" 3 4 | |
5011 | # 1 "/usr/include/bits/fenv.h" 1 3 4 | |
5012 | # 26 "/usr/include/bits/fenv.h" 3 4 | |
5013 | enum | |
5014 | { | |
5015 | FE_INEXACT = 1 << (31 - 6), | |
5016 | ||
5017 | FE_DIVBYZERO = 1 << (31 - 5), | |
5018 | ||
5019 | FE_UNDERFLOW = 1 << (31 - 4), | |
5020 | ||
5021 | FE_OVERFLOW = 1 << (31 - 3), | |
5022 | # 43 "/usr/include/bits/fenv.h" 3 4 | |
5023 | FE_INVALID = 1 << (31 - 2), | |
5024 | # 54 "/usr/include/bits/fenv.h" 3 4 | |
5025 | FE_INVALID_SNAN = 1 << (31 - 7), | |
5026 | ||
5027 | ||
5028 | ||
5029 | FE_INVALID_ISI = 1 << (31 - 8), | |
5030 | ||
5031 | ||
5032 | ||
5033 | FE_INVALID_IDI = 1 << (31 - 9), | |
5034 | ||
5035 | ||
5036 | ||
5037 | FE_INVALID_ZDZ = 1 << (31 - 10), | |
5038 | ||
5039 | ||
5040 | ||
5041 | FE_INVALID_IMZ = 1 << (31 - 11), | |
5042 | ||
5043 | ||
5044 | ||
5045 | FE_INVALID_COMPARE = 1 << (31 - 12), | |
5046 | ||
5047 | ||
5048 | ||
5049 | ||
5050 | ||
5051 | FE_INVALID_SOFTWARE = 1 << (31 - 21), | |
5052 | ||
5053 | ||
5054 | ||
5055 | ||
5056 | FE_INVALID_SQRT = 1 << (31 - 22), | |
5057 | ||
5058 | ||
5059 | ||
5060 | FE_INVALID_INTEGER_CONVERSION = 1 << (31 - 23) | |
5061 | ||
5062 | ||
5063 | ||
5064 | ||
5065 | ||
5066 | ||
5067 | ||
5068 | }; | |
5069 | ||
5070 | ||
5071 | ||
5072 | ||
5073 | ||
5074 | ||
5075 | ||
5076 | enum | |
5077 | { | |
5078 | FE_TONEAREST = 0, | |
5079 | ||
5080 | FE_TOWARDZERO = 1, | |
5081 | ||
5082 | FE_UPWARD = 2, | |
5083 | ||
5084 | FE_DOWNWARD = 3 | |
5085 | ||
5086 | }; | |
5087 | ||
5088 | ||
5089 | typedef unsigned int fexcept_t; | |
5090 | ||
5091 | ||
5092 | ||
5093 | typedef double fenv_t; | |
5094 | ||
5095 | ||
5096 | extern const fenv_t __fe_dfl_env; | |
5097 | ||
5098 | ||
5099 | ||
5100 | ||
5101 | ||
5102 | extern const fenv_t __fe_enabled_env; | |
5103 | ||
5104 | ||
5105 | ||
5106 | ||
5107 | extern const fenv_t __fe_nonieee_env; | |
5108 | ||
5109 | ||
5110 | ||
5111 | ||
5112 | ||
5113 | ||
5114 | ||
5115 | ||
5116 | ||
5117 | ||
5118 | extern const fenv_t *__fe_nomask_env (void); | |
5119 | ||
5120 | ||
5121 | ||
5122 | ||
5123 | ||
5124 | ||
5125 | ||
5126 | extern const fenv_t *__fe_mask_env (void); | |
5127 | ||
5128 | ||
5129 | ||
5130 | # 59 "/usr/include/fenv.h" 2 3 4 | |
5131 | ||
5132 | ||
5133 | ||
5134 | ||
5135 | ||
5136 | ||
5137 | extern int feclearexcept (int __excepts) __attribute__ ((__nothrow__)); | |
5138 | ||
5139 | ||
5140 | ||
5141 | extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__)); | |
5142 | ||
5143 | ||
5144 | extern int feraiseexcept (int __excepts) __attribute__ ((__nothrow__)); | |
5145 | ||
5146 | ||
5147 | ||
5148 | extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__)); | |
5149 | ||
5150 | ||
5151 | ||
5152 | extern int fetestexcept (int __excepts) __attribute__ ((__nothrow__)); | |
5153 | ||
5154 | ||
5155 | ||
5156 | ||
5157 | ||
5158 | extern int fegetround (void) __attribute__ ((__nothrow__)); | |
5159 | ||
5160 | ||
5161 | extern int fesetround (int __rounding_direction) __attribute__ ((__nothrow__)); | |
5162 | ||
5163 | ||
5164 | ||
5165 | ||
5166 | ||
5167 | ||
5168 | extern int fegetenv (fenv_t *__envp) __attribute__ ((__nothrow__)); | |
5169 | ||
5170 | ||
5171 | ||
5172 | ||
5173 | extern int feholdexcept (fenv_t *__envp) __attribute__ ((__nothrow__)); | |
5174 | ||
5175 | ||
5176 | ||
5177 | extern int fesetenv (__const fenv_t *__envp) __attribute__ ((__nothrow__)); | |
5178 | ||
5179 | ||
5180 | ||
5181 | ||
5182 | extern int feupdateenv (__const fenv_t *__envp) __attribute__ ((__nothrow__)); | |
5183 | ||
5184 | ||
5185 | ||
5186 | ||
5187 | # 1 "/usr/include/bits/fenvinline.h" 1 3 4 | |
5188 | # 116 "/usr/include/fenv.h" 2 3 4 | |
5189 | ||
5190 | ||
5191 | ||
5192 | ||
5193 | ||
5194 | ||
5195 | ||
5196 | extern int feenableexcept (int __excepts) __attribute__ ((__nothrow__)); | |
5197 | ||
5198 | ||
5199 | ||
5200 | ||
5201 | extern int fedisableexcept (int __excepts) __attribute__ ((__nothrow__)); | |
5202 | ||
5203 | ||
5204 | extern int fegetexcept (void) __attribute__ ((__nothrow__)); | |
5205 | ||
5206 | ||
5207 | ||
5208 | # 329 "./../include/my_global.h" 2 | |
5209 | ||
5210 | ||
5211 | ||
5212 | ||
5213 | ||
5214 | ||
5215 | # 1 "/usr/include/fcntl.h" 1 3 4 | |
5216 | # 30 "/usr/include/fcntl.h" 3 4 | |
5217 | ||
5218 | ||
5219 | ||
5220 | ||
5221 | # 1 "/usr/include/bits/fcntl.h" 1 3 4 | |
5222 | # 27 "/usr/include/bits/fcntl.h" 3 4 | |
5223 | # 1 "/usr/include/bits/uio.h" 1 3 4 | |
5224 | # 44 "/usr/include/bits/uio.h" 3 4 | |
5225 | struct iovec | |
5226 | { | |
5227 | void *iov_base; | |
5228 | size_t iov_len; | |
5229 | }; | |
5230 | # 28 "/usr/include/bits/fcntl.h" 2 3 4 | |
5231 | # 144 "/usr/include/bits/fcntl.h" 3 4 | |
5232 | struct flock | |
5233 | { | |
5234 | short int l_type; | |
5235 | short int l_whence; | |
5236 | ||
5237 | __off_t l_start; | |
5238 | __off_t l_len; | |
5239 | ||
5240 | ||
5241 | ||
5242 | ||
5243 | __pid_t l_pid; | |
5244 | }; | |
5245 | ||
5246 | ||
5247 | struct flock64 | |
5248 | { | |
5249 | short int l_type; | |
5250 | short int l_whence; | |
5251 | __off64_t l_start; | |
5252 | __off64_t l_len; | |
5253 | __pid_t l_pid; | |
5254 | }; | |
5255 | # 211 "/usr/include/bits/fcntl.h" 3 4 | |
5256 | ||
5257 | ||
5258 | ||
5259 | ||
5260 | ||
5261 | extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count) | |
5262 | __attribute__ ((__nothrow__)); | |
5263 | ||
5264 | ||
5265 | ||
5266 | extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to, | |
5267 | unsigned int __flags); | |
5268 | ||
5269 | ||
5270 | ||
5271 | extern ssize_t vmsplice (int __fdout, const struct iovec *__iov, | |
5272 | size_t __count, unsigned int __flags); | |
5273 | ||
5274 | ||
5275 | extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout, | |
5276 | __off64_t *__offout, size_t __len, | |
5277 | unsigned int __flags); | |
5278 | ||
5279 | ||
5280 | extern ssize_t tee (int __fdin, int __fdout, size_t __len, | |
5281 | unsigned int __flags); | |
5282 | ||
5283 | ||
5284 | ||
5285 | extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len); | |
5286 | # 251 "/usr/include/bits/fcntl.h" 3 4 | |
5287 | extern int fallocate64 (int __fd, int __mode, __off64_t __offset, | |
5288 | __off64_t __len); | |
5289 | ||
5290 | ||
5291 | ||
5292 | ||
5293 | ||
5294 | # 35 "/usr/include/fcntl.h" 2 3 4 | |
5295 | ||
5296 | ||
5297 | ||
5298 | # 1 "/usr/include/sys/stat.h" 1 3 4 | |
5299 | # 105 "/usr/include/sys/stat.h" 3 4 | |
5300 | ||
5301 | ||
5302 | # 1 "/usr/include/bits/stat.h" 1 3 4 | |
5303 | # 24 "/usr/include/bits/stat.h" 3 4 | |
5304 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
5305 | # 25 "/usr/include/bits/stat.h" 2 3 4 | |
5306 | # 140 "/usr/include/bits/stat.h" 3 4 | |
5307 | struct stat | |
5308 | { | |
5309 | __dev_t st_dev; | |
5310 | ||
5311 | __ino_t st_ino; | |
5312 | ||
5313 | ||
5314 | ||
5315 | __nlink_t st_nlink; | |
5316 | __mode_t st_mode; | |
5317 | __uid_t st_uid; | |
5318 | __gid_t st_gid; | |
5319 | int __pad2; | |
5320 | __dev_t st_rdev; | |
5321 | ||
5322 | __off_t st_size; | |
5323 | ||
5324 | ||
5325 | ||
5326 | __blksize_t st_blksize; | |
5327 | ||
5328 | ||
5329 | __blkcnt_t st_blocks; | |
5330 | # 173 "/usr/include/bits/stat.h" 3 4 | |
5331 | struct timespec st_atim; | |
5332 | struct timespec st_mtim; | |
5333 | struct timespec st_ctim; | |
5334 | # 187 "/usr/include/bits/stat.h" 3 4 | |
5335 | unsigned long int __unused4; | |
5336 | unsigned long int __unused5; | |
5337 | unsigned long int __unused6; | |
5338 | }; | |
5339 | ||
5340 | ||
5341 | struct stat64 | |
5342 | { | |
5343 | __dev_t st_dev; | |
5344 | __ino64_t st_ino; | |
5345 | __nlink_t st_nlink; | |
5346 | __mode_t st_mode; | |
5347 | __uid_t st_uid; | |
5348 | __gid_t st_gid; | |
5349 | int __pad2; | |
5350 | __dev_t st_rdev; | |
5351 | __off64_t st_size; | |
5352 | __blksize_t st_blksize; | |
5353 | __blkcnt64_t st_blocks; | |
5354 | ||
5355 | ||
5356 | ||
5357 | ||
5358 | ||
5359 | ||
5360 | ||
5361 | struct timespec st_atim; | |
5362 | struct timespec st_mtim; | |
5363 | struct timespec st_ctim; | |
5364 | # 227 "/usr/include/bits/stat.h" 3 4 | |
5365 | unsigned long int __unused4; | |
5366 | unsigned long int __unused5; | |
5367 | unsigned long int __unused6; | |
5368 | }; | |
5369 | # 108 "/usr/include/sys/stat.h" 2 3 4 | |
5370 | # 209 "/usr/include/sys/stat.h" 3 4 | |
5371 | extern int stat (__const char *__restrict __file, | |
5372 | struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
5373 | ||
5374 | ||
5375 | ||
5376 | extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5377 | # 228 "/usr/include/sys/stat.h" 3 4 | |
5378 | extern int stat64 (__const char *__restrict __file, | |
5379 | struct stat64 *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
5380 | extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5381 | ||
5382 | ||
5383 | ||
5384 | ||
5385 | ||
5386 | ||
5387 | ||
5388 | extern int fstatat (int __fd, __const char *__restrict __file, | |
5389 | struct stat *__restrict __buf, int __flag) | |
5390 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5391 | # 253 "/usr/include/sys/stat.h" 3 4 | |
5392 | extern int fstatat64 (int __fd, __const char *__restrict __file, | |
5393 | struct stat64 *__restrict __buf, int __flag) | |
5394 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5395 | ||
5396 | ||
5397 | ||
5398 | ||
5399 | ||
5400 | ||
5401 | ||
5402 | extern int lstat (__const char *__restrict __file, | |
5403 | struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
5404 | # 276 "/usr/include/sys/stat.h" 3 4 | |
5405 | extern int lstat64 (__const char *__restrict __file, | |
5406 | struct stat64 *__restrict __buf) | |
5407 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
5408 | ||
5409 | ||
5410 | ||
5411 | ||
5412 | ||
5413 | extern int chmod (__const char *__file, __mode_t __mode) | |
5414 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5415 | ||
5416 | ||
5417 | ||
5418 | ||
5419 | ||
5420 | extern int lchmod (__const char *__file, __mode_t __mode) | |
5421 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5422 | ||
5423 | ||
5424 | ||
5425 | ||
5426 | extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__)); | |
5427 | ||
5428 | ||
5429 | ||
5430 | ||
5431 | ||
5432 | extern int fchmodat (int __fd, __const char *__file, __mode_t __mode, | |
5433 | int __flag) | |
5434 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); | |
5435 | ||
5436 | ||
5437 | ||
5438 | ||
5439 | ||
5440 | ||
5441 | extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__)); | |
5442 | ||
5443 | ||
5444 | ||
5445 | ||
5446 | extern __mode_t getumask (void) __attribute__ ((__nothrow__)); | |
5447 | ||
5448 | ||
5449 | ||
5450 | extern int mkdir (__const char *__path, __mode_t __mode) | |
5451 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5452 | ||
5453 | ||
5454 | ||
5455 | ||
5456 | ||
5457 | extern int mkdirat (int __fd, __const char *__path, __mode_t __mode) | |
5458 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5459 | ||
5460 | ||
5461 | ||
5462 | ||
5463 | ||
5464 | ||
5465 | extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev) | |
5466 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5467 | ||
5468 | ||
5469 | ||
5470 | ||
5471 | ||
5472 | extern int mknodat (int __fd, __const char *__path, __mode_t __mode, | |
5473 | __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5474 | ||
5475 | ||
5476 | ||
5477 | ||
5478 | ||
5479 | extern int mkfifo (__const char *__path, __mode_t __mode) | |
5480 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5481 | ||
5482 | ||
5483 | ||
5484 | ||
5485 | ||
5486 | extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode) | |
5487 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5488 | ||
5489 | ||
5490 | ||
5491 | ||
5492 | ||
5493 | extern int utimensat (int __fd, __const char *__path, | |
5494 | __const struct timespec __times[2], | |
5495 | int __flags) | |
5496 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
5497 | ||
5498 | ||
5499 | ||
5500 | ||
5501 | extern int futimens (int __fd, __const struct timespec __times[2]) __attribute__ ((__nothrow__)); | |
5502 | # 399 "/usr/include/sys/stat.h" 3 4 | |
5503 | extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) | |
5504 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); | |
5505 | extern int __xstat (int __ver, __const char *__filename, | |
5506 | struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5507 | extern int __lxstat (int __ver, __const char *__filename, | |
5508 | struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5509 | extern int __fxstatat (int __ver, int __fildes, __const char *__filename, | |
5510 | struct stat *__stat_buf, int __flag) | |
5511 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); | |
5512 | # 432 "/usr/include/sys/stat.h" 3 4 | |
5513 | extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf) | |
5514 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))); | |
5515 | extern int __xstat64 (int __ver, __const char *__filename, | |
5516 | struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5517 | extern int __lxstat64 (int __ver, __const char *__filename, | |
5518 | struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
5519 | extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename, | |
5520 | struct stat64 *__stat_buf, int __flag) | |
5521 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))); | |
5522 | ||
5523 | extern int __xmknod (int __ver, __const char *__path, __mode_t __mode, | |
5524 | __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); | |
5525 | ||
5526 | extern int __xmknodat (int __ver, int __fd, __const char *__path, | |
5527 | __mode_t __mode, __dev_t *__dev) | |
5528 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5))); | |
5529 | ||
5530 | ||
5531 | ||
5532 | ||
5533 | extern __inline int | |
5534 | __attribute__ ((__nothrow__)) stat (__const char *__path, struct stat *__statbuf) | |
5535 | { | |
5536 | return __xstat (1, __path, __statbuf); | |
5537 | } | |
5538 | ||
5539 | ||
5540 | extern __inline int | |
5541 | __attribute__ ((__nothrow__)) lstat (__const char *__path, struct stat *__statbuf) | |
5542 | { | |
5543 | return __lxstat (1, __path, __statbuf); | |
5544 | } | |
5545 | ||
5546 | ||
5547 | extern __inline int | |
5548 | __attribute__ ((__nothrow__)) fstat (int __fd, struct stat *__statbuf) | |
5549 | { | |
5550 | return __fxstat (1, __fd, __statbuf); | |
5551 | } | |
5552 | ||
5553 | ||
5554 | extern __inline int | |
5555 | __attribute__ ((__nothrow__)) fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag) | |
5556 | ||
5557 | { | |
5558 | return __fxstatat (1, __fd, __filename, __statbuf, __flag); | |
5559 | } | |
5560 | ||
5561 | ||
5562 | ||
5563 | extern __inline int | |
5564 | __attribute__ ((__nothrow__)) mknod (__const char *__path, __mode_t __mode, __dev_t __dev) | |
5565 | { | |
5566 | return __xmknod (1, __path, __mode, &__dev); | |
5567 | } | |
5568 | ||
5569 | ||
5570 | ||
5571 | extern __inline int | |
5572 | __attribute__ ((__nothrow__)) mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev) | |
5573 | ||
5574 | { | |
5575 | return __xmknodat (1, __fd, __path, __mode, &__dev); | |
5576 | } | |
5577 | ||
5578 | ||
5579 | ||
5580 | ||
5581 | ||
5582 | extern __inline int | |
5583 | __attribute__ ((__nothrow__)) stat64 (__const char *__path, struct stat64 *__statbuf) | |
5584 | { | |
5585 | return __xstat64 (1, __path, __statbuf); | |
5586 | } | |
5587 | ||
5588 | ||
5589 | extern __inline int | |
5590 | __attribute__ ((__nothrow__)) lstat64 (__const char *__path, struct stat64 *__statbuf) | |
5591 | { | |
5592 | return __lxstat64 (1, __path, __statbuf); | |
5593 | } | |
5594 | ||
5595 | ||
5596 | extern __inline int | |
5597 | __attribute__ ((__nothrow__)) fstat64 (int __fd, struct stat64 *__statbuf) | |
5598 | { | |
5599 | return __fxstat64 (1, __fd, __statbuf); | |
5600 | } | |
5601 | ||
5602 | ||
5603 | extern __inline int | |
5604 | __attribute__ ((__nothrow__)) fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag) | |
5605 | ||
5606 | { | |
5607 | return __fxstatat64 (1, __fd, __filename, __statbuf, __flag); | |
5608 | } | |
5609 | ||
5610 | ||
5611 | ||
5612 | ||
5613 | ||
5614 | ||
5615 | ||
5616 | # 39 "/usr/include/fcntl.h" 2 3 4 | |
5617 | # 76 "/usr/include/fcntl.h" 3 4 | |
5618 | extern int fcntl (int __fd, int __cmd, ...); | |
5619 | # 85 "/usr/include/fcntl.h" 3 4 | |
5620 | extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); | |
5621 | # 95 "/usr/include/fcntl.h" 3 4 | |
5622 | extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); | |
5623 | # 109 "/usr/include/fcntl.h" 3 4 | |
5624 | extern int openat (int __fd, __const char *__file, int __oflag, ...) | |
5625 | __attribute__ ((__nonnull__ (2))); | |
5626 | # 120 "/usr/include/fcntl.h" 3 4 | |
5627 | extern int openat64 (int __fd, __const char *__file, int __oflag, ...) | |
5628 | __attribute__ ((__nonnull__ (2))); | |
5629 | # 130 "/usr/include/fcntl.h" 3 4 | |
5630 | extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); | |
5631 | # 140 "/usr/include/fcntl.h" 3 4 | |
5632 | extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1))); | |
5633 | # 159 "/usr/include/fcntl.h" 3 4 | |
5634 | extern int lockf (int __fd, int __cmd, __off_t __len); | |
5635 | # 168 "/usr/include/fcntl.h" 3 4 | |
5636 | extern int lockf64 (int __fd, int __cmd, __off64_t __len); | |
5637 | ||
5638 | ||
5639 | ||
5640 | ||
5641 | ||
5642 | ||
5643 | ||
5644 | extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len, | |
5645 | int __advise) __attribute__ ((__nothrow__)); | |
5646 | # 188 "/usr/include/fcntl.h" 3 4 | |
5647 | extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len, | |
5648 | int __advise) __attribute__ ((__nothrow__)); | |
5649 | # 198 "/usr/include/fcntl.h" 3 4 | |
5650 | extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); | |
5651 | # 209 "/usr/include/fcntl.h" 3 4 | |
5652 | extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len); | |
5653 | ||
5654 | ||
5655 | ||
5656 | ||
5657 | ||
5658 | ||
5659 | ||
5660 | # 1 "/usr/include/bits/fcntl2.h" 1 3 4 | |
5661 | # 27 "/usr/include/bits/fcntl2.h" 3 4 | |
5662 | extern int __open_2 (__const char *__path, int __oflag) __attribute__ ((__nonnull__ (1))); | |
5663 | extern int __open_alias (__const char *__path, int __oflag, ...) __asm__ ("" "open") __attribute__ ((__nonnull__ (1))); | |
5664 | ||
5665 | ||
5666 | ||
5667 | ||
5668 | ||
5669 | ||
5670 | ||
5671 | extern void __open_too_many_args (void) __attribute__((__error__ ("open can be called either with 2 or 3 arguments, not more"))); | |
5672 | ||
5673 | extern void __open_missing_mode (void) __attribute__((__error__ ("open with O_CREAT in second argument needs 3 arguments"))); | |
5674 | ||
5675 | ||
5676 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
5677 | open (__const char *__path, int __oflag, ...) | |
5678 | { | |
5679 | if (__builtin_va_arg_pack_len () > 1) | |
5680 | __open_too_many_args (); | |
5681 | ||
5682 | if (__builtin_constant_p (__oflag)) | |
5683 | { | |
5684 | if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) | |
5685 | { | |
5686 | __open_missing_mode (); | |
5687 | return __open_2 (__path, __oflag); | |
5688 | } | |
5689 | return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); | |
5690 | } | |
5691 | ||
5692 | if (__builtin_va_arg_pack_len () < 1) | |
5693 | return __open_2 (__path, __oflag); | |
5694 | ||
5695 | return __open_alias (__path, __oflag, __builtin_va_arg_pack ()); | |
5696 | } | |
5697 | ||
5698 | ||
5699 | ||
5700 | extern int __open64_2 (__const char *__path, int __oflag) __attribute__ ((__nonnull__ (1))); | |
5701 | extern int __open64_alias (__const char *__path, int __oflag, ...) __asm__ ("" "open64") __attribute__ ((__nonnull__ (1))); | |
5702 | ||
5703 | extern void __open64_too_many_args (void) __attribute__((__error__ ("open64 can be called either with 2 or 3 arguments, not more"))); | |
5704 | ||
5705 | extern void __open64_missing_mode (void) __attribute__((__error__ ("open64 with O_CREAT in second argument needs 3 arguments"))); | |
5706 | ||
5707 | ||
5708 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
5709 | open64 (__const char *__path, int __oflag, ...) | |
5710 | { | |
5711 | if (__builtin_va_arg_pack_len () > 1) | |
5712 | __open64_too_many_args (); | |
5713 | ||
5714 | if (__builtin_constant_p (__oflag)) | |
5715 | { | |
5716 | if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) | |
5717 | { | |
5718 | __open64_missing_mode (); | |
5719 | return __open64_2 (__path, __oflag); | |
5720 | } | |
5721 | return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); | |
5722 | } | |
5723 | ||
5724 | if (__builtin_va_arg_pack_len () < 1) | |
5725 | return __open64_2 (__path, __oflag); | |
5726 | ||
5727 | return __open64_alias (__path, __oflag, __builtin_va_arg_pack ()); | |
5728 | } | |
5729 | ||
5730 | ||
5731 | ||
5732 | ||
5733 | ||
5734 | extern int __openat_2 (int __fd, __const char *__path, int __oflag) | |
5735 | __attribute__ ((__nonnull__ (2))); | |
5736 | extern int __openat_alias (int __fd, __const char *__path, int __oflag, ...) __asm__ ("" "openat") | |
5737 | ||
5738 | __attribute__ ((__nonnull__ (2))); | |
5739 | # 112 "/usr/include/bits/fcntl2.h" 3 4 | |
5740 | extern void __openat_too_many_args (void) __attribute__((__error__ ("openat can be called either with 3 or 4 arguments, not more"))); | |
5741 | ||
5742 | extern void __openat_missing_mode (void) __attribute__((__error__ ("openat with O_CREAT in third argument needs 4 arguments"))); | |
5743 | ||
5744 | ||
5745 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
5746 | openat (int __fd, __const char *__path, int __oflag, ...) | |
5747 | { | |
5748 | if (__builtin_va_arg_pack_len () > 1) | |
5749 | __openat_too_many_args (); | |
5750 | ||
5751 | if (__builtin_constant_p (__oflag)) | |
5752 | { | |
5753 | if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) | |
5754 | { | |
5755 | __openat_missing_mode (); | |
5756 | return __openat_2 (__fd, __path, __oflag); | |
5757 | } | |
5758 | return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); | |
5759 | } | |
5760 | ||
5761 | if (__builtin_va_arg_pack_len () < 1) | |
5762 | return __openat_2 (__fd, __path, __oflag); | |
5763 | ||
5764 | return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); | |
5765 | } | |
5766 | ||
5767 | ||
5768 | ||
5769 | extern int __openat64_2 (int __fd, __const char *__path, int __oflag) | |
5770 | __attribute__ ((__nonnull__ (2))); | |
5771 | extern int __openat64_alias (int __fd, __const char *__path, int __oflag, ...) __asm__ ("" "openat64") | |
5772 | ||
5773 | __attribute__ ((__nonnull__ (2))); | |
5774 | extern void __openat64_too_many_args (void) __attribute__((__error__ ("openat64 can be called either with 3 or 4 arguments, not more"))); | |
5775 | ||
5776 | extern void __openat64_missing_mode (void) __attribute__((__error__ ("openat64 with O_CREAT in third argument needs 4 arguments"))); | |
5777 | ||
5778 | ||
5779 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
5780 | openat64 (int __fd, __const char *__path, int __oflag, ...) | |
5781 | { | |
5782 | if (__builtin_va_arg_pack_len () > 1) | |
5783 | __openat64_too_many_args (); | |
5784 | ||
5785 | if (__builtin_constant_p (__oflag)) | |
5786 | { | |
5787 | if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1) | |
5788 | { | |
5789 | __openat64_missing_mode (); | |
5790 | return __openat64_2 (__fd, __path, __oflag); | |
5791 | } | |
5792 | return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); | |
5793 | } | |
5794 | ||
5795 | if (__builtin_va_arg_pack_len () < 1) | |
5796 | return __openat64_2 (__fd, __path, __oflag); | |
5797 | ||
5798 | return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ()); | |
5799 | } | |
5800 | # 218 "/usr/include/fcntl.h" 2 3 4 | |
5801 | ||
5802 | ||
5803 | ||
5804 | # 336 "./../include/my_global.h" 2 | |
5805 | ||
5806 | ||
5807 | # 1 "/usr/include/sys/timeb.h" 1 3 4 | |
5808 | # 28 "/usr/include/sys/timeb.h" 3 4 | |
5809 | ||
5810 | ||
5811 | ||
5812 | ||
5813 | struct timeb | |
5814 | { | |
5815 | time_t time; | |
5816 | unsigned short int millitm; | |
5817 | short int timezone; | |
5818 | short int dstflag; | |
5819 | }; | |
5820 | ||
5821 | ||
5822 | ||
5823 | extern int ftime (struct timeb *__timebuf); | |
5824 | ||
5825 | ||
5826 | # 339 "./../include/my_global.h" 2 | |
5827 | ||
5828 | ||
5829 | # 1 "/usr/include/sys/time.h" 1 3 4 | |
5830 | # 29 "/usr/include/sys/time.h" 3 4 | |
5831 | # 1 "/usr/include/bits/time.h" 1 3 4 | |
5832 | # 30 "/usr/include/sys/time.h" 2 3 4 | |
5833 | # 39 "/usr/include/sys/time.h" 3 4 | |
5834 | ||
5835 | # 57 "/usr/include/sys/time.h" 3 4 | |
5836 | struct timezone | |
5837 | { | |
5838 | int tz_minuteswest; | |
5839 | int tz_dsttime; | |
5840 | }; | |
5841 | ||
5842 | typedef struct timezone *__restrict __timezone_ptr_t; | |
5843 | # 73 "/usr/include/sys/time.h" 3 4 | |
5844 | extern int gettimeofday (struct timeval *__restrict __tv, | |
5845 | __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5846 | ||
5847 | ||
5848 | ||
5849 | ||
5850 | extern int settimeofday (__const struct timeval *__tv, | |
5851 | __const struct timezone *__tz) | |
5852 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5853 | ||
5854 | ||
5855 | ||
5856 | ||
5857 | ||
5858 | extern int adjtime (__const struct timeval *__delta, | |
5859 | struct timeval *__olddelta) __attribute__ ((__nothrow__)); | |
5860 | ||
5861 | ||
5862 | ||
5863 | ||
5864 | enum __itimer_which | |
5865 | { | |
5866 | ||
5867 | ITIMER_REAL = 0, | |
5868 | ||
5869 | ||
5870 | ITIMER_VIRTUAL = 1, | |
5871 | ||
5872 | ||
5873 | ||
5874 | ITIMER_PROF = 2 | |
5875 | ||
5876 | }; | |
5877 | ||
5878 | ||
5879 | ||
5880 | struct itimerval | |
5881 | { | |
5882 | ||
5883 | struct timeval it_interval; | |
5884 | ||
5885 | struct timeval it_value; | |
5886 | }; | |
5887 | ||
5888 | ||
5889 | ||
5890 | ||
5891 | typedef enum __itimer_which __itimer_which_t; | |
5892 | ||
5893 | ||
5894 | ||
5895 | ||
5896 | ||
5897 | ||
5898 | extern int getitimer (__itimer_which_t __which, | |
5899 | struct itimerval *__value) __attribute__ ((__nothrow__)); | |
5900 | ||
5901 | ||
5902 | ||
5903 | ||
5904 | extern int setitimer (__itimer_which_t __which, | |
5905 | __const struct itimerval *__restrict __new, | |
5906 | struct itimerval *__restrict __old) __attribute__ ((__nothrow__)); | |
5907 | ||
5908 | ||
5909 | ||
5910 | ||
5911 | extern int utimes (__const char *__file, __const struct timeval __tvp[2]) | |
5912 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5913 | ||
5914 | ||
5915 | ||
5916 | extern int lutimes (__const char *__file, __const struct timeval __tvp[2]) | |
5917 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5918 | ||
5919 | ||
5920 | extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__)); | |
5921 | ||
5922 | ||
5923 | ||
5924 | ||
5925 | ||
5926 | ||
5927 | extern int futimesat (int __fd, __const char *__file, | |
5928 | __const struct timeval __tvp[2]) __attribute__ ((__nothrow__)); | |
5929 | # 191 "/usr/include/sys/time.h" 3 4 | |
5930 | ||
5931 | # 342 "./../include/my_global.h" 2 | |
5932 | # 351 "./../include/my_global.h" | |
5933 | # 1 "/usr/include/unistd.h" 1 3 4 | |
5934 | # 28 "/usr/include/unistd.h" 3 4 | |
5935 | ||
5936 | # 175 "/usr/include/unistd.h" 3 4 | |
5937 | # 1 "/usr/include/bits/posix_opt.h" 1 3 4 | |
5938 | # 176 "/usr/include/unistd.h" 2 3 4 | |
5939 | ||
5940 | ||
5941 | ||
5942 | # 1 "/usr/include/bits/environments.h" 1 3 4 | |
5943 | # 23 "/usr/include/bits/environments.h" 3 4 | |
5944 | # 1 "/usr/include/bits/wordsize.h" 1 3 4 | |
5945 | # 24 "/usr/include/bits/environments.h" 2 3 4 | |
5946 | # 180 "/usr/include/unistd.h" 2 3 4 | |
5947 | # 199 "/usr/include/unistd.h" 3 4 | |
5948 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
5949 | # 200 "/usr/include/unistd.h" 2 3 4 | |
5950 | # 240 "/usr/include/unistd.h" 3 4 | |
5951 | typedef __intptr_t intptr_t; | |
5952 | ||
5953 | ||
5954 | ||
5955 | ||
5956 | ||
5957 | ||
5958 | typedef __socklen_t socklen_t; | |
5959 | # 260 "/usr/include/unistd.h" 3 4 | |
5960 | extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5961 | ||
5962 | ||
5963 | ||
5964 | ||
5965 | extern int euidaccess (__const char *__name, int __type) | |
5966 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5967 | ||
5968 | ||
5969 | extern int eaccess (__const char *__name, int __type) | |
5970 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
5971 | ||
5972 | ||
5973 | ||
5974 | ||
5975 | ||
5976 | ||
5977 | extern int faccessat (int __fd, __const char *__file, int __type, int __flag) | |
5978 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); | |
5979 | # 303 "/usr/include/unistd.h" 3 4 | |
5980 | extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__)); | |
5981 | # 314 "/usr/include/unistd.h" 3 4 | |
5982 | extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence) | |
5983 | __attribute__ ((__nothrow__)); | |
5984 | ||
5985 | ||
5986 | ||
5987 | ||
5988 | ||
5989 | ||
5990 | extern int close (int __fd); | |
5991 | ||
5992 | ||
5993 | ||
5994 | ||
5995 | ||
5996 | ||
5997 | extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__)); | |
5998 | ||
5999 | ||
6000 | ||
6001 | ||
6002 | ||
6003 | extern ssize_t write (int __fd, __const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__)); | |
6004 | # 345 "/usr/include/unistd.h" 3 4 | |
6005 | extern ssize_t pread (int __fd, void *__buf, size_t __nbytes, | |
6006 | __off_t __offset) __attribute__ ((__warn_unused_result__)); | |
6007 | ||
6008 | ||
6009 | ||
6010 | ||
6011 | ||
6012 | ||
6013 | extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n, | |
6014 | __off_t __offset) __attribute__ ((__warn_unused_result__)); | |
6015 | # 373 "/usr/include/unistd.h" 3 4 | |
6016 | extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes, | |
6017 | __off64_t __offset) __attribute__ ((__warn_unused_result__)); | |
6018 | ||
6019 | ||
6020 | extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n, | |
6021 | __off64_t __offset) __attribute__ ((__warn_unused_result__)); | |
6022 | ||
6023 | ||
6024 | ||
6025 | ||
6026 | ||
6027 | ||
6028 | ||
6029 | extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6030 | ||
6031 | ||
6032 | ||
6033 | ||
6034 | extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6035 | # 401 "/usr/include/unistd.h" 3 4 | |
6036 | extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__)); | |
6037 | # 413 "/usr/include/unistd.h" 3 4 | |
6038 | extern unsigned int sleep (unsigned int __seconds); | |
6039 | ||
6040 | ||
6041 | ||
6042 | ||
6043 | ||
6044 | ||
6045 | extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval) | |
6046 | __attribute__ ((__nothrow__)); | |
6047 | ||
6048 | ||
6049 | ||
6050 | ||
6051 | ||
6052 | ||
6053 | extern int usleep (__useconds_t __useconds); | |
6054 | # 437 "/usr/include/unistd.h" 3 4 | |
6055 | extern int pause (void); | |
6056 | ||
6057 | ||
6058 | ||
6059 | extern int chown (__const char *__file, __uid_t __owner, __gid_t __group) | |
6060 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
6061 | ||
6062 | ||
6063 | ||
6064 | extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6065 | ||
6066 | ||
6067 | ||
6068 | ||
6069 | extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group) | |
6070 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
6071 | ||
6072 | ||
6073 | ||
6074 | ||
6075 | ||
6076 | ||
6077 | extern int fchownat (int __fd, __const char *__file, __uid_t __owner, | |
6078 | __gid_t __group, int __flag) | |
6079 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); | |
6080 | ||
6081 | ||
6082 | ||
6083 | extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
6084 | ||
6085 | ||
6086 | ||
6087 | extern int fchdir (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6088 | # 479 "/usr/include/unistd.h" 3 4 | |
6089 | extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6090 | ||
6091 | ||
6092 | ||
6093 | ||
6094 | ||
6095 | extern char *get_current_dir_name (void) __attribute__ ((__nothrow__)); | |
6096 | ||
6097 | ||
6098 | ||
6099 | ||
6100 | ||
6101 | ||
6102 | extern char *getwd (char *__buf) | |
6103 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)); | |
6104 | ||
6105 | ||
6106 | ||
6107 | ||
6108 | extern int dup (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6109 | ||
6110 | ||
6111 | extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__)); | |
6112 | ||
6113 | ||
6114 | ||
6115 | ||
6116 | extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__)); | |
6117 | ||
6118 | ||
6119 | ||
6120 | extern char **__environ; | |
6121 | ||
6122 | extern char **environ; | |
6123 | ||
6124 | ||
6125 | ||
6126 | ||
6127 | ||
6128 | extern int execve (__const char *__path, char *__const __argv[], | |
6129 | char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6130 | ||
6131 | ||
6132 | ||
6133 | ||
6134 | extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[]) | |
6135 | __attribute__ ((__nothrow__)); | |
6136 | ||
6137 | ||
6138 | ||
6139 | ||
6140 | extern int execv (__const char *__path, char *__const __argv[]) | |
6141 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6142 | ||
6143 | ||
6144 | ||
6145 | extern int execle (__const char *__path, __const char *__arg, ...) | |
6146 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6147 | ||
6148 | ||
6149 | ||
6150 | extern int execl (__const char *__path, __const char *__arg, ...) | |
6151 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6152 | ||
6153 | ||
6154 | ||
6155 | extern int execvp (__const char *__file, char *__const __argv[]) | |
6156 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6157 | ||
6158 | ||
6159 | ||
6160 | ||
6161 | extern int execlp (__const char *__file, __const char *__arg, ...) | |
6162 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6163 | ||
6164 | ||
6165 | ||
6166 | ||
6167 | extern int nice (int __inc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6168 | ||
6169 | ||
6170 | ||
6171 | ||
6172 | extern void _exit (int __status) __attribute__ ((__noreturn__)); | |
6173 | ||
6174 | ||
6175 | ||
6176 | ||
6177 | ||
6178 | # 1 "/usr/include/bits/confname.h" 1 3 4 | |
6179 | # 26 "/usr/include/bits/confname.h" 3 4 | |
6180 | enum | |
6181 | { | |
6182 | _PC_LINK_MAX, | |
6183 | ||
6184 | _PC_MAX_CANON, | |
6185 | ||
6186 | _PC_MAX_INPUT, | |
6187 | ||
6188 | _PC_NAME_MAX, | |
6189 | ||
6190 | _PC_PATH_MAX, | |
6191 | ||
6192 | _PC_PIPE_BUF, | |
6193 | ||
6194 | _PC_CHOWN_RESTRICTED, | |
6195 | ||
6196 | _PC_NO_TRUNC, | |
6197 | ||
6198 | _PC_VDISABLE, | |
6199 | ||
6200 | _PC_SYNC_IO, | |
6201 | ||
6202 | _PC_ASYNC_IO, | |
6203 | ||
6204 | _PC_PRIO_IO, | |
6205 | ||
6206 | _PC_SOCK_MAXBUF, | |
6207 | ||
6208 | _PC_FILESIZEBITS, | |
6209 | ||
6210 | _PC_REC_INCR_XFER_SIZE, | |
6211 | ||
6212 | _PC_REC_MAX_XFER_SIZE, | |
6213 | ||
6214 | _PC_REC_MIN_XFER_SIZE, | |
6215 | ||
6216 | _PC_REC_XFER_ALIGN, | |
6217 | ||
6218 | _PC_ALLOC_SIZE_MIN, | |
6219 | ||
6220 | _PC_SYMLINK_MAX, | |
6221 | ||
6222 | _PC_2_SYMLINKS | |
6223 | ||
6224 | }; | |
6225 | ||
6226 | ||
6227 | enum | |
6228 | { | |
6229 | _SC_ARG_MAX, | |
6230 | ||
6231 | _SC_CHILD_MAX, | |
6232 | ||
6233 | _SC_CLK_TCK, | |
6234 | ||
6235 | _SC_NGROUPS_MAX, | |
6236 | ||
6237 | _SC_OPEN_MAX, | |
6238 | ||
6239 | _SC_STREAM_MAX, | |
6240 | ||
6241 | _SC_TZNAME_MAX, | |
6242 | ||
6243 | _SC_JOB_CONTROL, | |
6244 | ||
6245 | _SC_SAVED_IDS, | |
6246 | ||
6247 | _SC_REALTIME_SIGNALS, | |
6248 | ||
6249 | _SC_PRIORITY_SCHEDULING, | |
6250 | ||
6251 | _SC_TIMERS, | |
6252 | ||
6253 | _SC_ASYNCHRONOUS_IO, | |
6254 | ||
6255 | _SC_PRIORITIZED_IO, | |
6256 | ||
6257 | _SC_SYNCHRONIZED_IO, | |
6258 | ||
6259 | _SC_FSYNC, | |
6260 | ||
6261 | _SC_MAPPED_FILES, | |
6262 | ||
6263 | _SC_MEMLOCK, | |
6264 | ||
6265 | _SC_MEMLOCK_RANGE, | |
6266 | ||
6267 | _SC_MEMORY_PROTECTION, | |
6268 | ||
6269 | _SC_MESSAGE_PASSING, | |
6270 | ||
6271 | _SC_SEMAPHORES, | |
6272 | ||
6273 | _SC_SHARED_MEMORY_OBJECTS, | |
6274 | ||
6275 | _SC_AIO_LISTIO_MAX, | |
6276 | ||
6277 | _SC_AIO_MAX, | |
6278 | ||
6279 | _SC_AIO_PRIO_DELTA_MAX, | |
6280 | ||
6281 | _SC_DELAYTIMER_MAX, | |
6282 | ||
6283 | _SC_MQ_OPEN_MAX, | |
6284 | ||
6285 | _SC_MQ_PRIO_MAX, | |
6286 | ||
6287 | _SC_VERSION, | |
6288 | ||
6289 | _SC_PAGESIZE, | |
6290 | ||
6291 | ||
6292 | _SC_RTSIG_MAX, | |
6293 | ||
6294 | _SC_SEM_NSEMS_MAX, | |
6295 | ||
6296 | _SC_SEM_VALUE_MAX, | |
6297 | ||
6298 | _SC_SIGQUEUE_MAX, | |
6299 | ||
6300 | _SC_TIMER_MAX, | |
6301 | ||
6302 | ||
6303 | ||
6304 | ||
6305 | _SC_BC_BASE_MAX, | |
6306 | ||
6307 | _SC_BC_DIM_MAX, | |
6308 | ||
6309 | _SC_BC_SCALE_MAX, | |
6310 | ||
6311 | _SC_BC_STRING_MAX, | |
6312 | ||
6313 | _SC_COLL_WEIGHTS_MAX, | |
6314 | ||
6315 | _SC_EQUIV_CLASS_MAX, | |
6316 | ||
6317 | _SC_EXPR_NEST_MAX, | |
6318 | ||
6319 | _SC_LINE_MAX, | |
6320 | ||
6321 | _SC_RE_DUP_MAX, | |
6322 | ||
6323 | _SC_CHARCLASS_NAME_MAX, | |
6324 | ||
6325 | ||
6326 | _SC_2_VERSION, | |
6327 | ||
6328 | _SC_2_C_BIND, | |
6329 | ||
6330 | _SC_2_C_DEV, | |
6331 | ||
6332 | _SC_2_FORT_DEV, | |
6333 | ||
6334 | _SC_2_FORT_RUN, | |
6335 | ||
6336 | _SC_2_SW_DEV, | |
6337 | ||
6338 | _SC_2_LOCALEDEF, | |
6339 | ||
6340 | ||
6341 | _SC_PII, | |
6342 | ||
6343 | _SC_PII_XTI, | |
6344 | ||
6345 | _SC_PII_SOCKET, | |
6346 | ||
6347 | _SC_PII_INTERNET, | |
6348 | ||
6349 | _SC_PII_OSI, | |
6350 | ||
6351 | _SC_POLL, | |
6352 | ||
6353 | _SC_SELECT, | |
6354 | ||
6355 | _SC_UIO_MAXIOV, | |
6356 | ||
6357 | _SC_IOV_MAX = _SC_UIO_MAXIOV, | |
6358 | ||
6359 | _SC_PII_INTERNET_STREAM, | |
6360 | ||
6361 | _SC_PII_INTERNET_DGRAM, | |
6362 | ||
6363 | _SC_PII_OSI_COTS, | |
6364 | ||
6365 | _SC_PII_OSI_CLTS, | |
6366 | ||
6367 | _SC_PII_OSI_M, | |
6368 | ||
6369 | _SC_T_IOV_MAX, | |
6370 | ||
6371 | ||
6372 | ||
6373 | _SC_THREADS, | |
6374 | ||
6375 | _SC_THREAD_SAFE_FUNCTIONS, | |
6376 | ||
6377 | _SC_GETGR_R_SIZE_MAX, | |
6378 | ||
6379 | _SC_GETPW_R_SIZE_MAX, | |
6380 | ||
6381 | _SC_LOGIN_NAME_MAX, | |
6382 | ||
6383 | _SC_TTY_NAME_MAX, | |
6384 | ||
6385 | _SC_THREAD_DESTRUCTOR_ITERATIONS, | |
6386 | ||
6387 | _SC_THREAD_KEYS_MAX, | |
6388 | ||
6389 | _SC_THREAD_STACK_MIN, | |
6390 | ||
6391 | _SC_THREAD_THREADS_MAX, | |
6392 | ||
6393 | _SC_THREAD_ATTR_STACKADDR, | |
6394 | ||
6395 | _SC_THREAD_ATTR_STACKSIZE, | |
6396 | ||
6397 | _SC_THREAD_PRIORITY_SCHEDULING, | |
6398 | ||
6399 | _SC_THREAD_PRIO_INHERIT, | |
6400 | ||
6401 | _SC_THREAD_PRIO_PROTECT, | |
6402 | ||
6403 | _SC_THREAD_PROCESS_SHARED, | |
6404 | ||
6405 | ||
6406 | _SC_NPROCESSORS_CONF, | |
6407 | ||
6408 | _SC_NPROCESSORS_ONLN, | |
6409 | ||
6410 | _SC_PHYS_PAGES, | |
6411 | ||
6412 | _SC_AVPHYS_PAGES, | |
6413 | ||
6414 | _SC_ATEXIT_MAX, | |
6415 | ||
6416 | _SC_PASS_MAX, | |
6417 | ||
6418 | ||
6419 | _SC_XOPEN_VERSION, | |
6420 | ||
6421 | _SC_XOPEN_XCU_VERSION, | |
6422 | ||
6423 | _SC_XOPEN_UNIX, | |
6424 | ||
6425 | _SC_XOPEN_CRYPT, | |
6426 | ||
6427 | _SC_XOPEN_ENH_I18N, | |
6428 | ||
6429 | _SC_XOPEN_SHM, | |
6430 | ||
6431 | ||
6432 | _SC_2_CHAR_TERM, | |
6433 | ||
6434 | _SC_2_C_VERSION, | |
6435 | ||
6436 | _SC_2_UPE, | |
6437 | ||
6438 | ||
6439 | _SC_XOPEN_XPG2, | |
6440 | ||
6441 | _SC_XOPEN_XPG3, | |
6442 | ||
6443 | _SC_XOPEN_XPG4, | |
6444 | ||
6445 | ||
6446 | _SC_CHAR_BIT, | |
6447 | ||
6448 | _SC_CHAR_MAX, | |
6449 | ||
6450 | _SC_CHAR_MIN, | |
6451 | ||
6452 | _SC_INT_MAX, | |
6453 | ||
6454 | _SC_INT_MIN, | |
6455 | ||
6456 | _SC_LONG_BIT, | |
6457 | ||
6458 | _SC_WORD_BIT, | |
6459 | ||
6460 | _SC_MB_LEN_MAX, | |
6461 | ||
6462 | _SC_NZERO, | |
6463 | ||
6464 | _SC_SSIZE_MAX, | |
6465 | ||
6466 | _SC_SCHAR_MAX, | |
6467 | ||
6468 | _SC_SCHAR_MIN, | |
6469 | ||
6470 | _SC_SHRT_MAX, | |
6471 | ||
6472 | _SC_SHRT_MIN, | |
6473 | ||
6474 | _SC_UCHAR_MAX, | |
6475 | ||
6476 | _SC_UINT_MAX, | |
6477 | ||
6478 | _SC_ULONG_MAX, | |
6479 | ||
6480 | _SC_USHRT_MAX, | |
6481 | ||
6482 | ||
6483 | _SC_NL_ARGMAX, | |
6484 | ||
6485 | _SC_NL_LANGMAX, | |
6486 | ||
6487 | _SC_NL_MSGMAX, | |
6488 | ||
6489 | _SC_NL_NMAX, | |
6490 | ||
6491 | _SC_NL_SETMAX, | |
6492 | ||
6493 | _SC_NL_TEXTMAX, | |
6494 | ||
6495 | ||
6496 | _SC_XBS5_ILP32_OFF32, | |
6497 | ||
6498 | _SC_XBS5_ILP32_OFFBIG, | |
6499 | ||
6500 | _SC_XBS5_LP64_OFF64, | |
6501 | ||
6502 | _SC_XBS5_LPBIG_OFFBIG, | |
6503 | ||
6504 | ||
6505 | _SC_XOPEN_LEGACY, | |
6506 | ||
6507 | _SC_XOPEN_REALTIME, | |
6508 | ||
6509 | _SC_XOPEN_REALTIME_THREADS, | |
6510 | ||
6511 | ||
6512 | _SC_ADVISORY_INFO, | |
6513 | ||
6514 | _SC_BARRIERS, | |
6515 | ||
6516 | _SC_BASE, | |
6517 | ||
6518 | _SC_C_LANG_SUPPORT, | |
6519 | ||
6520 | _SC_C_LANG_SUPPORT_R, | |
6521 | ||
6522 | _SC_CLOCK_SELECTION, | |
6523 | ||
6524 | _SC_CPUTIME, | |
6525 | ||
6526 | _SC_THREAD_CPUTIME, | |
6527 | ||
6528 | _SC_DEVICE_IO, | |
6529 | ||
6530 | _SC_DEVICE_SPECIFIC, | |
6531 | ||
6532 | _SC_DEVICE_SPECIFIC_R, | |
6533 | ||
6534 | _SC_FD_MGMT, | |
6535 | ||
6536 | _SC_FIFO, | |
6537 | ||
6538 | _SC_PIPE, | |
6539 | ||
6540 | _SC_FILE_ATTRIBUTES, | |
6541 | ||
6542 | _SC_FILE_LOCKING, | |
6543 | ||
6544 | _SC_FILE_SYSTEM, | |
6545 | ||
6546 | _SC_MONOTONIC_CLOCK, | |
6547 | ||
6548 | _SC_MULTI_PROCESS, | |
6549 | ||
6550 | _SC_SINGLE_PROCESS, | |
6551 | ||
6552 | _SC_NETWORKING, | |
6553 | ||
6554 | _SC_READER_WRITER_LOCKS, | |
6555 | ||
6556 | _SC_SPIN_LOCKS, | |
6557 | ||
6558 | _SC_REGEXP, | |
6559 | ||
6560 | _SC_REGEX_VERSION, | |
6561 | ||
6562 | _SC_SHELL, | |
6563 | ||
6564 | _SC_SIGNALS, | |
6565 | ||
6566 | _SC_SPAWN, | |
6567 | ||
6568 | _SC_SPORADIC_SERVER, | |
6569 | ||
6570 | _SC_THREAD_SPORADIC_SERVER, | |
6571 | ||
6572 | _SC_SYSTEM_DATABASE, | |
6573 | ||
6574 | _SC_SYSTEM_DATABASE_R, | |
6575 | ||
6576 | _SC_TIMEOUTS, | |
6577 | ||
6578 | _SC_TYPED_MEMORY_OBJECTS, | |
6579 | ||
6580 | _SC_USER_GROUPS, | |
6581 | ||
6582 | _SC_USER_GROUPS_R, | |
6583 | ||
6584 | _SC_2_PBS, | |
6585 | ||
6586 | _SC_2_PBS_ACCOUNTING, | |
6587 | ||
6588 | _SC_2_PBS_LOCATE, | |
6589 | ||
6590 | _SC_2_PBS_MESSAGE, | |
6591 | ||
6592 | _SC_2_PBS_TRACK, | |
6593 | ||
6594 | _SC_SYMLOOP_MAX, | |
6595 | ||
6596 | _SC_STREAMS, | |
6597 | ||
6598 | _SC_2_PBS_CHECKPOINT, | |
6599 | ||
6600 | ||
6601 | _SC_V6_ILP32_OFF32, | |
6602 | ||
6603 | _SC_V6_ILP32_OFFBIG, | |
6604 | ||
6605 | _SC_V6_LP64_OFF64, | |
6606 | ||
6607 | _SC_V6_LPBIG_OFFBIG, | |
6608 | ||
6609 | ||
6610 | _SC_HOST_NAME_MAX, | |
6611 | ||
6612 | _SC_TRACE, | |
6613 | ||
6614 | _SC_TRACE_EVENT_FILTER, | |
6615 | ||
6616 | _SC_TRACE_INHERIT, | |
6617 | ||
6618 | _SC_TRACE_LOG, | |
6619 | ||
6620 | ||
6621 | _SC_LEVEL1_ICACHE_SIZE, | |
6622 | ||
6623 | _SC_LEVEL1_ICACHE_ASSOC, | |
6624 | ||
6625 | _SC_LEVEL1_ICACHE_LINESIZE, | |
6626 | ||
6627 | _SC_LEVEL1_DCACHE_SIZE, | |
6628 | ||
6629 | _SC_LEVEL1_DCACHE_ASSOC, | |
6630 | ||
6631 | _SC_LEVEL1_DCACHE_LINESIZE, | |
6632 | ||
6633 | _SC_LEVEL2_CACHE_SIZE, | |
6634 | ||
6635 | _SC_LEVEL2_CACHE_ASSOC, | |
6636 | ||
6637 | _SC_LEVEL2_CACHE_LINESIZE, | |
6638 | ||
6639 | _SC_LEVEL3_CACHE_SIZE, | |
6640 | ||
6641 | _SC_LEVEL3_CACHE_ASSOC, | |
6642 | ||
6643 | _SC_LEVEL3_CACHE_LINESIZE, | |
6644 | ||
6645 | _SC_LEVEL4_CACHE_SIZE, | |
6646 | ||
6647 | _SC_LEVEL4_CACHE_ASSOC, | |
6648 | ||
6649 | _SC_LEVEL4_CACHE_LINESIZE, | |
6650 | ||
6651 | ||
6652 | ||
6653 | _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50, | |
6654 | ||
6655 | _SC_RAW_SOCKETS, | |
6656 | ||
6657 | ||
6658 | _SC_V7_ILP32_OFF32, | |
6659 | ||
6660 | _SC_V7_ILP32_OFFBIG, | |
6661 | ||
6662 | _SC_V7_LP64_OFF64, | |
6663 | ||
6664 | _SC_V7_LPBIG_OFFBIG, | |
6665 | ||
6666 | ||
6667 | _SC_SS_REPL_MAX, | |
6668 | ||
6669 | ||
6670 | _SC_TRACE_EVENT_NAME_MAX, | |
6671 | ||
6672 | _SC_TRACE_NAME_MAX, | |
6673 | ||
6674 | _SC_TRACE_SYS_MAX, | |
6675 | ||
6676 | _SC_TRACE_USER_EVENT_MAX, | |
6677 | ||
6678 | ||
6679 | _SC_XOPEN_STREAMS, | |
6680 | ||
6681 | ||
6682 | _SC_THREAD_ROBUST_PRIO_INHERIT, | |
6683 | ||
6684 | _SC_THREAD_ROBUST_PRIO_PROTECT, | |
6685 | ||
6686 | }; | |
6687 | ||
6688 | ||
6689 | enum | |
6690 | { | |
6691 | _CS_PATH, | |
6692 | ||
6693 | ||
6694 | _CS_V6_WIDTH_RESTRICTED_ENVS, | |
6695 | ||
6696 | ||
6697 | ||
6698 | _CS_GNU_LIBC_VERSION, | |
6699 | ||
6700 | _CS_GNU_LIBPTHREAD_VERSION, | |
6701 | ||
6702 | ||
6703 | _CS_V5_WIDTH_RESTRICTED_ENVS, | |
6704 | ||
6705 | ||
6706 | ||
6707 | _CS_V7_WIDTH_RESTRICTED_ENVS, | |
6708 | ||
6709 | ||
6710 | ||
6711 | _CS_LFS_CFLAGS = 1000, | |
6712 | ||
6713 | _CS_LFS_LDFLAGS, | |
6714 | ||
6715 | _CS_LFS_LIBS, | |
6716 | ||
6717 | _CS_LFS_LINTFLAGS, | |
6718 | ||
6719 | _CS_LFS64_CFLAGS, | |
6720 | ||
6721 | _CS_LFS64_LDFLAGS, | |
6722 | ||
6723 | _CS_LFS64_LIBS, | |
6724 | ||
6725 | _CS_LFS64_LINTFLAGS, | |
6726 | ||
6727 | ||
6728 | _CS_XBS5_ILP32_OFF32_CFLAGS = 1100, | |
6729 | ||
6730 | _CS_XBS5_ILP32_OFF32_LDFLAGS, | |
6731 | ||
6732 | _CS_XBS5_ILP32_OFF32_LIBS, | |
6733 | ||
6734 | _CS_XBS5_ILP32_OFF32_LINTFLAGS, | |
6735 | ||
6736 | _CS_XBS5_ILP32_OFFBIG_CFLAGS, | |
6737 | ||
6738 | _CS_XBS5_ILP32_OFFBIG_LDFLAGS, | |
6739 | ||
6740 | _CS_XBS5_ILP32_OFFBIG_LIBS, | |
6741 | ||
6742 | _CS_XBS5_ILP32_OFFBIG_LINTFLAGS, | |
6743 | ||
6744 | _CS_XBS5_LP64_OFF64_CFLAGS, | |
6745 | ||
6746 | _CS_XBS5_LP64_OFF64_LDFLAGS, | |
6747 | ||
6748 | _CS_XBS5_LP64_OFF64_LIBS, | |
6749 | ||
6750 | _CS_XBS5_LP64_OFF64_LINTFLAGS, | |
6751 | ||
6752 | _CS_XBS5_LPBIG_OFFBIG_CFLAGS, | |
6753 | ||
6754 | _CS_XBS5_LPBIG_OFFBIG_LDFLAGS, | |
6755 | ||
6756 | _CS_XBS5_LPBIG_OFFBIG_LIBS, | |
6757 | ||
6758 | _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS, | |
6759 | ||
6760 | ||
6761 | _CS_POSIX_V6_ILP32_OFF32_CFLAGS, | |
6762 | ||
6763 | _CS_POSIX_V6_ILP32_OFF32_LDFLAGS, | |
6764 | ||
6765 | _CS_POSIX_V6_ILP32_OFF32_LIBS, | |
6766 | ||
6767 | _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS, | |
6768 | ||
6769 | _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS, | |
6770 | ||
6771 | _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS, | |
6772 | ||
6773 | _CS_POSIX_V6_ILP32_OFFBIG_LIBS, | |
6774 | ||
6775 | _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS, | |
6776 | ||
6777 | _CS_POSIX_V6_LP64_OFF64_CFLAGS, | |
6778 | ||
6779 | _CS_POSIX_V6_LP64_OFF64_LDFLAGS, | |
6780 | ||
6781 | _CS_POSIX_V6_LP64_OFF64_LIBS, | |
6782 | ||
6783 | _CS_POSIX_V6_LP64_OFF64_LINTFLAGS, | |
6784 | ||
6785 | _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS, | |
6786 | ||
6787 | _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS, | |
6788 | ||
6789 | _CS_POSIX_V6_LPBIG_OFFBIG_LIBS, | |
6790 | ||
6791 | _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS, | |
6792 | ||
6793 | ||
6794 | _CS_POSIX_V7_ILP32_OFF32_CFLAGS, | |
6795 | ||
6796 | _CS_POSIX_V7_ILP32_OFF32_LDFLAGS, | |
6797 | ||
6798 | _CS_POSIX_V7_ILP32_OFF32_LIBS, | |
6799 | ||
6800 | _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS, | |
6801 | ||
6802 | _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS, | |
6803 | ||
6804 | _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS, | |
6805 | ||
6806 | _CS_POSIX_V7_ILP32_OFFBIG_LIBS, | |
6807 | ||
6808 | _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS, | |
6809 | ||
6810 | _CS_POSIX_V7_LP64_OFF64_CFLAGS, | |
6811 | ||
6812 | _CS_POSIX_V7_LP64_OFF64_LDFLAGS, | |
6813 | ||
6814 | _CS_POSIX_V7_LP64_OFF64_LIBS, | |
6815 | ||
6816 | _CS_POSIX_V7_LP64_OFF64_LINTFLAGS, | |
6817 | ||
6818 | _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS, | |
6819 | ||
6820 | _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, | |
6821 | ||
6822 | _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, | |
6823 | ||
6824 | _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS | |
6825 | ||
6826 | }; | |
6827 | # 569 "/usr/include/unistd.h" 2 3 4 | |
6828 | ||
6829 | ||
6830 | extern long int pathconf (__const char *__path, int __name) | |
6831 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
6832 | ||
6833 | ||
6834 | extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__)); | |
6835 | ||
6836 | ||
6837 | extern long int sysconf (int __name) __attribute__ ((__nothrow__)); | |
6838 | ||
6839 | ||
6840 | ||
6841 | extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__)); | |
6842 | ||
6843 | ||
6844 | ||
6845 | ||
6846 | extern __pid_t getpid (void) __attribute__ ((__nothrow__)); | |
6847 | ||
6848 | ||
6849 | extern __pid_t getppid (void) __attribute__ ((__nothrow__)); | |
6850 | ||
6851 | ||
6852 | ||
6853 | ||
6854 | extern __pid_t getpgrp (void) __attribute__ ((__nothrow__)); | |
6855 | # 605 "/usr/include/unistd.h" 3 4 | |
6856 | extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); | |
6857 | ||
6858 | extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__)); | |
6859 | ||
6860 | ||
6861 | ||
6862 | ||
6863 | ||
6864 | ||
6865 | extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__)); | |
6866 | # 631 "/usr/include/unistd.h" 3 4 | |
6867 | extern int setpgrp (void) __attribute__ ((__nothrow__)); | |
6868 | # 648 "/usr/include/unistd.h" 3 4 | |
6869 | extern __pid_t setsid (void) __attribute__ ((__nothrow__)); | |
6870 | ||
6871 | ||
6872 | ||
6873 | extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__)); | |
6874 | ||
6875 | ||
6876 | ||
6877 | extern __uid_t getuid (void) __attribute__ ((__nothrow__)); | |
6878 | ||
6879 | ||
6880 | extern __uid_t geteuid (void) __attribute__ ((__nothrow__)); | |
6881 | ||
6882 | ||
6883 | extern __gid_t getgid (void) __attribute__ ((__nothrow__)); | |
6884 | ||
6885 | ||
6886 | extern __gid_t getegid (void) __attribute__ ((__nothrow__)); | |
6887 | ||
6888 | ||
6889 | ||
6890 | ||
6891 | extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
6892 | ||
6893 | ||
6894 | ||
6895 | extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__)); | |
6896 | ||
6897 | ||
6898 | ||
6899 | ||
6900 | ||
6901 | ||
6902 | extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__)); | |
6903 | ||
6904 | ||
6905 | ||
6906 | ||
6907 | extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__)); | |
6908 | ||
6909 | ||
6910 | ||
6911 | ||
6912 | extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__)); | |
6913 | ||
6914 | ||
6915 | ||
6916 | ||
6917 | ||
6918 | ||
6919 | extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__)); | |
6920 | ||
6921 | ||
6922 | ||
6923 | ||
6924 | extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__)); | |
6925 | ||
6926 | ||
6927 | ||
6928 | ||
6929 | extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__)); | |
6930 | ||
6931 | ||
6932 | ||
6933 | ||
6934 | ||
6935 | extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) | |
6936 | __attribute__ ((__nothrow__)); | |
6937 | ||
6938 | ||
6939 | ||
6940 | extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid) | |
6941 | __attribute__ ((__nothrow__)); | |
6942 | ||
6943 | ||
6944 | ||
6945 | extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid) | |
6946 | __attribute__ ((__nothrow__)); | |
6947 | ||
6948 | ||
6949 | ||
6950 | extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid) | |
6951 | __attribute__ ((__nothrow__)); | |
6952 | ||
6953 | ||
6954 | ||
6955 | ||
6956 | ||
6957 | ||
6958 | extern __pid_t fork (void) __attribute__ ((__nothrow__)); | |
6959 | ||
6960 | ||
6961 | ||
6962 | ||
6963 | ||
6964 | ||
6965 | extern __pid_t vfork (void) __attribute__ ((__nothrow__)); | |
6966 | ||
6967 | ||
6968 | ||
6969 | ||
6970 | ||
6971 | extern char *ttyname (int __fd) __attribute__ ((__nothrow__)); | |
6972 | ||
6973 | ||
6974 | ||
6975 | extern int ttyname_r (int __fd, char *__buf, size_t __buflen) | |
6976 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)); | |
6977 | ||
6978 | ||
6979 | ||
6980 | extern int isatty (int __fd) __attribute__ ((__nothrow__)); | |
6981 | ||
6982 | ||
6983 | ||
6984 | ||
6985 | ||
6986 | extern int ttyslot (void) __attribute__ ((__nothrow__)); | |
6987 | ||
6988 | ||
6989 | ||
6990 | ||
6991 | extern int link (__const char *__from, __const char *__to) | |
6992 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); | |
6993 | ||
6994 | ||
6995 | ||
6996 | ||
6997 | extern int linkat (int __fromfd, __const char *__from, int __tofd, | |
6998 | __const char *__to, int __flags) | |
6999 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__)); | |
7000 | ||
7001 | ||
7002 | ||
7003 | ||
7004 | extern int symlink (__const char *__from, __const char *__to) | |
7005 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); | |
7006 | ||
7007 | ||
7008 | ||
7009 | ||
7010 | extern ssize_t readlink (__const char *__restrict __path, | |
7011 | char *__restrict __buf, size_t __len) | |
7012 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); | |
7013 | ||
7014 | ||
7015 | ||
7016 | ||
7017 | extern int symlinkat (__const char *__from, int __tofd, | |
7018 | __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__)); | |
7019 | ||
7020 | ||
7021 | extern ssize_t readlinkat (int __fd, __const char *__restrict __path, | |
7022 | char *__restrict __buf, size_t __len) | |
7023 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); | |
7024 | ||
7025 | ||
7026 | ||
7027 | extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7028 | ||
7029 | ||
7030 | ||
7031 | extern int unlinkat (int __fd, __const char *__name, int __flag) | |
7032 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
7033 | ||
7034 | ||
7035 | ||
7036 | extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7037 | ||
7038 | ||
7039 | ||
7040 | extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__)); | |
7041 | ||
7042 | ||
7043 | extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__)); | |
7044 | ||
7045 | ||
7046 | ||
7047 | ||
7048 | ||
7049 | ||
7050 | extern char *getlogin (void); | |
7051 | ||
7052 | ||
7053 | ||
7054 | ||
7055 | ||
7056 | ||
7057 | ||
7058 | extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1))); | |
7059 | ||
7060 | ||
7061 | ||
7062 | ||
7063 | extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7064 | # 851 "/usr/include/unistd.h" 3 4 | |
7065 | # 1 "/usr/include/getopt.h" 1 3 4 | |
7066 | # 59 "/usr/include/getopt.h" 3 4 | |
7067 | extern char *optarg; | |
7068 | # 73 "/usr/include/getopt.h" 3 4 | |
7069 | extern int optind; | |
7070 | ||
7071 | ||
7072 | ||
7073 | ||
7074 | extern int opterr; | |
7075 | ||
7076 | ||
7077 | ||
7078 | extern int optopt; | |
7079 | # 152 "/usr/include/getopt.h" 3 4 | |
7080 | extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) | |
7081 | __attribute__ ((__nothrow__)); | |
7082 | # 852 "/usr/include/unistd.h" 2 3 4 | |
7083 | ||
7084 | ||
7085 | ||
7086 | ||
7087 | ||
7088 | ||
7089 | ||
7090 | extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7091 | ||
7092 | ||
7093 | ||
7094 | ||
7095 | ||
7096 | ||
7097 | extern int sethostname (__const char *__name, size_t __len) | |
7098 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7099 | ||
7100 | ||
7101 | ||
7102 | extern int sethostid (long int __id) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7103 | ||
7104 | ||
7105 | ||
7106 | ||
7107 | ||
7108 | extern int getdomainname (char *__name, size_t __len) | |
7109 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7110 | extern int setdomainname (__const char *__name, size_t __len) | |
7111 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7112 | ||
7113 | ||
7114 | ||
7115 | ||
7116 | ||
7117 | extern int vhangup (void) __attribute__ ((__nothrow__)); | |
7118 | ||
7119 | ||
7120 | extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7121 | ||
7122 | ||
7123 | ||
7124 | ||
7125 | ||
7126 | ||
7127 | ||
7128 | extern int profil (unsigned short int *__sample_buffer, size_t __size, | |
7129 | size_t __offset, unsigned int __scale) | |
7130 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7131 | ||
7132 | ||
7133 | ||
7134 | ||
7135 | ||
7136 | extern int acct (__const char *__name) __attribute__ ((__nothrow__)); | |
7137 | ||
7138 | ||
7139 | ||
7140 | extern char *getusershell (void) __attribute__ ((__nothrow__)); | |
7141 | extern void endusershell (void) __attribute__ ((__nothrow__)); | |
7142 | extern void setusershell (void) __attribute__ ((__nothrow__)); | |
7143 | ||
7144 | ||
7145 | ||
7146 | ||
7147 | ||
7148 | extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7149 | ||
7150 | ||
7151 | ||
7152 | ||
7153 | ||
7154 | ||
7155 | extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7156 | ||
7157 | ||
7158 | ||
7159 | extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1))); | |
7160 | # 937 "/usr/include/unistd.h" 3 4 | |
7161 | extern int fsync (int __fd); | |
7162 | ||
7163 | ||
7164 | ||
7165 | ||
7166 | ||
7167 | ||
7168 | extern long int gethostid (void); | |
7169 | ||
7170 | ||
7171 | extern void sync (void) __attribute__ ((__nothrow__)); | |
7172 | ||
7173 | ||
7174 | ||
7175 | ||
7176 | extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
7177 | ||
7178 | ||
7179 | ||
7180 | ||
7181 | extern int getdtablesize (void) __attribute__ ((__nothrow__)); | |
7182 | ||
7183 | ||
7184 | ||
7185 | ||
7186 | extern int truncate (__const char *__file, __off_t __length) | |
7187 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7188 | # 974 "/usr/include/unistd.h" 3 4 | |
7189 | extern int truncate64 (__const char *__file, __off64_t __length) | |
7190 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7191 | # 984 "/usr/include/unistd.h" 3 4 | |
7192 | extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7193 | # 994 "/usr/include/unistd.h" 3 4 | |
7194 | extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7195 | # 1004 "/usr/include/unistd.h" 3 4 | |
7196 | extern int brk (void *__addr) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7197 | ||
7198 | ||
7199 | ||
7200 | ||
7201 | ||
7202 | extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__)); | |
7203 | # 1025 "/usr/include/unistd.h" 3 4 | |
7204 | extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__)); | |
7205 | # 1079 "/usr/include/unistd.h" 3 4 | |
7206 | extern int fdatasync (int __fildes); | |
7207 | ||
7208 | ||
7209 | ||
7210 | ||
7211 | ||
7212 | ||
7213 | ||
7214 | extern char *crypt (__const char *__key, __const char *__salt) | |
7215 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
7216 | ||
7217 | ||
7218 | ||
7219 | extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7220 | ||
7221 | ||
7222 | ||
7223 | ||
7224 | ||
7225 | ||
7226 | extern void swab (__const void *__restrict __from, void *__restrict __to, | |
7227 | ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
7228 | ||
7229 | ||
7230 | ||
7231 | ||
7232 | ||
7233 | ||
7234 | ||
7235 | extern char *ctermid (char *__s) __attribute__ ((__nothrow__)); | |
7236 | ||
7237 | ||
7238 | ||
7239 | ||
7240 | ||
7241 | # 1 "/usr/include/bits/unistd.h" 1 3 4 | |
7242 | # 24 "/usr/include/bits/unistd.h" 3 4 | |
7243 | extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes, | |
7244 | size_t __buflen) __attribute__ ((__warn_unused_result__)); | |
7245 | extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") __attribute__ ((__warn_unused_result__)); | |
7246 | ||
7247 | extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk") | |
7248 | ||
7249 | ||
7250 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer"))); | |
7251 | ||
7252 | ||
7253 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t | |
7254 | read (int __fd, void *__buf, size_t __nbytes) | |
7255 | { | |
7256 | if (__builtin_object_size (__buf, 0) != (size_t) -1) | |
7257 | { | |
7258 | if (!__builtin_constant_p (__nbytes)) | |
7259 | return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); | |
7260 | ||
7261 | if (__nbytes > __builtin_object_size (__buf, 0)) | |
7262 | return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)); | |
7263 | } | |
7264 | return __read_alias (__fd, __buf, __nbytes); | |
7265 | } | |
7266 | ||
7267 | ||
7268 | extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes, | |
7269 | __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); | |
7270 | extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes, | |
7271 | __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__)); | |
7272 | extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") __attribute__ ((__warn_unused_result__)); | |
7273 | ||
7274 | ||
7275 | extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") __attribute__ ((__warn_unused_result__)); | |
7276 | ||
7277 | ||
7278 | extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk") | |
7279 | ||
7280 | ||
7281 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer"))); | |
7282 | ||
7283 | extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk") | |
7284 | ||
7285 | ||
7286 | ||
7287 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer"))); | |
7288 | ||
7289 | ||
7290 | ||
7291 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t | |
7292 | pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset) | |
7293 | { | |
7294 | if (__builtin_object_size (__buf, 0) != (size_t) -1) | |
7295 | { | |
7296 | if (!__builtin_constant_p (__nbytes)) | |
7297 | return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); | |
7298 | ||
7299 | if ( __nbytes > __builtin_object_size (__buf, 0)) | |
7300 | return __pread_chk_warn (__fd, __buf, __nbytes, __offset, | |
7301 | __builtin_object_size (__buf, 0)); | |
7302 | } | |
7303 | return __pread_alias (__fd, __buf, __nbytes, __offset); | |
7304 | } | |
7305 | # 105 "/usr/include/bits/unistd.h" 3 4 | |
7306 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t | |
7307 | pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) | |
7308 | { | |
7309 | if (__builtin_object_size (__buf, 0) != (size_t) -1) | |
7310 | { | |
7311 | if (!__builtin_constant_p (__nbytes)) | |
7312 | return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)); | |
7313 | ||
7314 | if ( __nbytes > __builtin_object_size (__buf, 0)) | |
7315 | return __pread64_chk_warn (__fd, __buf, __nbytes, __offset, | |
7316 | __builtin_object_size (__buf, 0)); | |
7317 | } | |
7318 | ||
7319 | return __pread64_alias (__fd, __buf, __nbytes, __offset); | |
7320 | } | |
7321 | ||
7322 | ||
7323 | ||
7324 | ||
7325 | extern ssize_t __readlink_chk (__const char *__restrict __path, | |
7326 | char *__restrict __buf, size_t __len, | |
7327 | size_t __buflen) | |
7328 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); | |
7329 | extern ssize_t __readlink_alias (__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__)) | |
7330 | ||
7331 | ||
7332 | __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)); | |
7333 | extern ssize_t __readlink_chk_warn (__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__)) | |
7334 | ||
7335 | ||
7336 | ||
7337 | __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer"))); | |
7338 | ||
7339 | ||
7340 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t | |
7341 | __attribute__ ((__nothrow__)) readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len) | |
7342 | ||
7343 | { | |
7344 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7345 | { | |
7346 | if (!__builtin_constant_p (__len)) | |
7347 | return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); | |
7348 | ||
7349 | if ( __len > __builtin_object_size (__buf, 2 > 1)) | |
7350 | return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); | |
7351 | } | |
7352 | return __readlink_alias (__path, __buf, __len); | |
7353 | } | |
7354 | ||
7355 | ||
7356 | ||
7357 | extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path, | |
7358 | char *__restrict __buf, size_t __len, | |
7359 | size_t __buflen) | |
7360 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); | |
7361 | extern ssize_t __readlinkat_alias (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__)) | |
7362 | ||
7363 | ||
7364 | ||
7365 | __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)); | |
7366 | extern ssize_t __readlinkat_chk_warn (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__)) | |
7367 | ||
7368 | ||
7369 | ||
7370 | __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer"))); | |
7371 | ||
7372 | ||
7373 | ||
7374 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t | |
7375 | __attribute__ ((__nothrow__)) readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) | |
7376 | ||
7377 | { | |
7378 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7379 | { | |
7380 | if (!__builtin_constant_p (__len)) | |
7381 | return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)); | |
7382 | ||
7383 | if (__len > __builtin_object_size (__buf, 2 > 1)) | |
7384 | return __readlinkat_chk_warn (__fd, __path, __buf, __len, | |
7385 | __builtin_object_size (__buf, 2 > 1)); | |
7386 | } | |
7387 | return __readlinkat_alias (__fd, __path, __buf, __len); | |
7388 | } | |
7389 | ||
7390 | ||
7391 | extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen) | |
7392 | __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7393 | extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7394 | ||
7395 | extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__)) | |
7396 | ||
7397 | ||
7398 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer"))); | |
7399 | ||
7400 | ||
7401 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char * | |
7402 | __attribute__ ((__nothrow__)) getcwd (char *__buf, size_t __size) | |
7403 | { | |
7404 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7405 | { | |
7406 | if (!__builtin_constant_p (__size)) | |
7407 | return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1)); | |
7408 | ||
7409 | if (__size > __builtin_object_size (__buf, 2 > 1)) | |
7410 | return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)); | |
7411 | } | |
7412 | return __getcwd_alias (__buf, __size); | |
7413 | } | |
7414 | ||
7415 | ||
7416 | extern char *__getwd_chk (char *__buf, size_t buflen) | |
7417 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7418 | extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__)) | |
7419 | __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size"))); | |
7420 | ||
7421 | ||
7422 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char * | |
7423 | __attribute__ ((__nothrow__)) getwd (char *__buf) | |
7424 | { | |
7425 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7426 | return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1)); | |
7427 | return __getwd_warn (__buf); | |
7428 | } | |
7429 | ||
7430 | ||
7431 | extern size_t __confstr_chk (int __name, char *__buf, size_t __len, | |
7432 | size_t __buflen) __attribute__ ((__nothrow__)); | |
7433 | extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__)); | |
7434 | ||
7435 | extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__)) | |
7436 | ||
7437 | ||
7438 | __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer"))); | |
7439 | ||
7440 | ||
7441 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t | |
7442 | __attribute__ ((__nothrow__)) confstr (int __name, char *__buf, size_t __len) | |
7443 | { | |
7444 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7445 | { | |
7446 | if (!__builtin_constant_p (__len)) | |
7447 | return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); | |
7448 | ||
7449 | if (__builtin_object_size (__buf, 2 > 1) < __len) | |
7450 | return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)); | |
7451 | } | |
7452 | return __confstr_alias (__name, __buf, __len); | |
7453 | } | |
7454 | ||
7455 | ||
7456 | extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen) | |
7457 | __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7458 | extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__)); | |
7459 | ||
7460 | extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__)) | |
7461 | ||
7462 | ||
7463 | __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer"))); | |
7464 | ||
7465 | ||
7466 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
7467 | __attribute__ ((__nothrow__)) getgroups (int __size, __gid_t __list[]) | |
7468 | { | |
7469 | if (__builtin_object_size (__list, 2 > 1) != (size_t) -1) | |
7470 | { | |
7471 | if (!__builtin_constant_p (__size) || __size < 0) | |
7472 | return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1)); | |
7473 | ||
7474 | if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1)) | |
7475 | return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)); | |
7476 | } | |
7477 | return __getgroups_alias (__size, __list); | |
7478 | } | |
7479 | ||
7480 | ||
7481 | extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen, | |
7482 | size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
7483 | extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__)) | |
7484 | ||
7485 | __attribute__ ((__nonnull__ (2))); | |
7486 | extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__)) | |
7487 | ||
7488 | ||
7489 | __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer"))); | |
7490 | ||
7491 | ||
7492 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
7493 | __attribute__ ((__nothrow__)) ttyname_r (int __fd, char *__buf, size_t __buflen) | |
7494 | { | |
7495 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7496 | { | |
7497 | if (!__builtin_constant_p (__buflen)) | |
7498 | return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7499 | ||
7500 | if (__buflen > __builtin_object_size (__buf, 2 > 1)) | |
7501 | return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7502 | } | |
7503 | return __ttyname_r_alias (__fd, __buf, __buflen); | |
7504 | } | |
7505 | ||
7506 | ||
7507 | ||
7508 | extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal) | |
7509 | __attribute__ ((__nonnull__ (1))); | |
7510 | extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1))); | |
7511 | ||
7512 | extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk") | |
7513 | ||
7514 | ||
7515 | __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer"))); | |
7516 | ||
7517 | ||
7518 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
7519 | getlogin_r (char *__buf, size_t __buflen) | |
7520 | { | |
7521 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7522 | { | |
7523 | if (!__builtin_constant_p (__buflen)) | |
7524 | return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7525 | ||
7526 | if (__buflen > __builtin_object_size (__buf, 2 > 1)) | |
7527 | return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7528 | } | |
7529 | return __getlogin_r_alias (__buf, __buflen); | |
7530 | } | |
7531 | ||
7532 | ||
7533 | ||
7534 | ||
7535 | extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal) | |
7536 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7537 | extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7538 | ||
7539 | extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__)) | |
7540 | ||
7541 | ||
7542 | __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer"))); | |
7543 | ||
7544 | ||
7545 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
7546 | __attribute__ ((__nothrow__)) gethostname (char *__buf, size_t __buflen) | |
7547 | { | |
7548 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7549 | { | |
7550 | if (!__builtin_constant_p (__buflen)) | |
7551 | return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7552 | ||
7553 | if (__buflen > __builtin_object_size (__buf, 2 > 1)) | |
7554 | return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7555 | } | |
7556 | return __gethostname_alias (__buf, __buflen); | |
7557 | } | |
7558 | ||
7559 | ||
7560 | ||
7561 | ||
7562 | extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal) | |
7563 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7564 | extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)); | |
7565 | ||
7566 | ||
7567 | extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__)) | |
7568 | ||
7569 | ||
7570 | __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer"))); | |
7571 | ||
7572 | ||
7573 | ||
7574 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int | |
7575 | __attribute__ ((__nothrow__)) getdomainname (char *__buf, size_t __buflen) | |
7576 | { | |
7577 | if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1) | |
7578 | { | |
7579 | if (!__builtin_constant_p (__buflen)) | |
7580 | return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7581 | ||
7582 | if (__buflen > __builtin_object_size (__buf, 2 > 1)) | |
7583 | return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)); | |
7584 | } | |
7585 | return __getdomainname_alias (__buf, __buflen); | |
7586 | } | |
7587 | # 1115 "/usr/include/unistd.h" 2 3 4 | |
7588 | ||
7589 | ||
7590 | ||
7591 | # 352 "./../include/my_global.h" 2 | |
7592 | # 371 "./../include/my_global.h" | |
7593 | # 1 "/usr/include/errno.h" 1 3 4 | |
7594 | # 32 "/usr/include/errno.h" 3 4 | |
7595 | ||
7596 | ||
7597 | ||
7598 | ||
7599 | # 1 "/usr/include/bits/errno.h" 1 3 4 | |
7600 | # 25 "/usr/include/bits/errno.h" 3 4 | |
7601 | # 1 "/usr/include/linux/errno.h" 1 3 4 | |
7602 | ||
7603 | ||
7604 | ||
7605 | # 1 "/usr/include/asm/errno.h" 1 3 4 | |
7606 | ||
7607 | ||
7608 | ||
7609 | # 1 "/usr/include/asm-generic/errno.h" 1 3 4 | |
7610 | ||
7611 | ||
7612 | ||
7613 | # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4 | |
7614 | # 5 "/usr/include/asm-generic/errno.h" 2 3 4 | |
7615 | # 5 "/usr/include/asm/errno.h" 2 3 4 | |
7616 | # 5 "/usr/include/linux/errno.h" 2 3 4 | |
7617 | # 26 "/usr/include/bits/errno.h" 2 3 4 | |
7618 | # 43 "/usr/include/bits/errno.h" 3 4 | |
7619 | extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
7620 | # 37 "/usr/include/errno.h" 2 3 4 | |
7621 | # 55 "/usr/include/errno.h" 3 4 | |
7622 | extern char *program_invocation_name, *program_invocation_short_name; | |
7623 | ||
7624 | ||
7625 | ||
7626 | ||
7627 | # 69 "/usr/include/errno.h" 3 4 | |
7628 | typedef int error_t; | |
7629 | # 372 "./../include/my_global.h" 2 | |
7630 | ||
7631 | ||
7632 | # 1 "/usr/include/crypt.h" 1 3 4 | |
7633 | # 30 "/usr/include/crypt.h" 3 4 | |
7634 | ||
7635 | ||
7636 | ||
7637 | extern char *crypt (__const char *__key, __const char *__salt) | |
7638 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
7639 | ||
7640 | ||
7641 | extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7642 | ||
7643 | ||
7644 | ||
7645 | extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
7646 | ||
7647 | ||
7648 | ||
7649 | ||
7650 | struct crypt_data | |
7651 | { | |
7652 | char keysched[16 * 8]; | |
7653 | char sb0[32768]; | |
7654 | char sb1[32768]; | |
7655 | char sb2[32768]; | |
7656 | char sb3[32768]; | |
7657 | ||
7658 | char crypt_3_buf[14]; | |
7659 | char current_salt[2]; | |
7660 | long int current_saltbits; | |
7661 | int direction, initialized; | |
7662 | }; | |
7663 | ||
7664 | extern char *crypt_r (__const char *__key, __const char *__salt, | |
7665 | struct crypt_data * __restrict __data) | |
7666 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))); | |
7667 | ||
7668 | extern void setkey_r (__const char *__key, | |
7669 | struct crypt_data * __restrict __data) | |
7670 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
7671 | ||
7672 | extern void encrypt_r (char *__block, int __edflag, | |
7673 | struct crypt_data * __restrict __data) | |
7674 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))); | |
7675 | ||
7676 | ||
7677 | ||
7678 | # 375 "./../include/my_global.h" 2 | |
7679 | ||
7680 | ||
7681 | ||
7682 | ||
7683 | ||
7684 | ||
7685 | ||
7686 | # 1 "/usr/include/assert.h" 1 3 4 | |
7687 | # 66 "/usr/include/assert.h" 3 4 | |
7688 | ||
7689 | ||
7690 | ||
7691 | extern void __assert_fail (__const char *__assertion, __const char *__file, | |
7692 | unsigned int __line, __const char *__function) | |
7693 | __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
7694 | ||
7695 | ||
7696 | extern void __assert_perror_fail (int __errnum, __const char *__file, | |
7697 | unsigned int __line, | |
7698 | __const char *__function) | |
7699 | __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
7700 | ||
7701 | ||
7702 | ||
7703 | ||
7704 | extern void __assert (const char *__assertion, const char *__file, int __line) | |
7705 | __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__)); | |
7706 | ||
7707 | ||
7708 | ||
7709 | # 383 "./../include/my_global.h" 2 | |
7710 | # 508 "./../include/my_global.h" | |
7711 | # 1 "./../include/my_attribute.h" 1 | |
7712 | # 509 "./../include/my_global.h" 2 | |
7713 | # 544 "./../include/my_global.h" | |
7714 | # 1 "./../include/my_dbug.h" 1 | |
7715 | # 545 "./../include/my_global.h" 2 | |
7716 | ||
7717 | ||
7718 | ||
7719 | ||
7720 | ||
7721 | ||
7722 | ||
7723 | typedef int File; | |
7724 | ||
7725 | typedef int my_socket; | |
7726 | ||
7727 | ||
7728 | ||
7729 | ||
7730 | ||
7731 | typedef void (*sig_return)(); | |
7732 | ||
7733 | ||
7734 | typedef char pchar; | |
7735 | typedef char puchar; | |
7736 | typedef char pbool; | |
7737 | typedef short pshort; | |
7738 | typedef float pfloat; | |
7739 | ||
7740 | ||
7741 | ||
7742 | ||
7743 | ||
7744 | ||
7745 | ||
7746 | ||
7747 | typedef int (*qsort_cmp)(const void *,const void *); | |
7748 | typedef int (*qsort_cmp2)(void*, const void *,const void *); | |
7749 | ||
7750 | # 590 "./../include/my_global.h" | |
7751 | # 1 "/usr/include/sys/socket.h" 1 3 4 | |
7752 | # 26 "/usr/include/sys/socket.h" 3 4 | |
7753 | ||
7754 | ||
7755 | # 1 "/usr/include/sys/uio.h" 1 3 4 | |
7756 | # 26 "/usr/include/sys/uio.h" 3 4 | |
7757 | ||
7758 | ||
7759 | ||
7760 | # 1 "/usr/include/bits/uio.h" 1 3 4 | |
7761 | # 30 "/usr/include/sys/uio.h" 2 3 4 | |
7762 | # 40 "/usr/include/sys/uio.h" 3 4 | |
7763 | extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count) | |
7764 | __attribute__ ((__warn_unused_result__)); | |
7765 | # 51 "/usr/include/sys/uio.h" 3 4 | |
7766 | extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count) | |
7767 | __attribute__ ((__warn_unused_result__)); | |
7768 | # 66 "/usr/include/sys/uio.h" 3 4 | |
7769 | extern ssize_t preadv (int __fd, __const struct iovec *__iovec, int __count, | |
7770 | __off_t __offset) __attribute__ ((__warn_unused_result__)); | |
7771 | # 78 "/usr/include/sys/uio.h" 3 4 | |
7772 | extern ssize_t pwritev (int __fd, __const struct iovec *__iovec, int __count, | |
7773 | __off_t __offset) __attribute__ ((__warn_unused_result__)); | |
7774 | # 104 "/usr/include/sys/uio.h" 3 4 | |
7775 | extern ssize_t preadv64 (int __fd, __const struct iovec *__iovec, int __count, | |
7776 | __off64_t __offset) __attribute__ ((__warn_unused_result__)); | |
7777 | # 116 "/usr/include/sys/uio.h" 3 4 | |
7778 | extern ssize_t pwritev64 (int __fd, __const struct iovec *__iovec, int __count, | |
7779 | __off64_t __offset) __attribute__ ((__warn_unused_result__)); | |
7780 | ||
7781 | ||
7782 | ||
7783 | ||
7784 | # 29 "/usr/include/sys/socket.h" 2 3 4 | |
7785 | ||
7786 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
7787 | # 31 "/usr/include/sys/socket.h" 2 3 4 | |
7788 | ||
7789 | ||
7790 | # 1 "/usr/include/bits/sigset.h" 1 3 4 | |
7791 | # 34 "/usr/include/sys/socket.h" 2 3 4 | |
7792 | ||
7793 | ||
7794 | ||
7795 | ||
7796 | ||
7797 | ||
7798 | # 1 "/usr/include/bits/socket.h" 1 3 4 | |
7799 | # 29 "/usr/include/bits/socket.h" 3 4 | |
7800 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
7801 | # 30 "/usr/include/bits/socket.h" 2 3 4 | |
7802 | # 40 "/usr/include/bits/socket.h" 3 4 | |
7803 | enum __socket_type | |
7804 | { | |
7805 | SOCK_STREAM = 1, | |
7806 | ||
7807 | ||
7808 | SOCK_DGRAM = 2, | |
7809 | ||
7810 | ||
7811 | SOCK_RAW = 3, | |
7812 | ||
7813 | SOCK_RDM = 4, | |
7814 | ||
7815 | SOCK_SEQPACKET = 5, | |
7816 | ||
7817 | ||
7818 | SOCK_DCCP = 6, | |
7819 | ||
7820 | SOCK_PACKET = 10, | |
7821 | ||
7822 | ||
7823 | ||
7824 | ||
7825 | ||
7826 | ||
7827 | ||
7828 | SOCK_CLOEXEC = 02000000, | |
7829 | ||
7830 | ||
7831 | SOCK_NONBLOCK = 04000 | |
7832 | ||
7833 | ||
7834 | }; | |
7835 | # 169 "/usr/include/bits/socket.h" 3 4 | |
7836 | # 1 "/usr/include/bits/sockaddr.h" 1 3 4 | |
7837 | # 29 "/usr/include/bits/sockaddr.h" 3 4 | |
7838 | typedef unsigned short int sa_family_t; | |
7839 | # 170 "/usr/include/bits/socket.h" 2 3 4 | |
7840 | ||
7841 | ||
7842 | struct sockaddr | |
7843 | { | |
7844 | sa_family_t sa_family; | |
7845 | char sa_data[14]; | |
7846 | }; | |
7847 | # 185 "/usr/include/bits/socket.h" 3 4 | |
7848 | struct sockaddr_storage | |
7849 | { | |
7850 | sa_family_t ss_family; | |
7851 | unsigned long int __ss_align; | |
7852 | char __ss_padding[(128 - (2 * sizeof (unsigned long int)))]; | |
7853 | }; | |
7854 | ||
7855 | ||
7856 | ||
7857 | enum | |
7858 | { | |
7859 | MSG_OOB = 0x01, | |
7860 | ||
7861 | MSG_PEEK = 0x02, | |
7862 | ||
7863 | MSG_DONTROUTE = 0x04, | |
7864 | ||
7865 | ||
7866 | ||
7867 | MSG_TRYHARD = MSG_DONTROUTE, | |
7868 | ||
7869 | ||
7870 | MSG_CTRUNC = 0x08, | |
7871 | ||
7872 | MSG_PROXY = 0x10, | |
7873 | ||
7874 | MSG_TRUNC = 0x20, | |
7875 | ||
7876 | MSG_DONTWAIT = 0x40, | |
7877 | ||
7878 | MSG_EOR = 0x80, | |
7879 | ||
7880 | MSG_WAITALL = 0x100, | |
7881 | ||
7882 | MSG_FIN = 0x200, | |
7883 | ||
7884 | MSG_SYN = 0x400, | |
7885 | ||
7886 | MSG_CONFIRM = 0x800, | |
7887 | ||
7888 | MSG_RST = 0x1000, | |
7889 | ||
7890 | MSG_ERRQUEUE = 0x2000, | |
7891 | ||
7892 | MSG_NOSIGNAL = 0x4000, | |
7893 | ||
7894 | MSG_MORE = 0x8000, | |
7895 | ||
7896 | ||
7897 | MSG_CMSG_CLOEXEC = 0x40000000 | |
7898 | ||
7899 | ||
7900 | ||
7901 | }; | |
7902 | ||
7903 | ||
7904 | ||
7905 | ||
7906 | struct msghdr | |
7907 | { | |
7908 | void *msg_name; | |
7909 | socklen_t msg_namelen; | |
7910 | ||
7911 | struct iovec *msg_iov; | |
7912 | size_t msg_iovlen; | |
7913 | ||
7914 | void *msg_control; | |
7915 | size_t msg_controllen; | |
7916 | ||
7917 | ||
7918 | ||
7919 | ||
7920 | int msg_flags; | |
7921 | }; | |
7922 | ||
7923 | ||
7924 | struct cmsghdr | |
7925 | { | |
7926 | size_t cmsg_len; | |
7927 | ||
7928 | ||
7929 | ||
7930 | ||
7931 | int cmsg_level; | |
7932 | int cmsg_type; | |
7933 | ||
7934 | __extension__ unsigned char __cmsg_data []; | |
7935 | ||
7936 | }; | |
7937 | # 291 "/usr/include/bits/socket.h" 3 4 | |
7938 | extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, | |
7939 | struct cmsghdr *__cmsg) __attribute__ ((__nothrow__)); | |
7940 | ||
7941 | ||
7942 | ||
7943 | ||
7944 | extern __inline struct cmsghdr * | |
7945 | __attribute__ ((__nothrow__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) | |
7946 | { | |
7947 | if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) | |
7948 | ||
7949 | return 0; | |
7950 | ||
7951 | __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg | |
7952 | + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))); | |
7953 | if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control | |
7954 | + __mhdr->msg_controllen) | |
7955 | || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)) | |
7956 | > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) | |
7957 | ||
7958 | return 0; | |
7959 | return __cmsg; | |
7960 | } | |
7961 | ||
7962 | ||
7963 | ||
7964 | ||
7965 | enum | |
7966 | { | |
7967 | SCM_RIGHTS = 0x01 | |
7968 | ||
7969 | ||
7970 | , SCM_CREDENTIALS = 0x02 | |
7971 | ||
7972 | ||
7973 | }; | |
7974 | ||
7975 | ||
7976 | ||
7977 | struct ucred | |
7978 | { | |
7979 | pid_t pid; | |
7980 | uid_t uid; | |
7981 | gid_t gid; | |
7982 | }; | |
7983 | # 364 "/usr/include/bits/socket.h" 3 4 | |
7984 | # 1 "/usr/include/asm/socket.h" 1 3 4 | |
7985 | # 11 "/usr/include/asm/socket.h" 3 4 | |
7986 | # 1 "/usr/include/asm/sockios.h" 1 3 4 | |
7987 | # 12 "/usr/include/asm/socket.h" 2 3 4 | |
7988 | # 365 "/usr/include/bits/socket.h" 2 3 4 | |
7989 | # 398 "/usr/include/bits/socket.h" 3 4 | |
7990 | struct linger | |
7991 | { | |
7992 | int l_onoff; | |
7993 | int l_linger; | |
7994 | }; | |
7995 | # 41 "/usr/include/sys/socket.h" 2 3 4 | |
7996 | ||
7997 | ||
7998 | ||
7999 | ||
8000 | struct osockaddr | |
8001 | { | |
8002 | unsigned short int sa_family; | |
8003 | unsigned char sa_data[14]; | |
8004 | }; | |
8005 | ||
8006 | ||
8007 | ||
8008 | ||
8009 | enum | |
8010 | { | |
8011 | SHUT_RD = 0, | |
8012 | ||
8013 | SHUT_WR, | |
8014 | ||
8015 | SHUT_RDWR | |
8016 | ||
8017 | }; | |
8018 | # 92 "/usr/include/sys/socket.h" 3 4 | |
8019 | typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__; | |
8020 | } __SOCKADDR_ARG __attribute__ ((__transparent_union__)); | |
8021 | ||
8022 | ||
8023 | typedef union { __const struct sockaddr *__restrict __sockaddr__; __const struct sockaddr_at *__restrict __sockaddr_at__; __const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; __const struct sockaddr_dl *__restrict __sockaddr_dl__; __const struct sockaddr_eon *__restrict __sockaddr_eon__; __const struct sockaddr_in *__restrict __sockaddr_in__; __const struct sockaddr_in6 *__restrict __sockaddr_in6__; __const struct sockaddr_inarp *__restrict __sockaddr_inarp__; __const struct sockaddr_ipx *__restrict __sockaddr_ipx__; __const struct sockaddr_iso *__restrict __sockaddr_iso__; __const struct sockaddr_ns *__restrict __sockaddr_ns__; __const struct sockaddr_un *__restrict __sockaddr_un__; __const struct sockaddr_x25 *__restrict __sockaddr_x25__; | |
8024 | } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__)); | |
8025 | ||
8026 | ||
8027 | ||
8028 | ||
8029 | ||
8030 | ||
8031 | ||
8032 | extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__)); | |
8033 | ||
8034 | ||
8035 | ||
8036 | ||
8037 | ||
8038 | extern int socketpair (int __domain, int __type, int __protocol, | |
8039 | int __fds[2]) __attribute__ ((__nothrow__)); | |
8040 | ||
8041 | ||
8042 | extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len) | |
8043 | __attribute__ ((__nothrow__)); | |
8044 | ||
8045 | ||
8046 | extern int getsockname (int __fd, __SOCKADDR_ARG __addr, | |
8047 | socklen_t *__restrict __len) __attribute__ ((__nothrow__)); | |
8048 | # 129 "/usr/include/sys/socket.h" 3 4 | |
8049 | extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len); | |
8050 | ||
8051 | ||
8052 | ||
8053 | extern int getpeername (int __fd, __SOCKADDR_ARG __addr, | |
8054 | socklen_t *__restrict __len) __attribute__ ((__nothrow__)); | |
8055 | ||
8056 | ||
8057 | ||
8058 | ||
8059 | ||
8060 | ||
8061 | extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags); | |
8062 | ||
8063 | ||
8064 | ||
8065 | ||
8066 | ||
8067 | ||
8068 | extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags); | |
8069 | ||
8070 | ||
8071 | ||
8072 | ||
8073 | ||
8074 | ||
8075 | extern ssize_t sendto (int __fd, __const void *__buf, size_t __n, | |
8076 | int __flags, __CONST_SOCKADDR_ARG __addr, | |
8077 | socklen_t __addr_len); | |
8078 | # 166 "/usr/include/sys/socket.h" 3 4 | |
8079 | extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n, | |
8080 | int __flags, __SOCKADDR_ARG __addr, | |
8081 | socklen_t *__restrict __addr_len); | |
8082 | ||
8083 | ||
8084 | ||
8085 | ||
8086 | ||
8087 | ||
8088 | ||
8089 | extern ssize_t sendmsg (int __fd, __const struct msghdr *__message, | |
8090 | int __flags); | |
8091 | ||
8092 | ||
8093 | ||
8094 | ||
8095 | ||
8096 | ||
8097 | extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags); | |
8098 | ||
8099 | ||
8100 | ||
8101 | ||
8102 | ||
8103 | extern int getsockopt (int __fd, int __level, int __optname, | |
8104 | void *__restrict __optval, | |
8105 | socklen_t *__restrict __optlen) __attribute__ ((__nothrow__)); | |
8106 | ||
8107 | ||
8108 | ||
8109 | ||
8110 | extern int setsockopt (int __fd, int __level, int __optname, | |
8111 | __const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__)); | |
8112 | ||
8113 | ||
8114 | ||
8115 | ||
8116 | ||
8117 | extern int listen (int __fd, int __n) __attribute__ ((__nothrow__)); | |
8118 | # 214 "/usr/include/sys/socket.h" 3 4 | |
8119 | extern int accept (int __fd, __SOCKADDR_ARG __addr, | |
8120 | socklen_t *__restrict __addr_len); | |
8121 | ||
8122 | ||
8123 | ||
8124 | ||
8125 | ||
8126 | ||
8127 | extern int accept4 (int __fd, __SOCKADDR_ARG __addr, | |
8128 | socklen_t *__restrict __addr_len, int __flags); | |
8129 | # 232 "/usr/include/sys/socket.h" 3 4 | |
8130 | extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__)); | |
8131 | ||
8132 | ||
8133 | ||
8134 | ||
8135 | extern int sockatmark (int __fd) __attribute__ ((__nothrow__)); | |
8136 | ||
8137 | ||
8138 | ||
8139 | ||
8140 | ||
8141 | ||
8142 | ||
8143 | extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__)); | |
8144 | ||
8145 | ||
8146 | ||
8147 | ||
8148 | ||
8149 | # 1 "/usr/include/bits/socket2.h" 1 3 4 | |
8150 | # 24 "/usr/include/bits/socket2.h" 3 4 | |
8151 | extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen, | |
8152 | int __flags); | |
8153 | extern ssize_t __recv_alias (int __fd, void *__buf, size_t __n, int __flags) __asm__ ("" "recv"); | |
8154 | ||
8155 | extern ssize_t __recv_chk_warn (int __fd, void *__buf, size_t __n, size_t __buflen, int __flags) __asm__ ("" "__recv_chk") | |
8156 | ||
8157 | ||
8158 | __attribute__((__warning__ ("recv called with bigger length than size of destination " "buffer"))); | |
8159 | ||
8160 | ||
8161 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) ssize_t | |
8162 | recv (int __fd, void *__buf, size_t __n, int __flags) | |
8163 | { | |
8164 | if (__builtin_object_size (__buf, 0) != (size_t) -1) | |
8165 | { | |
8166 | if (!__builtin_constant_p (__n)) | |
8167 | return __recv_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags); | |
8168 | ||
8169 | if (__n > __builtin_object_size (__buf, 0)) | |
8170 | return __recv_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags); | |
8171 | } | |
8172 | return __recv_alias (__fd, __buf, __n, __flags); | |
8173 | } | |
8174 | ||
8175 | extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, | |
8176 | size_t __buflen, int __flags, | |
8177 | __SOCKADDR_ARG __addr, | |
8178 | socklen_t *__restrict __addr_len); | |
8179 | extern ssize_t __recvfrom_alias (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "recvfrom"); | |
8180 | ||
8181 | ||
8182 | ||
8183 | extern ssize_t __recvfrom_chk_warn (int __fd, void *__restrict __buf, size_t __n, size_t __buflen, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "__recvfrom_chk") | |
8184 | ||
8185 | ||
8186 | ||
8187 | ||
8188 | __attribute__((__warning__ ("recvfrom called with bigger length than size of " "destination buffer"))); | |
8189 | ||
8190 | ||
8191 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) ssize_t | |
8192 | recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags, | |
8193 | __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) | |
8194 | { | |
8195 | if (__builtin_object_size (__buf, 0) != (size_t) -1) | |
8196 | { | |
8197 | if (!__builtin_constant_p (__n)) | |
8198 | return __recvfrom_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags, | |
8199 | __addr, __addr_len); | |
8200 | if (__n > __builtin_object_size (__buf, 0)) | |
8201 | return __recvfrom_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags, | |
8202 | __addr, __addr_len); | |
8203 | } | |
8204 | return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); | |
8205 | } | |
8206 | # 252 "/usr/include/sys/socket.h" 2 3 4 | |
8207 | ||
8208 | ||
8209 | ||
8210 | # 591 "./../include/my_global.h" 2 | |
8211 | ||
8212 | typedef socklen_t size_socket; | |
8213 | # 834 "./../include/my_global.h" | |
8214 | typedef long long my_ptrdiff_t; | |
8215 | # 882 "./../include/my_global.h" | |
8216 | typedef char *gptr; | |
8217 | ||
8218 | ||
8219 | typedef signed char int8; | |
8220 | typedef short int16; | |
8221 | ||
8222 | ||
8223 | typedef unsigned char uchar; | |
8224 | ||
8225 | typedef unsigned char uint8; | |
8226 | typedef unsigned short uint16; | |
8227 | ||
8228 | ||
8229 | ||
8230 | typedef int int32; | |
8231 | ||
8232 | typedef unsigned int uint32; | |
8233 | # 918 "./../include/my_global.h" | |
8234 | typedef unsigned long long int ulonglong; | |
8235 | typedef long long int longlong; | |
8236 | # 931 "./../include/my_global.h" | |
8237 | typedef unsigned long long my_ulonglong; | |
8238 | # 951 "./../include/my_global.h" | |
8239 | typedef ulonglong my_off_t; | |
8240 | ||
8241 | ||
8242 | ||
8243 | ||
8244 | ||
8245 | typedef off_t os_off_t; | |
8246 | # 991 "./../include/my_global.h" | |
8247 | typedef uint8 int7; | |
8248 | typedef short int15; | |
8249 | typedef char *my_string; | |
8250 | typedef unsigned long size_s; | |
8251 | typedef int myf; | |
8252 | ||
8253 | typedef char byte; | |
8254 | ||
8255 | typedef char my_bool; | |
8256 | ||
8257 | typedef char bool; | |
8258 | # 34 "./include/univ.i" 2 | |
8259 | # 1 "./../include/my_pthread.h" 1 | |
8260 | # 21 "./../include/my_pthread.h" | |
8261 | # 1 "/usr/include/errno.h" 1 3 4 | |
8262 | # 22 "./../include/my_pthread.h" 2 | |
8263 | # 288 "./../include/my_pthread.h" | |
8264 | extern int my_pthread_getprio(pthread_t thread_id); | |
8265 | ||
8266 | ||
8267 | ||
8268 | ||
8269 | ||
8270 | ||
8271 | typedef void *(* pthread_handler)(void *); | |
8272 | # 382 "./../include/my_pthread.h" | |
8273 | extern void my_pthread_setprio(pthread_t thread_id,int prior); | |
8274 | ||
8275 | ||
8276 | ||
8277 | ||
8278 | ||
8279 | ||
8280 | ||
8281 | extern void my_pthread_attr_setprio(pthread_attr_t *attr, int priority); | |
8282 | # 549 "./../include/my_pthread.h" | |
8283 | typedef struct st_safe_mutex_t | |
8284 | { | |
8285 | pthread_mutex_t global,mutex; | |
8286 | const char *file; | |
8287 | uint line,count; | |
8288 | pthread_t thread; | |
8289 | ||
8290 | ||
8291 | ||
8292 | } safe_mutex_t; | |
8293 | # 576 "./../include/my_pthread.h" | |
8294 | int safe_mutex_init(safe_mutex_t *mp, const pthread_mutexattr_t *attr, | |
8295 | const char *file, uint line); | |
8296 | int safe_mutex_lock(safe_mutex_t *mp, my_bool try_lock, const char *file, uint line); | |
8297 | int safe_mutex_unlock(safe_mutex_t *mp,const char *file, uint line); | |
8298 | int safe_mutex_destroy(safe_mutex_t *mp,const char *file, uint line); | |
8299 | int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp,const char *file, | |
8300 | uint line); | |
8301 | int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp, | |
8302 | struct timespec *abstime, const char *file, uint line); | |
8303 | void safe_mutex_global_init(void); | |
8304 | void safe_mutex_end(FILE *file); | |
8305 | # 690 "./../include/my_pthread.h" | |
8306 | extern pthread_mutexattr_t my_fast_mutexattr; | |
8307 | ||
8308 | ||
8309 | ||
8310 | ||
8311 | ||
8312 | extern pthread_mutexattr_t my_errorcheck_mutexattr; | |
8313 | # 707 "./../include/my_pthread.h" | |
8314 | extern my_bool my_thread_global_init(void); | |
8315 | extern void my_thread_global_end(void); | |
8316 | extern my_bool my_thread_init(void); | |
8317 | extern void my_thread_end(void); | |
8318 | extern const char *my_thread_name(void); | |
8319 | extern long my_thread_id(void); | |
8320 | extern int pthread_no_free(void *); | |
8321 | extern int pthread_dummy(int); | |
8322 | # 731 "./../include/my_pthread.h" | |
8323 | struct st_my_thread_var | |
8324 | { | |
8325 | int thr_errno; | |
8326 | pthread_cond_t suspend; | |
8327 | pthread_mutex_t mutex; | |
8328 | pthread_mutex_t * volatile current_mutex; | |
8329 | pthread_cond_t * volatile current_cond; | |
8330 | pthread_t pthread_self; | |
8331 | long id; | |
8332 | int cmp_length; | |
8333 | int volatile abort; | |
8334 | my_bool init; | |
8335 | struct st_my_thread_var *next,**prev; | |
8336 | void *opt_info; | |
8337 | ||
8338 | ||
8339 | ||
8340 | ||
8341 | }; | |
8342 | ||
8343 | extern struct st_my_thread_var *_my_thread_var(void) __attribute__ ((const)); | |
8344 | extern uint my_thread_end_wait_time; | |
8345 | # 766 "./../include/my_pthread.h" | |
8346 | extern uint thd_lib_detected; | |
8347 | # 35 "./include/univ.i" 2 | |
8348 | # 44 "./include/univ.i" | |
8349 | # 1 "./include/../ib_config.h" 1 | |
8350 | # 45 "./include/univ.i" 2 | |
8351 | # 187 "./include/univ.i" | |
8352 | typedef unsigned long int ulint; | |
8353 | ||
8354 | typedef long int lint; | |
8355 | ||
8356 | ||
8357 | ||
8358 | ||
8359 | ||
8360 | typedef longlong ib_longlong; | |
8361 | ||
8362 | ||
8363 | typedef unsigned long long int ullint; | |
8364 | # 207 "./include/univ.i" | |
8365 | typedef double utfloat; | |
8366 | # 272 "./include/univ.i" | |
8367 | # 1 "./include/ut0dbg.h" 1 | |
8368 | # 12 "./include/ut0dbg.h" | |
8369 | # 1 "./include/univ.i" 1 | |
8370 | # 13 "./include/ut0dbg.h" 2 | |
8371 | ||
8372 | # 1 "./include/os0thread.h" 1 | |
8373 | # 33 "./include/os0thread.h" | |
8374 | typedef pthread_t os_thread_t; | |
8375 | typedef os_thread_t os_thread_id_t; | |
8376 | ||
8377 | ||
8378 | ||
8379 | ||
8380 | ||
8381 | typedef void* (*os_posix_f_t) (void*); | |
8382 | ||
8383 | ||
8384 | ||
8385 | ||
8386 | ulint | |
8387 | os_thread_eq( | |
8388 | ||
8389 | ||
8390 | os_thread_id_t a, | |
8391 | os_thread_id_t b); | |
8392 | ||
8393 | ||
8394 | ||
8395 | ||
8396 | ulint | |
8397 | os_thread_pf( | |
8398 | ||
8399 | ||
8400 | os_thread_id_t a); | |
8401 | ||
8402 | ||
8403 | ||
8404 | ||
8405 | ||
8406 | ||
8407 | ||
8408 | os_thread_t | |
8409 | os_thread_create( | |
8410 | ||
8411 | ||
8412 | ||
8413 | os_posix_f_t start_f, | |
8414 | ||
8415 | ||
8416 | ||
8417 | ||
8418 | void* arg, | |
8419 | ||
8420 | os_thread_id_t* thread_id); | |
8421 | ||
8422 | int | |
8423 | os_thread_join( | |
8424 | ||
8425 | os_thread_id_t thread_id); | |
8426 | ||
8427 | ||
8428 | ||
8429 | void | |
8430 | os_thread_exit( | |
8431 | ||
8432 | void* exit_value); | |
8433 | ||
8434 | ||
8435 | ||
8436 | ||
8437 | os_thread_id_t | |
8438 | os_thread_get_curr_id(void); | |
8439 | ||
8440 | ||
8441 | ||
8442 | ||
8443 | os_thread_t | |
8444 | os_thread_get_curr(void); | |
8445 | ||
8446 | ||
8447 | ||
8448 | ||
8449 | void | |
8450 | os_thread_yield(void); | |
8451 | ||
8452 | ||
8453 | ||
8454 | ||
8455 | void | |
8456 | os_thread_sleep( | |
8457 | ||
8458 | ulint tm); | |
8459 | ||
8460 | ||
8461 | ||
8462 | ulint | |
8463 | os_thread_get_priority( | |
8464 | ||
8465 | ||
8466 | os_thread_t handle); | |
8467 | ||
8468 | ||
8469 | ||
8470 | void | |
8471 | os_thread_set_priority( | |
8472 | ||
8473 | os_thread_t handle, | |
8474 | ulint pri); | |
8475 | ||
8476 | ||
8477 | ||
8478 | ulint | |
8479 | os_thread_get_last_error(void); | |
8480 | ||
8481 | ||
8482 | ||
8483 | # 1 "./include/os0thread.ic" 1 | |
8484 | # 143 "./include/os0thread.h" 2 | |
8485 | # 15 "./include/ut0dbg.h" 2 | |
8486 | # 27 "./include/ut0dbg.h" | |
8487 | void | |
8488 | ut_dbg_assertion_failed( | |
8489 | ||
8490 | const char* expr, | |
8491 | const char* file, | |
8492 | ulint line); | |
8493 | # 46 "./include/ut0dbg.h" | |
8494 | extern ulint ut_dbg_stop_threads; | |
8495 | ||
8496 | ||
8497 | extern ulint* ut_dbg_null_ptr; | |
8498 | ||
8499 | ||
8500 | ||
8501 | ||
8502 | void | |
8503 | ut_dbg_stop_thread( | |
8504 | ||
8505 | const char* file, | |
8506 | ulint line); | |
8507 | # 273 "./include/univ.i" 2 | |
8508 | # 1 "./include/ut0ut.h" 1 | |
8509 | # 15 "./include/ut0ut.h" | |
8510 | # 1 "/usr/include/ctype.h" 1 3 4 | |
8511 | # 30 "/usr/include/ctype.h" 3 4 | |
8512 | ||
8513 | # 48 "/usr/include/ctype.h" 3 4 | |
8514 | enum | |
8515 | { | |
8516 | _ISupper = (1 << (0)), | |
8517 | _ISlower = (1 << (1)), | |
8518 | _ISalpha = (1 << (2)), | |
8519 | _ISdigit = (1 << (3)), | |
8520 | _ISxdigit = (1 << (4)), | |
8521 | _ISspace = (1 << (5)), | |
8522 | _ISprint = (1 << (6)), | |
8523 | _ISgraph = (1 << (7)), | |
8524 | _ISblank = (1 << (8)), | |
8525 | _IScntrl = (1 << (9)), | |
8526 | _ISpunct = (1 << (10)), | |
8527 | _ISalnum = (1 << (11)) | |
8528 | }; | |
8529 | # 81 "/usr/include/ctype.h" 3 4 | |
8530 | extern __const unsigned short int **__ctype_b_loc (void) | |
8531 | __attribute__ ((__nothrow__)) __attribute__ ((__const)); | |
8532 | extern __const __int32_t **__ctype_tolower_loc (void) | |
8533 | __attribute__ ((__nothrow__)) __attribute__ ((__const)); | |
8534 | extern __const __int32_t **__ctype_toupper_loc (void) | |
8535 | __attribute__ ((__nothrow__)) __attribute__ ((__const)); | |
8536 | # 96 "/usr/include/ctype.h" 3 4 | |
8537 | ||
8538 | ||
8539 | ||
8540 | ||
8541 | ||
8542 | ||
8543 | extern int isalnum (int) __attribute__ ((__nothrow__)); | |
8544 | extern int isalpha (int) __attribute__ ((__nothrow__)); | |
8545 | extern int iscntrl (int) __attribute__ ((__nothrow__)); | |
8546 | extern int isdigit (int) __attribute__ ((__nothrow__)); | |
8547 | extern int islower (int) __attribute__ ((__nothrow__)); | |
8548 | extern int isgraph (int) __attribute__ ((__nothrow__)); | |
8549 | extern int isprint (int) __attribute__ ((__nothrow__)); | |
8550 | extern int ispunct (int) __attribute__ ((__nothrow__)); | |
8551 | extern int isspace (int) __attribute__ ((__nothrow__)); | |
8552 | extern int isupper (int) __attribute__ ((__nothrow__)); | |
8553 | extern int isxdigit (int) __attribute__ ((__nothrow__)); | |
8554 | ||
8555 | ||
8556 | ||
8557 | extern int tolower (int __c) __attribute__ ((__nothrow__)); | |
8558 | ||
8559 | ||
8560 | extern int toupper (int __c) __attribute__ ((__nothrow__)); | |
8561 | ||
8562 | ||
8563 | ||
8564 | ||
8565 | ||
8566 | ||
8567 | ||
8568 | ||
8569 | extern int isblank (int) __attribute__ ((__nothrow__)); | |
8570 | ||
8571 | ||
8572 | ||
8573 | ||
8574 | ||
8575 | ||
8576 | extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__)); | |
8577 | ||
8578 | ||
8579 | ||
8580 | ||
8581 | ||
8582 | ||
8583 | extern int isascii (int __c) __attribute__ ((__nothrow__)); | |
8584 | ||
8585 | ||
8586 | ||
8587 | extern int toascii (int __c) __attribute__ ((__nothrow__)); | |
8588 | ||
8589 | ||
8590 | ||
8591 | extern int _toupper (int) __attribute__ ((__nothrow__)); | |
8592 | extern int _tolower (int) __attribute__ ((__nothrow__)); | |
8593 | # 190 "/usr/include/ctype.h" 3 4 | |
8594 | extern __inline int | |
8595 | __attribute__ ((__nothrow__)) tolower (int __c) | |
8596 | { | |
8597 | return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; | |
8598 | } | |
8599 | ||
8600 | extern __inline int | |
8601 | __attribute__ ((__nothrow__)) toupper (int __c) | |
8602 | { | |
8603 | return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; | |
8604 | } | |
8605 | # 247 "/usr/include/ctype.h" 3 4 | |
8606 | extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8607 | extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8608 | extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8609 | extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8610 | extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8611 | extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8612 | extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8613 | extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8614 | extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8615 | extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8616 | extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8617 | ||
8618 | extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__)); | |
8619 | ||
8620 | ||
8621 | ||
8622 | extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__)); | |
8623 | extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__)); | |
8624 | ||
8625 | ||
8626 | extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__)); | |
8627 | extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__)); | |
8628 | # 323 "/usr/include/ctype.h" 3 4 | |
8629 | ||
8630 | # 16 "./include/ut0ut.h" 2 | |
8631 | ||
8632 | ||
8633 | typedef time_t ib_time_t; | |
8634 | ||
8635 | ||
8636 | ||
8637 | ||
8638 | ||
8639 | ||
8640 | ulint | |
8641 | ut_get_high32( | |
8642 | ||
8643 | ||
8644 | ulint a); | |
8645 | ||
8646 | ||
8647 | static inline | |
8648 | ulint | |
8649 | ut_min( | |
8650 | ||
8651 | ||
8652 | ulint n1, | |
8653 | ulint n2); | |
8654 | ||
8655 | ||
8656 | static inline | |
8657 | ulint | |
8658 | ut_max( | |
8659 | ||
8660 | ||
8661 | ulint n1, | |
8662 | ulint n2); | |
8663 | ||
8664 | ||
8665 | static inline | |
8666 | void | |
8667 | ut_pair_min( | |
8668 | ||
8669 | ulint* a, | |
8670 | ulint* b, | |
8671 | ulint a1, | |
8672 | ulint b1, | |
8673 | ulint a2, | |
8674 | ulint b2); | |
8675 | ||
8676 | ||
8677 | static inline | |
8678 | int | |
8679 | ut_ulint_cmp( | |
8680 | ||
8681 | ||
8682 | ulint a, | |
8683 | ulint b); | |
8684 | ||
8685 | ||
8686 | static inline | |
8687 | int | |
8688 | ut_pair_cmp( | |
8689 | ||
8690 | ||
8691 | ||
8692 | ulint a1, | |
8693 | ulint a2, | |
8694 | ulint b1, | |
8695 | ulint b2); | |
8696 | ||
8697 | ||
8698 | static inline | |
8699 | ulint | |
8700 | ut_2pow_remainder( | |
8701 | ||
8702 | ulint n, | |
8703 | ulint m); | |
8704 | ||
8705 | ||
8706 | static inline | |
8707 | ulint | |
8708 | ut_2pow_round( | |
8709 | ||
8710 | ||
8711 | ulint n, | |
8712 | ulint m); | |
8713 | ||
8714 | ||
8715 | ||
8716 | static inline | |
8717 | ulint | |
8718 | ut_2_log( | |
8719 | ||
8720 | ||
8721 | ulint n); | |
8722 | ||
8723 | ||
8724 | static inline | |
8725 | ulint | |
8726 | ut_2_exp( | |
8727 | ||
8728 | ||
8729 | ulint n); | |
8730 | ||
8731 | ||
8732 | ||
8733 | ulint | |
8734 | ut_2_power_up( | |
8735 | ||
8736 | ||
8737 | ulint n); | |
8738 | ||
8739 | ||
8740 | ||
8741 | void | |
8742 | ut_ulint_sort(ulint* arr, ulint* aux_arr, ulint low, ulint high); | |
8743 | ||
8744 | ||
8745 | ||
8746 | ||
8747 | ulint | |
8748 | ut_clock(void); | |
8749 | ||
8750 | ||
8751 | ||
8752 | ||
8753 | ib_time_t | |
8754 | ut_time(void); | |
8755 | ||
8756 | ||
8757 | ||
8758 | ||
8759 | ||
8760 | ||
8761 | ||
8762 | int | |
8763 | ut_usectime( | |
8764 | ||
8765 | ||
8766 | ulint* sec, | |
8767 | ulint* ms); | |
8768 | ||
8769 | ||
8770 | ||
8771 | double | |
8772 | ut_difftime( | |
8773 | ||
8774 | ||
8775 | ib_time_t time2, | |
8776 | ib_time_t time1); | |
8777 | ||
8778 | ||
8779 | ||
8780 | void | |
8781 | ut_print_timestamp( | |
8782 | ||
8783 | FILE* file); | |
8784 | ||
8785 | ||
8786 | ||
8787 | void | |
8788 | ut_sprintf_timestamp( | |
8789 | ||
8790 | char* buf); | |
8791 | ||
8792 | ||
8793 | ||
8794 | ||
8795 | void | |
8796 | ut_sprintf_timestamp_without_extra_chars( | |
8797 | ||
8798 | char* buf); | |
8799 | ||
8800 | ||
8801 | ||
8802 | void | |
8803 | ut_get_year_month_day( | |
8804 | ||
8805 | ulint* year, | |
8806 | ulint* month, | |
8807 | ulint* day); | |
8808 | ||
8809 | ||
8810 | ||
8811 | ||
8812 | ulint | |
8813 | ut_delay( | |
8814 | ||
8815 | ||
8816 | ulint delay); | |
8817 | ||
8818 | ||
8819 | ||
8820 | void | |
8821 | ut_print_buf( | |
8822 | ||
8823 | FILE* file, | |
8824 | const unsigned char* buf, | |
8825 | ulint len); | |
8826 | ||
8827 | ||
8828 | ||
8829 | ||
8830 | void | |
8831 | ut_print_filename( | |
8832 | ||
8833 | FILE* f, | |
8834 | const char* name); | |
8835 | ||
8836 | ||
8837 | ||
8838 | ||
8839 | struct trx_struct; | |
8840 | ||
8841 | void | |
8842 | ut_print_name( | |
8843 | ||
8844 | FILE* f, | |
8845 | struct trx_struct*trx, | |
8846 | const char* name); | |
8847 | ||
8848 | ||
8849 | ||
8850 | ||
8851 | void | |
8852 | ut_print_namel( | |
8853 | ||
8854 | FILE* f, | |
8855 | struct trx_struct*trx, | |
8856 | const char* name, | |
8857 | ulint namelen); | |
8858 | ||
8859 | ||
8860 | ||
8861 | ||
8862 | void | |
8863 | ut_copy_file( | |
8864 | ||
8865 | FILE* dest, | |
8866 | FILE* src); | |
8867 | ||
8868 | ||
8869 | # 1 "./include/ut0ut.ic" 1 | |
8870 | # 11 "./include/ut0ut.ic" | |
8871 | static inline | |
8872 | ulint | |
8873 | ut_min( | |
8874 | ||
8875 | ||
8876 | ulint n1, | |
8877 | ulint n2) | |
8878 | { | |
8879 | return((n1 <= n2) ? n1 : n2); | |
8880 | } | |
8881 | ||
8882 | ||
8883 | ||
8884 | static inline | |
8885 | ulint | |
8886 | ut_max( | |
8887 | ||
8888 | ||
8889 | ulint n1, | |
8890 | ulint n2) | |
8891 | { | |
8892 | return((n1 <= n2) ? n2 : n1); | |
8893 | } | |
8894 | ||
8895 | ||
8896 | ||
8897 | static inline | |
8898 | void | |
8899 | ut_pair_min( | |
8900 | ||
8901 | ulint* a, | |
8902 | ulint* b, | |
8903 | ulint a1, | |
8904 | ulint b1, | |
8905 | ulint a2, | |
8906 | ulint b2) | |
8907 | { | |
8908 | if (a1 == a2) { | |
8909 | *a = a1; | |
8910 | *b = ut_min(b1, b2); | |
8911 | } else if (a1 < a2) { | |
8912 | *a = a1; | |
8913 | *b = b1; | |
8914 | } else { | |
8915 | *a = a2; | |
8916 | *b = b2; | |
8917 | } | |
8918 | } | |
8919 | ||
8920 | ||
8921 | ||
8922 | static inline | |
8923 | int | |
8924 | ut_ulint_cmp( | |
8925 | ||
8926 | ||
8927 | ulint a, | |
8928 | ulint b) | |
8929 | { | |
8930 | if (a < b) { | |
8931 | return(-1); | |
8932 | } else if (a == b) { | |
8933 | return(0); | |
8934 | } else { | |
8935 | return(1); | |
8936 | } | |
8937 | } | |
8938 | ||
8939 | ||
8940 | ||
8941 | static inline | |
8942 | int | |
8943 | ut_pair_cmp( | |
8944 | ||
8945 | ||
8946 | ulint a1, | |
8947 | ulint a2, | |
8948 | ulint b1, | |
8949 | ulint b2) | |
8950 | { | |
8951 | if (a1 > b1) { | |
8952 | return(1); | |
8953 | } else if (a1 < b1) { | |
8954 | return(-1); | |
8955 | } else if (a2 > b2) { | |
8956 | return(1); | |
8957 | } else if (a2 < b2) { | |
8958 | return(-1); | |
8959 | } else { | |
8960 | return(0); | |
8961 | } | |
8962 | } | |
8963 | ||
8964 | ||
8965 | ||
8966 | static inline | |
8967 | ulint | |
8968 | ut_2pow_remainder( | |
8969 | ||
8970 | ulint n, | |
8971 | ulint m) | |
8972 | { | |
8973 | ; | |
8974 | ||
8975 | return(n & (m - 1)); | |
8976 | } | |
8977 | ||
8978 | ||
8979 | ||
8980 | static inline | |
8981 | ulint | |
8982 | ut_2pow_round( | |
8983 | ||
8984 | ||
8985 | ulint n, | |
8986 | ulint m) | |
8987 | { | |
8988 | ; | |
8989 | ||
8990 | return(n & ~(m - 1)); | |
8991 | } | |
8992 | ||
8993 | ||
8994 | ||
8995 | ||
8996 | static inline | |
8997 | ulint | |
8998 | ut_2_log( | |
8999 | ||
9000 | ||
9001 | ulint n) | |
9002 | { | |
9003 | ulint res; | |
9004 | ||
9005 | res = 0; | |
9006 | ||
9007 | ; | |
9008 | ||
9009 | n = n - 1; | |
9010 | ||
9011 | for (;;) { | |
9012 | n = n / 2; | |
9013 | ||
9014 | if (n == 0) { | |
9015 | break; | |
9016 | } | |
9017 | ||
9018 | res++; | |
9019 | } | |
9020 | ||
9021 | return(res + 1); | |
9022 | } | |
9023 | ||
9024 | ||
9025 | ||
9026 | static inline | |
9027 | ulint | |
9028 | ut_2_exp( | |
9029 | ||
9030 | ||
9031 | ulint n) | |
9032 | { | |
9033 | return((ulint) 1 << n); | |
9034 | } | |
9035 | # 255 "./include/ut0ut.h" 2 | |
9036 | # 274 "./include/univ.i" 2 | |
9037 | # 1 "./include/db0err.h" 1 | |
9038 | # 275 "./include/univ.i" 2 | |
9039 | # 27 "./include/buf0buf.h" 2 | |
9040 | # 1 "./include/fil0fil.h" 1 | |
9041 | # 13 "./include/fil0fil.h" | |
9042 | # 1 "./include/sync0rw.h" 1 | |
9043 | # 13 "./include/sync0rw.h" | |
9044 | # 1 "./include/ut0lst.h" 1 | |
9045 | # 14 "./include/sync0rw.h" 2 | |
9046 | # 1 "./include/sync0sync.h" 1 | |
9047 | # 13 "./include/sync0sync.h" | |
9048 | # 1 "./include/sync0types.h" 1 | |
9049 | # 13 "./include/sync0types.h" | |
9050 | typedef struct mutex_struct ib_mutex_t; | |
9051 | # 14 "./include/sync0sync.h" 2 | |
9052 | ||
9053 | # 1 "./include/ut0mem.h" 1 | |
9054 | # 13 "./include/ut0mem.h" | |
9055 | # 1 "/usr/include/string.h" 1 3 4 | |
9056 | # 28 "/usr/include/string.h" 3 4 | |
9057 | ||
9058 | ||
9059 | ||
9060 | ||
9061 | ||
9062 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
9063 | # 34 "/usr/include/string.h" 2 3 4 | |
9064 | ||
9065 | ||
9066 | ||
9067 | ||
9068 | ||
9069 | ||
9070 | ||
9071 | ||
9072 | ||
9073 | extern void *memcpy (void *__restrict __dest, | |
9074 | __const void *__restrict __src, size_t __n) | |
9075 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9076 | ||
9077 | ||
9078 | extern void *memmove (void *__dest, __const void *__src, size_t __n) | |
9079 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9080 | ||
9081 | ||
9082 | ||
9083 | ||
9084 | ||
9085 | ||
9086 | extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, | |
9087 | int __c, size_t __n) | |
9088 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9089 | ||
9090 | ||
9091 | ||
9092 | ||
9093 | ||
9094 | extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9095 | ||
9096 | ||
9097 | extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) | |
9098 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9099 | # 94 "/usr/include/string.h" 3 4 | |
9100 | extern void *memchr (__const void *__s, int __c, size_t __n) | |
9101 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9102 | ||
9103 | ||
9104 | # 108 "/usr/include/string.h" 3 4 | |
9105 | extern void *rawmemchr (__const void *__s, int __c) | |
9106 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9107 | # 119 "/usr/include/string.h" 3 4 | |
9108 | extern void *memrchr (__const void *__s, int __c, size_t __n) | |
9109 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9110 | ||
9111 | ||
9112 | ||
9113 | ||
9114 | ||
9115 | ||
9116 | extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) | |
9117 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9118 | ||
9119 | extern char *strncpy (char *__restrict __dest, | |
9120 | __const char *__restrict __src, size_t __n) | |
9121 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9122 | ||
9123 | ||
9124 | extern char *strcat (char *__restrict __dest, __const char *__restrict __src) | |
9125 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9126 | ||
9127 | extern char *strncat (char *__restrict __dest, __const char *__restrict __src, | |
9128 | size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9129 | ||
9130 | ||
9131 | extern int strcmp (__const char *__s1, __const char *__s2) | |
9132 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9133 | ||
9134 | extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) | |
9135 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9136 | ||
9137 | ||
9138 | extern int strcoll (__const char *__s1, __const char *__s2) | |
9139 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9140 | ||
9141 | extern size_t strxfrm (char *__restrict __dest, | |
9142 | __const char *__restrict __src, size_t __n) | |
9143 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
9144 | ||
9145 | # 164 "/usr/include/string.h" 3 4 | |
9146 | extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l) | |
9147 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); | |
9148 | ||
9149 | extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n, | |
9150 | __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); | |
9151 | ||
9152 | ||
9153 | ||
9154 | ||
9155 | extern char *strdup (__const char *__s) | |
9156 | __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); | |
9157 | ||
9158 | ||
9159 | ||
9160 | ||
9161 | ||
9162 | ||
9163 | extern char *strndup (__const char *__string, size_t __n) | |
9164 | __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); | |
9165 | # 208 "/usr/include/string.h" 3 4 | |
9166 | ||
9167 | # 233 "/usr/include/string.h" 3 4 | |
9168 | extern char *strchr (__const char *__s, int __c) | |
9169 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9170 | # 260 "/usr/include/string.h" 3 4 | |
9171 | extern char *strrchr (__const char *__s, int __c) | |
9172 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9173 | ||
9174 | ||
9175 | # 274 "/usr/include/string.h" 3 4 | |
9176 | extern char *strchrnul (__const char *__s, int __c) | |
9177 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9178 | ||
9179 | ||
9180 | ||
9181 | ||
9182 | ||
9183 | ||
9184 | extern size_t strcspn (__const char *__s, __const char *__reject) | |
9185 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9186 | ||
9187 | ||
9188 | extern size_t strspn (__const char *__s, __const char *__accept) | |
9189 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9190 | # 312 "/usr/include/string.h" 3 4 | |
9191 | extern char *strpbrk (__const char *__s, __const char *__accept) | |
9192 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9193 | # 340 "/usr/include/string.h" 3 4 | |
9194 | extern char *strstr (__const char *__haystack, __const char *__needle) | |
9195 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9196 | ||
9197 | ||
9198 | ||
9199 | ||
9200 | extern char *strtok (char *__restrict __s, __const char *__restrict __delim) | |
9201 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
9202 | ||
9203 | ||
9204 | ||
9205 | ||
9206 | extern char *__strtok_r (char *__restrict __s, | |
9207 | __const char *__restrict __delim, | |
9208 | char **__restrict __save_ptr) | |
9209 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
9210 | ||
9211 | extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, | |
9212 | char **__restrict __save_ptr) | |
9213 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))); | |
9214 | # 371 "/usr/include/string.h" 3 4 | |
9215 | extern char *strcasestr (__const char *__haystack, __const char *__needle) | |
9216 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9217 | ||
9218 | ||
9219 | ||
9220 | ||
9221 | ||
9222 | ||
9223 | ||
9224 | extern void *memmem (__const void *__haystack, size_t __haystacklen, | |
9225 | __const void *__needle, size_t __needlelen) | |
9226 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3))); | |
9227 | ||
9228 | ||
9229 | ||
9230 | extern void *__mempcpy (void *__restrict __dest, | |
9231 | __const void *__restrict __src, size_t __n) | |
9232 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9233 | extern void *mempcpy (void *__restrict __dest, | |
9234 | __const void *__restrict __src, size_t __n) | |
9235 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9236 | ||
9237 | ||
9238 | ||
9239 | ||
9240 | ||
9241 | extern size_t strlen (__const char *__s) | |
9242 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9243 | ||
9244 | ||
9245 | ||
9246 | ||
9247 | ||
9248 | extern size_t strnlen (__const char *__string, size_t __maxlen) | |
9249 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9250 | ||
9251 | ||
9252 | ||
9253 | ||
9254 | ||
9255 | extern char *strerror (int __errnum) __attribute__ ((__nothrow__)); | |
9256 | ||
9257 | # 436 "/usr/include/string.h" 3 4 | |
9258 | extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) | |
9259 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))); | |
9260 | ||
9261 | ||
9262 | ||
9263 | ||
9264 | ||
9265 | extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__)); | |
9266 | ||
9267 | ||
9268 | ||
9269 | ||
9270 | ||
9271 | extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9272 | ||
9273 | ||
9274 | ||
9275 | extern void bcopy (__const void *__src, void *__dest, size_t __n) | |
9276 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9277 | ||
9278 | ||
9279 | extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9280 | ||
9281 | ||
9282 | extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) | |
9283 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9284 | # 487 "/usr/include/string.h" 3 4 | |
9285 | extern char *index (__const char *__s, int __c) | |
9286 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9287 | # 515 "/usr/include/string.h" 3 4 | |
9288 | extern char *rindex (__const char *__s, int __c) | |
9289 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))); | |
9290 | ||
9291 | ||
9292 | ||
9293 | ||
9294 | extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
9295 | ||
9296 | ||
9297 | ||
9298 | ||
9299 | extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
9300 | ||
9301 | __extension__ extern int ffsll (long long int __ll) | |
9302 | __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
9303 | ||
9304 | ||
9305 | ||
9306 | ||
9307 | extern int strcasecmp (__const char *__s1, __const char *__s2) | |
9308 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9309 | ||
9310 | ||
9311 | extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) | |
9312 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9313 | ||
9314 | ||
9315 | ||
9316 | ||
9317 | ||
9318 | extern int strcasecmp_l (__const char *__s1, __const char *__s2, | |
9319 | __locale_t __loc) | |
9320 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3))); | |
9321 | ||
9322 | extern int strncasecmp_l (__const char *__s1, __const char *__s2, | |
9323 | size_t __n, __locale_t __loc) | |
9324 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4))); | |
9325 | ||
9326 | ||
9327 | ||
9328 | ||
9329 | ||
9330 | extern char *strsep (char **__restrict __stringp, | |
9331 | __const char *__restrict __delim) | |
9332 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9333 | ||
9334 | ||
9335 | ||
9336 | ||
9337 | extern char *strsignal (int __sig) __attribute__ ((__nothrow__)); | |
9338 | ||
9339 | ||
9340 | extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src) | |
9341 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9342 | extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src) | |
9343 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9344 | ||
9345 | ||
9346 | ||
9347 | extern char *__stpncpy (char *__restrict __dest, | |
9348 | __const char *__restrict __src, size_t __n) | |
9349 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9350 | extern char *stpncpy (char *__restrict __dest, | |
9351 | __const char *__restrict __src, size_t __n) | |
9352 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))); | |
9353 | ||
9354 | ||
9355 | ||
9356 | ||
9357 | extern int strverscmp (__const char *__s1, __const char *__s2) | |
9358 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
9359 | ||
9360 | ||
9361 | extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9362 | ||
9363 | ||
9364 | extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9365 | # 604 "/usr/include/string.h" 3 4 | |
9366 | extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
9367 | # 632 "/usr/include/string.h" 3 4 | |
9368 | # 1 "/usr/include/bits/string.h" 1 3 4 | |
9369 | # 633 "/usr/include/string.h" 2 3 4 | |
9370 | ||
9371 | ||
9372 | # 1 "/usr/include/bits/string2.h" 1 3 4 | |
9373 | # 80 "/usr/include/bits/string2.h" 3 4 | |
9374 | typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2; | |
9375 | typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3; | |
9376 | typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4; | |
9377 | typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5; | |
9378 | typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6; | |
9379 | typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7; | |
9380 | typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8; | |
9381 | # 394 "/usr/include/bits/string2.h" 3 4 | |
9382 | extern void *__rawmemchr (const void *__s, int __c); | |
9383 | # 969 "/usr/include/bits/string2.h" 3 4 | |
9384 | extern __inline size_t __strcspn_c1 (__const char *__s, int __reject); | |
9385 | extern __inline size_t | |
9386 | __strcspn_c1 (__const char *__s, int __reject) | |
9387 | { | |
9388 | register size_t __result = 0; | |
9389 | while (__s[__result] != '\0' && __s[__result] != __reject) | |
9390 | ++__result; | |
9391 | return __result; | |
9392 | } | |
9393 | ||
9394 | extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1, | |
9395 | int __reject2); | |
9396 | extern __inline size_t | |
9397 | __strcspn_c2 (__const char *__s, int __reject1, int __reject2) | |
9398 | { | |
9399 | register size_t __result = 0; | |
9400 | while (__s[__result] != '\0' && __s[__result] != __reject1 | |
9401 | && __s[__result] != __reject2) | |
9402 | ++__result; | |
9403 | return __result; | |
9404 | } | |
9405 | ||
9406 | extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1, | |
9407 | int __reject2, int __reject3); | |
9408 | extern __inline size_t | |
9409 | __strcspn_c3 (__const char *__s, int __reject1, int __reject2, | |
9410 | int __reject3) | |
9411 | { | |
9412 | register size_t __result = 0; | |
9413 | while (__s[__result] != '\0' && __s[__result] != __reject1 | |
9414 | && __s[__result] != __reject2 && __s[__result] != __reject3) | |
9415 | ++__result; | |
9416 | return __result; | |
9417 | } | |
9418 | # 1045 "/usr/include/bits/string2.h" 3 4 | |
9419 | extern __inline size_t __strspn_c1 (__const char *__s, int __accept); | |
9420 | extern __inline size_t | |
9421 | __strspn_c1 (__const char *__s, int __accept) | |
9422 | { | |
9423 | register size_t __result = 0; | |
9424 | ||
9425 | while (__s[__result] == __accept) | |
9426 | ++__result; | |
9427 | return __result; | |
9428 | } | |
9429 | ||
9430 | extern __inline size_t __strspn_c2 (__const char *__s, int __accept1, | |
9431 | int __accept2); | |
9432 | extern __inline size_t | |
9433 | __strspn_c2 (__const char *__s, int __accept1, int __accept2) | |
9434 | { | |
9435 | register size_t __result = 0; | |
9436 | ||
9437 | while (__s[__result] == __accept1 || __s[__result] == __accept2) | |
9438 | ++__result; | |
9439 | return __result; | |
9440 | } | |
9441 | ||
9442 | extern __inline size_t __strspn_c3 (__const char *__s, int __accept1, | |
9443 | int __accept2, int __accept3); | |
9444 | extern __inline size_t | |
9445 | __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3) | |
9446 | { | |
9447 | register size_t __result = 0; | |
9448 | ||
9449 | while (__s[__result] == __accept1 || __s[__result] == __accept2 | |
9450 | || __s[__result] == __accept3) | |
9451 | ++__result; | |
9452 | return __result; | |
9453 | } | |
9454 | # 1121 "/usr/include/bits/string2.h" 3 4 | |
9455 | extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1, | |
9456 | int __accept2); | |
9457 | extern __inline char * | |
9458 | __strpbrk_c2 (__const char *__s, int __accept1, int __accept2) | |
9459 | { | |
9460 | ||
9461 | while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) | |
9462 | ++__s; | |
9463 | return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; | |
9464 | } | |
9465 | ||
9466 | extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1, | |
9467 | int __accept2, int __accept3); | |
9468 | extern __inline char * | |
9469 | __strpbrk_c3 (__const char *__s, int __accept1, int __accept2, | |
9470 | int __accept3) | |
9471 | { | |
9472 | ||
9473 | while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 | |
9474 | && *__s != __accept3) | |
9475 | ++__s; | |
9476 | return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; | |
9477 | } | |
9478 | # 1172 "/usr/include/bits/string2.h" 3 4 | |
9479 | extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp); | |
9480 | extern __inline char * | |
9481 | __strtok_r_1c (char *__s, char __sep, char **__nextp) | |
9482 | { | |
9483 | char *__result; | |
9484 | if (__s == ((void *)0)) | |
9485 | __s = *__nextp; | |
9486 | while (*__s == __sep) | |
9487 | ++__s; | |
9488 | __result = ((void *)0); | |
9489 | if (*__s != '\0') | |
9490 | { | |
9491 | __result = __s++; | |
9492 | while (*__s != '\0') | |
9493 | if (*__s++ == __sep) | |
9494 | { | |
9495 | __s[-1] = '\0'; | |
9496 | break; | |
9497 | } | |
9498 | } | |
9499 | *__nextp = __s; | |
9500 | return __result; | |
9501 | } | |
9502 | # 1204 "/usr/include/bits/string2.h" 3 4 | |
9503 | extern char *__strsep_g (char **__stringp, __const char *__delim); | |
9504 | # 1222 "/usr/include/bits/string2.h" 3 4 | |
9505 | extern __inline char *__strsep_1c (char **__s, char __reject); | |
9506 | extern __inline char * | |
9507 | __strsep_1c (char **__s, char __reject) | |
9508 | { | |
9509 | register char *__retval = *__s; | |
9510 | if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0)) | |
9511 | *(*__s)++ = '\0'; | |
9512 | return __retval; | |
9513 | } | |
9514 | ||
9515 | extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2); | |
9516 | extern __inline char * | |
9517 | __strsep_2c (char **__s, char __reject1, char __reject2) | |
9518 | { | |
9519 | register char *__retval = *__s; | |
9520 | if (__retval != ((void *)0)) | |
9521 | { | |
9522 | register char *__cp = __retval; | |
9523 | while (1) | |
9524 | { | |
9525 | if (*__cp == '\0') | |
9526 | { | |
9527 | __cp = ((void *)0); | |
9528 | break; | |
9529 | } | |
9530 | if (*__cp == __reject1 || *__cp == __reject2) | |
9531 | { | |
9532 | *__cp++ = '\0'; | |
9533 | break; | |
9534 | } | |
9535 | ++__cp; | |
9536 | } | |
9537 | *__s = __cp; | |
9538 | } | |
9539 | return __retval; | |
9540 | } | |
9541 | ||
9542 | extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2, | |
9543 | char __reject3); | |
9544 | extern __inline char * | |
9545 | __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3) | |
9546 | { | |
9547 | register char *__retval = *__s; | |
9548 | if (__retval != ((void *)0)) | |
9549 | { | |
9550 | register char *__cp = __retval; | |
9551 | while (1) | |
9552 | { | |
9553 | if (*__cp == '\0') | |
9554 | { | |
9555 | __cp = ((void *)0); | |
9556 | break; | |
9557 | } | |
9558 | if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3) | |
9559 | { | |
9560 | *__cp++ = '\0'; | |
9561 | break; | |
9562 | } | |
9563 | ++__cp; | |
9564 | } | |
9565 | *__s = __cp; | |
9566 | } | |
9567 | return __retval; | |
9568 | } | |
9569 | # 1303 "/usr/include/bits/string2.h" 3 4 | |
9570 | extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); | |
9571 | # 1322 "/usr/include/bits/string2.h" 3 4 | |
9572 | extern char *__strndup (__const char *__string, size_t __n) | |
9573 | __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)); | |
9574 | # 636 "/usr/include/string.h" 2 3 4 | |
9575 | ||
9576 | ||
9577 | ||
9578 | ||
9579 | # 1 "/usr/include/bits/string3.h" 1 3 4 | |
9580 | # 23 "/usr/include/bits/string3.h" 3 4 | |
9581 | extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters"))); | |
9582 | # 48 "/usr/include/bits/string3.h" 3 4 | |
9583 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void * | |
9584 | __attribute__ ((__nothrow__)) memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) | |
9585 | ||
9586 | { | |
9587 | return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); | |
9588 | } | |
9589 | ||
9590 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void * | |
9591 | __attribute__ ((__nothrow__)) memmove (void *__restrict __dest, __const void *__restrict __src, size_t __len) | |
9592 | ||
9593 | { | |
9594 | return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); | |
9595 | } | |
9596 | ||
9597 | ||
9598 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void * | |
9599 | __attribute__ ((__nothrow__)) mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len) | |
9600 | ||
9601 | { | |
9602 | return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); | |
9603 | } | |
9604 | # 77 "/usr/include/bits/string3.h" 3 4 | |
9605 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void * | |
9606 | __attribute__ ((__nothrow__)) memset (void *__dest, int __ch, size_t __len) | |
9607 | { | |
9608 | if (__builtin_constant_p (__len) && __len == 0) | |
9609 | { | |
9610 | __warn_memset_zero_len (); | |
9611 | return __dest; | |
9612 | } | |
9613 | return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0)); | |
9614 | } | |
9615 | ||
9616 | ||
9617 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void | |
9618 | __attribute__ ((__nothrow__)) bcopy (__const void *__restrict __src, void *__restrict __dest, size_t __len) | |
9619 | ||
9620 | { | |
9621 | (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0)); | |
9622 | } | |
9623 | ||
9624 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void | |
9625 | __attribute__ ((__nothrow__)) bzero (void *__dest, size_t __len) | |
9626 | { | |
9627 | (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0)); | |
9628 | } | |
9629 | ||
9630 | ||
9631 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9632 | __attribute__ ((__nothrow__)) strcpy (char *__restrict __dest, __const char *__restrict __src) | |
9633 | { | |
9634 | return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); | |
9635 | } | |
9636 | ||
9637 | ||
9638 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9639 | __attribute__ ((__nothrow__)) stpcpy (char *__restrict __dest, __const char *__restrict __src) | |
9640 | { | |
9641 | return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); | |
9642 | } | |
9643 | ||
9644 | ||
9645 | ||
9646 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9647 | __attribute__ ((__nothrow__)) strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len) | |
9648 | ||
9649 | { | |
9650 | return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); | |
9651 | } | |
9652 | ||
9653 | ||
9654 | extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n, | |
9655 | size_t __destlen) __attribute__ ((__nothrow__)); | |
9656 | extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) __asm__ ("" "stpncpy") __attribute__ ((__nothrow__)); | |
9657 | ||
9658 | ||
9659 | ||
9660 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9661 | __attribute__ ((__nothrow__)) stpncpy (char *__dest, __const char *__src, size_t __n) | |
9662 | { | |
9663 | if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1 | |
9664 | && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1))) | |
9665 | return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1)); | |
9666 | return __stpncpy_alias (__dest, __src, __n); | |
9667 | } | |
9668 | ||
9669 | ||
9670 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9671 | __attribute__ ((__nothrow__)) strcat (char *__restrict __dest, __const char *__restrict __src) | |
9672 | { | |
9673 | return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1)); | |
9674 | } | |
9675 | ||
9676 | ||
9677 | extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char * | |
9678 | __attribute__ ((__nothrow__)) strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len) | |
9679 | ||
9680 | { | |
9681 | return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1)); | |
9682 | } | |
9683 | # 641 "/usr/include/string.h" 2 3 4 | |
9684 | ||
9685 | ||
9686 | ||
9687 | ||
9688 | # 14 "./include/ut0mem.h" 2 | |
9689 | ||
9690 | ||
9691 | ||
9692 | extern ulint ut_total_allocated_memory; | |
9693 | ||
9694 | static inline | |
9695 | void* | |
9696 | ut_memcpy(void* dest, const void* sour, ulint n); | |
9697 | ||
9698 | static inline | |
9699 | void* | |
9700 | ut_memmove(void* dest, const void* sour, ulint n); | |
9701 | ||
9702 | static inline | |
9703 | int | |
9704 | ut_memcmp(const void* str1, const void* str2, ulint n); | |
9705 | ||
9706 | ||
9707 | ||
9708 | ||
9709 | ||
9710 | ||
9711 | void* | |
9712 | ut_malloc_low( | |
9713 | ||
9714 | ||
9715 | ulint n, | |
9716 | ulint set_to_zero, | |
9717 | ||
9718 | ulint assert_on_error); | |
9719 | ||
9720 | ||
9721 | ||
9722 | ||
9723 | ||
9724 | void* | |
9725 | ut_malloc( | |
9726 | ||
9727 | ||
9728 | ulint n); | |
9729 | ||
9730 | ||
9731 | ||
9732 | ||
9733 | ||
9734 | ulint | |
9735 | ut_test_malloc( | |
9736 | ||
9737 | ||
9738 | ulint n); | |
9739 | ||
9740 | ||
9741 | ||
9742 | void | |
9743 | ut_free( | |
9744 | ||
9745 | void* ptr); | |
9746 | # 96 "./include/ut0mem.h" | |
9747 | void* | |
9748 | ut_realloc( | |
9749 | ||
9750 | ||
9751 | void* ptr, | |
9752 | ulint size); | |
9753 | ||
9754 | ||
9755 | ||
9756 | void | |
9757 | ut_free_all_mem(void); | |
9758 | ||
9759 | ||
9760 | static inline | |
9761 | char* | |
9762 | ut_strcpy(char* dest, const char* sour); | |
9763 | ||
9764 | static inline | |
9765 | ulint | |
9766 | ut_strlen(const char* str); | |
9767 | ||
9768 | static inline | |
9769 | int | |
9770 | ut_strcmp(const void* str1, const void* str2); | |
9771 | ||
9772 | ||
9773 | ||
9774 | ||
9775 | ||
9776 | ||
9777 | ulint | |
9778 | ut_strlcpy( | |
9779 | ||
9780 | ||
9781 | char* dst, | |
9782 | const char* src, | |
9783 | ulint size); | |
9784 | ||
9785 | ||
9786 | ||
9787 | ||
9788 | ||
9789 | ulint | |
9790 | ut_strlcpy_rev( | |
9791 | ||
9792 | ||
9793 | char* dst, | |
9794 | const char* src, | |
9795 | ulint size); | |
9796 | ||
9797 | ||
9798 | ||
9799 | static inline | |
9800 | ulint | |
9801 | ut_strlenq( | |
9802 | ||
9803 | ||
9804 | const char* str, | |
9805 | char q); | |
9806 | ||
9807 | ||
9808 | ||
9809 | ||
9810 | ||
9811 | ||
9812 | char* | |
9813 | ut_strcpyq( | |
9814 | ||
9815 | ||
9816 | char* dest, | |
9817 | char q, | |
9818 | const char* src); | |
9819 | ||
9820 | ||
9821 | ||
9822 | ||
9823 | ||
9824 | ||
9825 | char* | |
9826 | ut_memcpyq( | |
9827 | ||
9828 | ||
9829 | char* dest, | |
9830 | char q, | |
9831 | const char* src, | |
9832 | ulint len); | |
9833 | ||
9834 | ||
9835 | # 1 "./include/ut0mem.ic" 1 | |
9836 | # 9 "./include/ut0mem.ic" | |
9837 | static inline | |
9838 | void* | |
9839 | ut_memcpy(void* dest, const void* sour, ulint n) | |
9840 | { | |
9841 | return(memcpy(dest, sour, n)); | |
9842 | } | |
9843 | ||
9844 | static inline | |
9845 | void* | |
9846 | ut_memmove(void* dest, const void* sour, ulint n) | |
9847 | { | |
9848 | return(memmove(dest, sour, n)); | |
9849 | } | |
9850 | ||
9851 | static inline | |
9852 | int | |
9853 | ut_memcmp(const void* str1, const void* str2, ulint n) | |
9854 | { | |
9855 | return(memcmp(str1, str2, n)); | |
9856 | } | |
9857 | ||
9858 | static inline | |
9859 | char* | |
9860 | ut_strcpy(char* dest, const char* sour) | |
9861 | { | |
9862 | return(strcpy(dest, sour)); | |
9863 | } | |
9864 | ||
9865 | static inline | |
9866 | ulint | |
9867 | ut_strlen(const char* str) | |
9868 | { | |
9869 | return(strlen(str)); | |
9870 | } | |
9871 | ||
9872 | static inline | |
9873 | int | |
9874 | ut_strcmp(const void* str1, const void* str2) | |
9875 | { | |
9876 | return(__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((const char*)str1) && __builtin_constant_p ((const char*)str2) && (__s1_len = strlen ((const char*)str1), __s2_len = strlen ((const char*)str2), (!((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) || __s2_len >= 4)) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__builtin_constant_p ((const char*)str1) && ((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) && (__s1_len = strlen ((const char*)str1), __s1_len < 4) ? (__builtin_constant_p ((const char*)str2) && ((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ((const char*)str2); register int __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ((const char*)str2) && ((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) && (__s2_len = strlen ((const char*)str2), __s2_len < 4) ? (__builtin_constant_p ((const char*)str1) && ((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((const char*)str1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ((const char*)str2))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ((const char*)str2))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ((const char*)str2))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ((const char*)str2))[3]); } } __result; }))) : __builtin_strcmp ((const char*)str1, (const char*)str2)))); })); | |
9877 | } | |
9878 | ||
9879 | ||
9880 | ||
9881 | static inline | |
9882 | ulint | |
9883 | ut_strlenq( | |
9884 | ||
9885 | ||
9886 | const char* str, | |
9887 | char q) | |
9888 | { | |
9889 | ulint len; | |
9890 | ||
9891 | for (len = 0; *str; len++, str++) { | |
9892 | if (*str == q) { | |
9893 | len++; | |
9894 | } | |
9895 | } | |
9896 | ||
9897 | return(len); | |
9898 | } | |
9899 | # 185 "./include/ut0mem.h" 2 | |
9900 | # 16 "./include/sync0sync.h" 2 | |
9901 | ||
9902 | # 1 "./include/os0sync.h" 1 | |
9903 | # 31 "./include/os0sync.h" | |
9904 | typedef pthread_mutex_t os_fast_mutex_t; | |
9905 | ||
9906 | typedef struct os_event_struct os_event_struct_t; | |
9907 | typedef os_event_struct_t* os_event_t; | |
9908 | ||
9909 | struct os_event_struct { | |
9910 | os_fast_mutex_t os_mutex; | |
9911 | ||
9912 | ulint is_set; | |
9913 | ||
9914 | ||
9915 | ||
9916 | ib_longlong signal_count; | |
9917 | ||
9918 | pthread_cond_t cond_var; | |
9919 | ||
9920 | struct { os_event_struct_t * prev; os_event_struct_t * next; } os_event_list; | |
9921 | ||
9922 | }; | |
9923 | ||
9924 | ||
9925 | typedef struct os_mutex_struct os_mutex_str_t; | |
9926 | typedef os_mutex_str_t* os_mutex_t; | |
9927 | ||
9928 | ||
9929 | ||
9930 | ||
9931 | ||
9932 | ||
9933 | extern os_mutex_t os_sync_mutex; | |
9934 | ||
9935 | ||
9936 | ||
9937 | extern ulint os_thread_count; | |
9938 | ||
9939 | extern ulint os_event_count; | |
9940 | extern ulint os_mutex_count; | |
9941 | extern ulint os_fast_mutex_count; | |
9942 | ||
9943 | ||
9944 | ||
9945 | ||
9946 | void | |
9947 | os_sync_init(void); | |
9948 | ||
9949 | ||
9950 | ||
9951 | ||
9952 | void | |
9953 | os_sync_free(void); | |
9954 | ||
9955 | ||
9956 | ||
9957 | ||
9958 | ||
9959 | ||
9960 | os_event_t | |
9961 | os_event_create( | |
9962 | ||
9963 | ||
9964 | const char* name); | |
9965 | # 109 "./include/os0sync.h" | |
9966 | void | |
9967 | os_event_set( | |
9968 | ||
9969 | os_event_t event); | |
9970 | # 121 "./include/os0sync.h" | |
9971 | ib_longlong | |
9972 | os_event_reset( | |
9973 | ||
9974 | os_event_t event); | |
9975 | ||
9976 | ||
9977 | ||
9978 | void | |
9979 | os_event_free( | |
9980 | ||
9981 | os_event_t event); | |
9982 | # 156 "./include/os0sync.h" | |
9983 | void | |
9984 | os_event_wait_low( | |
9985 | ||
9986 | os_event_t event, | |
9987 | ib_longlong reset_sig_count); | |
9988 | ||
9989 | ||
9990 | ||
9991 | ||
9992 | ||
9993 | ||
9994 | ||
9995 | ulint | |
9996 | os_event_wait_time( | |
9997 | ||
9998 | ||
9999 | ||
10000 | ||
10001 | os_event_t event, | |
10002 | ulint time); | |
10003 | # 197 "./include/os0sync.h" | |
10004 | os_mutex_t | |
10005 | os_mutex_create( | |
10006 | ||
10007 | ||
10008 | const char* name); | |
10009 | ||
10010 | ||
10011 | ||
10012 | ||
10013 | void | |
10014 | os_mutex_enter( | |
10015 | ||
10016 | os_mutex_t mutex); | |
10017 | ||
10018 | ||
10019 | ||
10020 | void | |
10021 | os_mutex_exit( | |
10022 | ||
10023 | os_mutex_t mutex); | |
10024 | ||
10025 | ||
10026 | ||
10027 | void | |
10028 | os_mutex_free( | |
10029 | ||
10030 | os_mutex_t mutex); | |
10031 | ||
10032 | ||
10033 | ||
10034 | static inline | |
10035 | ulint | |
10036 | os_fast_mutex_trylock( | |
10037 | ||
10038 | ||
10039 | ||
10040 | ||
10041 | os_fast_mutex_t* fast_mutex); | |
10042 | ||
10043 | ||
10044 | ||
10045 | void | |
10046 | os_fast_mutex_unlock( | |
10047 | ||
10048 | os_fast_mutex_t* fast_mutex); | |
10049 | ||
10050 | ||
10051 | ||
10052 | void | |
10053 | os_fast_mutex_init( | |
10054 | ||
10055 | os_fast_mutex_t* fast_mutex); | |
10056 | ||
10057 | ||
10058 | ||
10059 | void | |
10060 | os_fast_mutex_lock( | |
10061 | ||
10062 | os_fast_mutex_t* fast_mutex); | |
10063 | ||
10064 | ||
10065 | ||
10066 | void | |
10067 | os_fast_mutex_free( | |
10068 | ||
10069 | os_fast_mutex_t* fast_mutex); | |
10070 | ||
10071 | ||
10072 | # 1 "./include/os0sync.ic" 1 | |
10073 | # 16 "./include/os0sync.ic" | |
10074 | static inline | |
10075 | ulint | |
10076 | os_fast_mutex_trylock( | |
10077 | ||
10078 | ||
10079 | ||
10080 | ||
10081 | os_fast_mutex_t* fast_mutex) | |
10082 | { | |
10083 | # 43 "./include/os0sync.ic" | |
10084 | return((ulint) pthread_mutex_trylock(fast_mutex)); | |
10085 | ||
10086 | ||
10087 | } | |
10088 | # 266 "./include/os0sync.h" 2 | |
10089 | # 18 "./include/sync0sync.h" 2 | |
10090 | # 1 "./include/sync0arr.h" 1 | |
10091 | # 17 "./include/sync0arr.h" | |
10092 | typedef struct sync_cell_struct sync_cell_t; | |
10093 | typedef struct sync_array_struct sync_array_t; | |
10094 | # 28 "./include/sync0arr.h" | |
10095 | sync_array_t* | |
10096 | sync_array_create( | |
10097 | ||
10098 | ||
10099 | ulint n_cells, | |
10100 | ||
10101 | ulint protection); | |
10102 | ||
10103 | ||
10104 | ||
10105 | ||
10106 | ||
10107 | void | |
10108 | sync_array_free( | |
10109 | ||
10110 | sync_array_t* arr); | |
10111 | ||
10112 | ||
10113 | ||
10114 | ||
10115 | void | |
10116 | sync_array_reserve_cell( | |
10117 | ||
10118 | sync_array_t* arr, | |
10119 | void* object, | |
10120 | ulint type, | |
10121 | const char* file, | |
10122 | ulint line, | |
10123 | ulint* index); | |
10124 | ||
10125 | ||
10126 | ||
10127 | ||
10128 | ||
10129 | ||
10130 | void | |
10131 | sync_array_wait_event( | |
10132 | ||
10133 | sync_array_t* arr, | |
10134 | ulint index); | |
10135 | ||
10136 | ||
10137 | ||
10138 | ||
10139 | void | |
10140 | sync_array_free_cell( | |
10141 | ||
10142 | sync_array_t* arr, | |
10143 | ulint index); | |
10144 | ||
10145 | ||
10146 | ||
10147 | void | |
10148 | sync_array_object_signalled( | |
10149 | ||
10150 | sync_array_t* arr); | |
10151 | ||
10152 | ||
10153 | ||
10154 | ||
10155 | ||
10156 | void | |
10157 | sync_arr_wake_threads_if_sema_free(void); | |
10158 | ||
10159 | ||
10160 | ||
10161 | ||
10162 | ulint | |
10163 | sync_array_print_long_waits(void); | |
10164 | ||
10165 | ||
10166 | ||
10167 | ||
10168 | ||
10169 | ||
10170 | ||
10171 | void | |
10172 | sync_array_validate( | |
10173 | ||
10174 | sync_array_t* arr); | |
10175 | ||
10176 | ||
10177 | ||
10178 | void | |
10179 | sync_array_print_info( | |
10180 | ||
10181 | FILE* file, | |
10182 | sync_array_t* arr); | |
10183 | ||
10184 | ||
10185 | ||
10186 | # 1 "./include/sync0arr.ic" 1 | |
10187 | # 120 "./include/sync0arr.h" 2 | |
10188 | # 19 "./include/sync0sync.h" 2 | |
10189 | ||
10190 | ||
10191 | extern my_bool timed_mutexes; | |
10192 | ||
10193 | ||
10194 | ||
10195 | ||
10196 | ||
10197 | void | |
10198 | sync_init(void); | |
10199 | ||
10200 | ||
10201 | ||
10202 | ||
10203 | void | |
10204 | sync_close(void); | |
10205 | # 54 "./include/sync0sync.h" | |
10206 | void | |
10207 | mutex_create_func( | |
10208 | ||
10209 | ib_mutex_t* mutex, | |
10210 | ||
10211 | ||
10212 | ||
10213 | const char* cfile_name, | |
10214 | ulint cline); | |
10215 | ||
10216 | ||
10217 | ||
10218 | ||
10219 | ||
10220 | ||
10221 | void | |
10222 | mutex_free( | |
10223 | ||
10224 | ib_mutex_t* mutex); | |
10225 | # 83 "./include/sync0sync.h" | |
10226 | void | |
10227 | mutex_enter_noninline( | |
10228 | ||
10229 | ib_mutex_t* mutex); | |
10230 | # 100 "./include/sync0sync.h" | |
10231 | static inline | |
10232 | void | |
10233 | mutex_enter_func( | |
10234 | ||
10235 | ib_mutex_t* mutex, | |
10236 | const char* file_name, | |
10237 | ulint line); | |
10238 | ||
10239 | ||
10240 | ||
10241 | ||
10242 | ulint | |
10243 | mutex_enter_nowait( | |
10244 | ||
10245 | ||
10246 | ib_mutex_t* mutex, | |
10247 | const char* file_name, | |
10248 | ||
10249 | ulint line); | |
10250 | ||
10251 | ||
10252 | static inline | |
10253 | void | |
10254 | mutex_exit( | |
10255 | ||
10256 | ib_mutex_t* mutex); | |
10257 | ||
10258 | ||
10259 | ||
10260 | void | |
10261 | mutex_exit_noninline( | |
10262 | ||
10263 | ib_mutex_t* mutex); | |
10264 | ||
10265 | ||
10266 | ||
10267 | ||
10268 | ulint | |
10269 | sync_all_freed(void); | |
10270 | ||
10271 | ||
10272 | ||
10273 | ||
10274 | ||
10275 | ||
10276 | void | |
10277 | sync_print_wait_info( | |
10278 | ||
10279 | FILE* file); | |
10280 | ||
10281 | ||
10282 | ||
10283 | void | |
10284 | sync_print( | |
10285 | ||
10286 | FILE* file); | |
10287 | ||
10288 | ||
10289 | ||
10290 | ulint | |
10291 | mutex_validate( | |
10292 | ||
10293 | ib_mutex_t* mutex); | |
10294 | ||
10295 | ||
10296 | ||
10297 | void | |
10298 | mutex_set_level( | |
10299 | ||
10300 | ib_mutex_t* mutex, | |
10301 | ulint level); | |
10302 | ||
10303 | ||
10304 | ||
10305 | ||
10306 | ||
10307 | void | |
10308 | sync_thread_add_level( | |
10309 | ||
10310 | void* latch, | |
10311 | ulint level); | |
10312 | ||
10313 | ||
10314 | ||
10315 | ||
10316 | ulint | |
10317 | sync_thread_reset_level( | |
10318 | ||
10319 | ||
10320 | ||
10321 | ||
10322 | ||
10323 | void* latch); | |
10324 | ||
10325 | ||
10326 | ||
10327 | ulint | |
10328 | sync_thread_levels_empty(void); | |
10329 | ||
10330 | ||
10331 | ||
10332 | ||
10333 | ||
10334 | ulint | |
10335 | sync_thread_levels_empty_gen( | |
10336 | ||
10337 | ||
10338 | ||
10339 | ulint dict_mutex_allowed); | |
10340 | # 249 "./include/sync0sync.h" | |
10341 | static inline | |
10342 | ulint | |
10343 | mutex_get_lock_word( | |
10344 | ||
10345 | ib_mutex_t* mutex); | |
10346 | # 461 "./include/sync0sync.h" | |
10347 | struct mutex_struct { | |
10348 | os_event_t event; | |
10349 | ulint lock_word; | |
10350 | ||
10351 | ||
10352 | os_fast_mutex_t | |
10353 | os_fast_mutex; | |
10354 | ||
10355 | ||
10356 | ulint waiters; | |
10357 | ||
10358 | ||
10359 | ||
10360 | struct { ib_mutex_t * prev; ib_mutex_t * next; } list; | |
10361 | ||
10362 | ||
10363 | ||
10364 | ||
10365 | ||
10366 | ||
10367 | ||
10368 | ulint level; | |
10369 | ||
10370 | const char* cfile_name; | |
10371 | ulint cline; | |
10372 | ulint magic_n; | |
10373 | ||
10374 | ulong count_os_wait; | |
10375 | # 500 "./include/sync0sync.h" | |
10376 | }; | |
10377 | ||
10378 | ||
10379 | ||
10380 | ||
10381 | ||
10382 | ||
10383 | extern sync_array_t* sync_primary_wait_array; | |
10384 | # 524 "./include/sync0sync.h" | |
10385 | extern ulint mutex_system_call_count; | |
10386 | extern ulint mutex_exit_count; | |
10387 | ||
10388 | ||
10389 | extern ulint sync_order_checks_on; | |
10390 | ||
10391 | ||
10392 | extern ulint sync_initialized; | |
10393 | ||
10394 | ||
10395 | typedef struct { ulint count; ib_mutex_t * start; ib_mutex_t * end; } ut_list_base_node_t; | |
10396 | extern ut_list_base_node_t mutex_list; | |
10397 | ||
10398 | ||
10399 | extern ib_mutex_t mutex_list_mutex; | |
10400 | ||
10401 | ||
10402 | ||
10403 | # 1 "./include/sync0sync.ic" 1 | |
10404 | # 22 "./include/sync0sync.ic" | |
10405 | void | |
10406 | mutex_set_waiters( | |
10407 | ||
10408 | ib_mutex_t* mutex, | |
10409 | ulint n); | |
10410 | ||
10411 | ||
10412 | ||
10413 | ||
10414 | ||
10415 | void | |
10416 | mutex_spin_wait( | |
10417 | ||
10418 | ib_mutex_t* mutex, | |
10419 | const char* file_name, | |
10420 | ulint line); | |
10421 | # 52 "./include/sync0sync.ic" | |
10422 | void | |
10423 | mutex_signal_object( | |
10424 | ||
10425 | ib_mutex_t* mutex); | |
10426 | ||
10427 | ||
10428 | ||
10429 | ||
10430 | static inline | |
10431 | ulint | |
10432 | mutex_test_and_set( | |
10433 | ||
10434 | ||
10435 | ||
10436 | ib_mutex_t* mutex) | |
10437 | { | |
10438 | # 104 "./include/sync0sync.ic" | |
10439 | ulint ret; | |
10440 | ||
10441 | ret = os_fast_mutex_trylock(&(mutex->os_fast_mutex)); | |
10442 | ||
10443 | if (ret == 0) { | |
10444 | ||
10445 | ||
10446 | do { if (__builtin_expect(!((ulint)(mutex->lock_word == 0)), (0))) { ut_dbg_assertion_failed("mutex->lock_word == 0", "./include/sync0sync.ic", (ulint) 111); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/sync0sync.ic", (ulint) 111); } while (0); } while (0); | |
10447 | ||
10448 | mutex->lock_word = 1; | |
10449 | } | |
10450 | ||
10451 | return(ret); | |
10452 | ||
10453 | } | |
10454 | ||
10455 | ||
10456 | ||
10457 | ||
10458 | static inline | |
10459 | void | |
10460 | mutex_reset_lock_word( | |
10461 | ||
10462 | ib_mutex_t* mutex) | |
10463 | { | |
10464 | # 144 "./include/sync0sync.ic" | |
10465 | mutex->lock_word = 0; | |
10466 | ||
10467 | os_fast_mutex_unlock(&(mutex->os_fast_mutex)); | |
10468 | ||
10469 | } | |
10470 | ||
10471 | ||
10472 | ||
10473 | static inline | |
10474 | ulint | |
10475 | mutex_get_lock_word( | |
10476 | ||
10477 | ib_mutex_t* mutex) | |
10478 | { | |
10479 | volatile ulint* ptr; | |
10480 | ||
10481 | ; | |
10482 | ||
10483 | ptr = &(mutex->lock_word); | |
10484 | ||
10485 | return(*ptr); | |
10486 | } | |
10487 | ||
10488 | ||
10489 | ||
10490 | static inline | |
10491 | ulint | |
10492 | mutex_get_waiters( | |
10493 | ||
10494 | ||
10495 | ib_mutex_t* mutex) | |
10496 | { | |
10497 | volatile ulint* ptr; | |
10498 | ||
10499 | ; | |
10500 | ||
10501 | ptr = &(mutex->waiters); | |
10502 | ||
10503 | return(*ptr); | |
10504 | ||
10505 | } | |
10506 | ||
10507 | ||
10508 | ||
10509 | static inline | |
10510 | void | |
10511 | mutex_exit( | |
10512 | ||
10513 | ib_mutex_t* mutex) | |
10514 | { | |
10515 | ||
10516 | ||
10517 | ||
10518 | ||
10519 | ||
10520 | ||
10521 | ||
10522 | mutex_reset_lock_word(mutex); | |
10523 | # 215 "./include/sync0sync.ic" | |
10524 | if (mutex_get_waiters(mutex) != 0) { | |
10525 | ||
10526 | mutex_signal_object(mutex); | |
10527 | } | |
10528 | ||
10529 | ||
10530 | ||
10531 | ||
10532 | } | |
10533 | ||
10534 | ||
10535 | ||
10536 | ||
10537 | ||
10538 | static inline | |
10539 | void | |
10540 | mutex_enter_func( | |
10541 | ||
10542 | ib_mutex_t* mutex, | |
10543 | const char* file_name, | |
10544 | ulint line) | |
10545 | { | |
10546 | ; | |
10547 | # 246 "./include/sync0sync.ic" | |
10548 | if (!mutex_test_and_set(mutex)) | |
10549 | { | |
10550 | ||
10551 | ||
10552 | ||
10553 | return; | |
10554 | } | |
10555 | ||
10556 | mutex_spin_wait(mutex, file_name, line); | |
10557 | ||
10558 | } | |
10559 | # 543 "./include/sync0sync.h" 2 | |
10560 | # 15 "./include/sync0rw.h" 2 | |
10561 | # 27 "./include/sync0rw.h" | |
10562 | typedef struct rw_lock_struct rw_lock_t; | |
10563 | ||
10564 | ||
10565 | ||
10566 | ||
10567 | typedef struct { ulint count; rw_lock_t * start; rw_lock_t * end; } rw_lock_list_t; | |
10568 | ||
10569 | extern rw_lock_list_t rw_lock_list; | |
10570 | extern ib_mutex_t rw_lock_list_mutex; | |
10571 | # 50 "./include/sync0rw.h" | |
10572 | extern ulint rw_s_system_call_count; | |
10573 | extern ulint rw_s_spin_wait_count; | |
10574 | extern ulint rw_s_exit_count; | |
10575 | extern ulint rw_s_os_wait_count; | |
10576 | extern ulint rw_x_system_call_count; | |
10577 | extern ulint rw_x_spin_wait_count; | |
10578 | extern ulint rw_x_os_wait_count; | |
10579 | extern ulint rw_x_exit_count; | |
10580 | # 77 "./include/sync0rw.h" | |
10581 | void | |
10582 | rw_lock_create_func( | |
10583 | ||
10584 | rw_lock_t* lock, | |
10585 | ||
10586 | ||
10587 | ||
10588 | const char* cfile_name, | |
10589 | ulint cline); | |
10590 | ||
10591 | ||
10592 | ||
10593 | ||
10594 | ||
10595 | void | |
10596 | rw_lock_free( | |
10597 | ||
10598 | rw_lock_t* lock); | |
10599 | ||
10600 | ||
10601 | ||
10602 | ||
10603 | ulint | |
10604 | rw_lock_validate( | |
10605 | ||
10606 | rw_lock_t* lock); | |
10607 | # 128 "./include/sync0rw.h" | |
10608 | static inline | |
10609 | void | |
10610 | rw_lock_s_lock_func( | |
10611 | ||
10612 | rw_lock_t* lock, | |
10613 | ulint pass, | |
10614 | ||
10615 | const char* file_name, | |
10616 | ulint line); | |
10617 | ||
10618 | ||
10619 | ||
10620 | ||
10621 | static inline | |
10622 | ulint | |
10623 | rw_lock_s_lock_func_nowait( | |
10624 | ||
10625 | ||
10626 | rw_lock_t* lock, | |
10627 | const char* file_name, | |
10628 | ulint line); | |
10629 | ||
10630 | ||
10631 | ||
10632 | ||
10633 | static inline | |
10634 | ulint | |
10635 | rw_lock_x_lock_func_nowait( | |
10636 | ||
10637 | ||
10638 | rw_lock_t* lock, | |
10639 | const char* file_name, | |
10640 | ulint line); | |
10641 | ||
10642 | ||
10643 | static inline | |
10644 | void | |
10645 | rw_lock_s_unlock_func( | |
10646 | ||
10647 | rw_lock_t* lock | |
10648 | ||
10649 | ||
10650 | ||
10651 | ||
10652 | ); | |
10653 | # 217 "./include/sync0rw.h" | |
10654 | void | |
10655 | rw_lock_x_lock_func( | |
10656 | ||
10657 | rw_lock_t* lock, | |
10658 | ulint pass, | |
10659 | ||
10660 | const char* file_name, | |
10661 | ulint line); | |
10662 | ||
10663 | ||
10664 | static inline | |
10665 | void | |
10666 | rw_lock_x_unlock_func( | |
10667 | ||
10668 | rw_lock_t* lock | |
10669 | ||
10670 | ||
10671 | ||
10672 | ||
10673 | ); | |
10674 | # 257 "./include/sync0rw.h" | |
10675 | static inline | |
10676 | void | |
10677 | rw_lock_s_lock_direct( | |
10678 | ||
10679 | rw_lock_t* lock, | |
10680 | const char* file_name, | |
10681 | ulint line | |
10682 | ); | |
10683 | ||
10684 | ||
10685 | ||
10686 | ||
10687 | static inline | |
10688 | void | |
10689 | rw_lock_x_lock_direct( | |
10690 | ||
10691 | rw_lock_t* lock, | |
10692 | const char* file_name, | |
10693 | ulint line | |
10694 | ); | |
10695 | # 286 "./include/sync0rw.h" | |
10696 | void | |
10697 | rw_lock_x_lock_move_ownership( | |
10698 | ||
10699 | rw_lock_t* lock); | |
10700 | ||
10701 | ||
10702 | ||
10703 | ||
10704 | static inline | |
10705 | void | |
10706 | rw_lock_s_unlock_direct( | |
10707 | ||
10708 | rw_lock_t* lock); | |
10709 | ||
10710 | ||
10711 | ||
10712 | static inline | |
10713 | void | |
10714 | rw_lock_x_unlock_direct( | |
10715 | ||
10716 | rw_lock_t* lock); | |
10717 | ||
10718 | ||
10719 | ||
10720 | void | |
10721 | rw_lock_set_level( | |
10722 | ||
10723 | rw_lock_t* lock, | |
10724 | ulint level); | |
10725 | ||
10726 | ||
10727 | ||
10728 | static inline | |
10729 | ulint | |
10730 | rw_lock_get_x_lock_count( | |
10731 | ||
10732 | ||
10733 | rw_lock_t* lock); | |
10734 | ||
10735 | ||
10736 | static inline | |
10737 | ulint | |
10738 | rw_lock_get_s_waiters( | |
10739 | ||
10740 | rw_lock_t* lock); | |
10741 | static inline | |
10742 | ulint | |
10743 | rw_lock_get_x_waiters( | |
10744 | ||
10745 | rw_lock_t* lock); | |
10746 | static inline | |
10747 | ulint | |
10748 | rw_lock_get_wx_waiters( | |
10749 | ||
10750 | rw_lock_t* lock); | |
10751 | static inline | |
10752 | ulint | |
10753 | rw_lock_get_writer( | |
10754 | ||
10755 | rw_lock_t* lock); | |
10756 | static inline | |
10757 | ulint | |
10758 | rw_lock_get_reader_count( | |
10759 | ||
10760 | rw_lock_t* lock); | |
10761 | # 366 "./include/sync0rw.h" | |
10762 | ulint | |
10763 | rw_lock_is_locked( | |
10764 | ||
10765 | rw_lock_t* lock, | |
10766 | ulint lock_type); | |
10767 | # 440 "./include/sync0rw.h" | |
10768 | struct rw_lock_struct { | |
10769 | ||
10770 | os_event_t s_event; | |
10771 | os_event_t x_event; | |
10772 | os_event_t wait_ex_event; | |
10773 | # 453 "./include/sync0rw.h" | |
10774 | volatile lint lock_word; | |
10775 | ||
10776 | ||
10777 | volatile ulint reader_count; | |
10778 | ||
10779 | volatile ulint writer; | |
10780 | ||
10781 | ||
10782 | ||
10783 | ||
10784 | volatile os_thread_id_t writer_thread; | |
10785 | ||
10786 | volatile ulint writer_count; | |
10787 | ||
10788 | ||
10789 | ||
10790 | ||
10791 | ||
10792 | ulint pass; | |
10793 | ||
10794 | ||
10795 | ||
10796 | ||
10797 | volatile ulint s_waiters; | |
10798 | volatile ulint x_waiters; | |
10799 | volatile ulint wait_ex_waiters; | |
10800 | volatile ulint writer_is_wait_ex; | |
10801 | ||
10802 | ||
10803 | ||
10804 | ||
10805 | ||
10806 | ||
10807 | struct { rw_lock_t * prev; rw_lock_t * next; } list; | |
10808 | ||
10809 | ||
10810 | ||
10811 | ||
10812 | ||
10813 | ||
10814 | ||
10815 | ulint level; | |
10816 | ||
10817 | const char* cfile_name; | |
10818 | ulint cline; | |
10819 | const char* last_s_file_name; | |
10820 | const char* last_x_file_name; | |
10821 | ulint last_s_line; | |
10822 | ulint last_x_line; | |
10823 | ulint magic_n; | |
10824 | }; | |
10825 | # 525 "./include/sync0rw.h" | |
10826 | # 1 "./include/sync0rw.ic" 1 | |
10827 | # 15 "./include/sync0rw.ic" | |
10828 | void | |
10829 | rw_lock_s_lock_spin( | |
10830 | ||
10831 | rw_lock_t* lock, | |
10832 | ulint pass, | |
10833 | ||
10834 | const char* file_name, | |
10835 | ulint line); | |
10836 | # 48 "./include/sync0rw.ic" | |
10837 | static inline | |
10838 | ulint | |
10839 | rw_lock_get_s_waiters( | |
10840 | ||
10841 | rw_lock_t* lock) | |
10842 | { | |
10843 | return(lock->s_waiters); | |
10844 | } | |
10845 | static inline | |
10846 | ulint | |
10847 | rw_lock_get_x_waiters( | |
10848 | ||
10849 | rw_lock_t* lock) | |
10850 | { | |
10851 | return(lock->x_waiters); | |
10852 | } | |
10853 | static inline | |
10854 | ulint | |
10855 | rw_lock_get_wx_waiters( | |
10856 | ||
10857 | rw_lock_t* lock) | |
10858 | { | |
10859 | return(lock->wait_ex_waiters); | |
10860 | } | |
10861 | static inline | |
10862 | void | |
10863 | rw_lock_set_s_waiters( | |
10864 | rw_lock_t* lock, | |
10865 | ulint flag) | |
10866 | { | |
10867 | ||
10868 | __sync_lock_test_and_set(&lock->s_waiters, flag); | |
10869 | ||
10870 | ||
10871 | ||
10872 | } | |
10873 | static inline | |
10874 | void | |
10875 | rw_lock_set_x_waiters( | |
10876 | rw_lock_t* lock, | |
10877 | ulint flag) | |
10878 | { | |
10879 | ||
10880 | __sync_lock_test_and_set(&lock->x_waiters, flag); | |
10881 | ||
10882 | ||
10883 | ||
10884 | } | |
10885 | static inline | |
10886 | void | |
10887 | rw_lock_set_wx_waiters( | |
10888 | ||
10889 | rw_lock_t* lock, | |
10890 | ulint flag) | |
10891 | { | |
10892 | ||
10893 | __sync_lock_test_and_set(&lock->wait_ex_waiters, flag); | |
10894 | ||
10895 | ||
10896 | ||
10897 | } | |
10898 | static inline | |
10899 | ulint | |
10900 | rw_lock_get_writer( | |
10901 | ||
10902 | rw_lock_t* lock) | |
10903 | { | |
10904 | ||
10905 | if (lock->writer == 350) { | |
10906 | return(350); | |
10907 | } | |
10908 | ||
10909 | if (lock->writer_is_wait_ex) { | |
10910 | return(353); | |
10911 | } else { | |
10912 | return(351); | |
10913 | } | |
10914 | ||
10915 | ||
10916 | ||
10917 | } | |
10918 | static inline | |
10919 | void | |
10920 | rw_lock_set_writer( | |
10921 | ||
10922 | rw_lock_t* lock, | |
10923 | ulint flag) | |
10924 | { | |
10925 | lock->writer = flag; | |
10926 | } | |
10927 | static inline | |
10928 | ulint | |
10929 | rw_lock_get_reader_count( | |
10930 | ||
10931 | rw_lock_t* lock) | |
10932 | { | |
10933 | return(lock->reader_count); | |
10934 | } | |
10935 | static inline | |
10936 | void | |
10937 | rw_lock_set_reader_count( | |
10938 | ||
10939 | rw_lock_t* lock, | |
10940 | ulint count) | |
10941 | { | |
10942 | lock->reader_count = count; | |
10943 | } | |
10944 | # 169 "./include/sync0rw.ic" | |
10945 | static inline | |
10946 | ulint | |
10947 | rw_lock_get_x_lock_count( | |
10948 | ||
10949 | ||
10950 | rw_lock_t* lock) | |
10951 | { | |
10952 | return(lock->writer_count); | |
10953 | } | |
10954 | ||
10955 | ||
10956 | ||
10957 | ||
10958 | static inline | |
10959 | ulint | |
10960 | rw_lock_s_lock_low( | |
10961 | ||
10962 | ||
10963 | rw_lock_t* lock, | |
10964 | ulint pass __attribute__((unused)), | |
10965 | ||
10966 | ||
10967 | const char* file_name, | |
10968 | ulint line) | |
10969 | { | |
10970 | ||
10971 | ||
10972 | ||
10973 | ||
10974 | ||
10975 | ||
10976 | if (__builtin_expect(rw_lock_get_writer(lock) == 350, (1))) { | |
10977 | ||
10978 | if(__sync_sub_and_fetch(&(lock->lock_word),1) <= 0) { | |
10979 | ||
10980 | __sync_fetch_and_add(&(lock->lock_word),1); | |
10981 | return((0)); | |
10982 | } | |
10983 | ||
10984 | __sync_fetch_and_add(&(lock->reader_count),1); | |
10985 | # 219 "./include/sync0rw.ic" | |
10986 | lock->last_s_file_name = file_name; | |
10987 | lock->last_s_line = line; | |
10988 | ||
10989 | return((1)); | |
10990 | } | |
10991 | ||
10992 | return((0)); | |
10993 | } | |
10994 | ||
10995 | ||
10996 | ||
10997 | ||
10998 | ||
10999 | static inline | |
11000 | void | |
11001 | rw_lock_s_lock_direct( | |
11002 | ||
11003 | rw_lock_t* lock, | |
11004 | const char* file_name, | |
11005 | ulint line) | |
11006 | { | |
11007 | ; | |
11008 | ; | |
11009 | ||
11010 | ||
11011 | ||
11012 | __sync_fetch_and_add(&(lock->reader_count),1); | |
11013 | ||
11014 | ||
11015 | ||
11016 | ||
11017 | lock->last_s_file_name = file_name; | |
11018 | lock->last_s_line = line; | |
11019 | ||
11020 | ||
11021 | ||
11022 | ||
11023 | } | |
11024 | ||
11025 | ||
11026 | ||
11027 | ||
11028 | ||
11029 | static inline | |
11030 | void | |
11031 | rw_lock_x_lock_direct( | |
11032 | ||
11033 | rw_lock_t* lock, | |
11034 | const char* file_name, | |
11035 | ulint line) | |
11036 | { | |
11037 | ; | |
11038 | ; | |
11039 | ; | |
11040 | ||
11041 | rw_lock_set_writer(lock, 351); | |
11042 | lock->writer_thread = os_thread_get_curr_id(); | |
11043 | ||
11044 | __sync_fetch_and_add(&(lock->writer_count),1); | |
11045 | ||
11046 | ||
11047 | ||
11048 | lock->pass = 0; | |
11049 | ||
11050 | lock->last_x_file_name = file_name; | |
11051 | lock->last_x_line = line; | |
11052 | ||
11053 | ||
11054 | ||
11055 | ||
11056 | } | |
11057 | ||
11058 | ||
11059 | ||
11060 | ||
11061 | ||
11062 | ||
11063 | ||
11064 | static inline | |
11065 | void | |
11066 | rw_lock_s_lock_func( | |
11067 | ||
11068 | rw_lock_t* lock, | |
11069 | ulint pass, | |
11070 | ||
11071 | const char* file_name, | |
11072 | ulint line) | |
11073 | { | |
11074 | # 326 "./include/sync0rw.ic" | |
11075 | if (__builtin_expect(rw_lock_s_lock_low(lock, pass, file_name, line), (1))) { | |
11076 | ||
11077 | ||
11078 | ||
11079 | ||
11080 | return; | |
11081 | } else { | |
11082 | ||
11083 | ||
11084 | ||
11085 | ||
11086 | ||
11087 | rw_lock_s_lock_spin(lock, pass, file_name, line); | |
11088 | ||
11089 | return; | |
11090 | } | |
11091 | } | |
11092 | ||
11093 | ||
11094 | ||
11095 | ||
11096 | ||
11097 | static inline | |
11098 | ulint | |
11099 | rw_lock_s_lock_func_nowait( | |
11100 | ||
11101 | ||
11102 | rw_lock_t* lock, | |
11103 | const char* file_name, | |
11104 | ulint line) | |
11105 | { | |
11106 | ulint success = (0); | |
11107 | ||
11108 | ||
11109 | if (rw_lock_get_writer(lock) == 350) { | |
11110 | ||
11111 | if(__sync_sub_and_fetch(&(lock->lock_word),1) <= 0) { | |
11112 | ||
11113 | __sync_fetch_and_add(&(lock->lock_word),1); | |
11114 | return((0)); | |
11115 | } | |
11116 | ||
11117 | __sync_fetch_and_add(&(lock->reader_count),1); | |
11118 | # 382 "./include/sync0rw.ic" | |
11119 | lock->last_s_file_name = file_name; | |
11120 | lock->last_s_line = line; | |
11121 | ||
11122 | success = (1); | |
11123 | } | |
11124 | ||
11125 | ||
11126 | ||
11127 | ||
11128 | ||
11129 | return(success); | |
11130 | } | |
11131 | ||
11132 | ||
11133 | ||
11134 | ||
11135 | ||
11136 | static inline | |
11137 | ulint | |
11138 | rw_lock_x_lock_func_nowait( | |
11139 | ||
11140 | ||
11141 | rw_lock_t* lock, | |
11142 | const char* file_name, | |
11143 | ulint line) | |
11144 | { | |
11145 | ulint success = (0); | |
11146 | os_thread_id_t curr_thread = os_thread_get_curr_id(); | |
11147 | ||
11148 | if (lock->reader_count == 0) { | |
11149 | ||
11150 | if(__sync_lock_test_and_set(&(lock->writer),351) | |
11151 | == 350) { | |
11152 | ||
11153 | retry_x_lock: | |
11154 | ||
11155 | if(__sync_sub_and_fetch(&(lock->lock_word), | |
11156 | 0x00100000) == 0) { | |
11157 | ||
11158 | lock->writer_thread = curr_thread; | |
11159 | lock->pass = 0; | |
11160 | lock->writer_is_wait_ex = (0); | |
11161 | ||
11162 | relock: | |
11163 | __sync_fetch_and_add(&(lock->writer_count),1); | |
11164 | ||
11165 | ||
11166 | ||
11167 | ||
11168 | ||
11169 | lock->last_x_file_name = file_name; | |
11170 | lock->last_x_line = line; | |
11171 | ||
11172 | ; | |
11173 | ||
11174 | return((1)); | |
11175 | } else { | |
11176 | ||
11177 | if (__sync_fetch_and_add(&(lock->lock_word),0x00100000) | |
11178 | == 0) | |
11179 | goto retry_x_lock; | |
11180 | } | |
11181 | ||
11182 | __sync_lock_test_and_set(&(lock->writer),350); | |
11183 | } | |
11184 | } | |
11185 | ||
11186 | if (lock->pass == 0 | |
11187 | && os_thread_eq(lock->writer_thread, curr_thread)) { | |
11188 | goto relock; | |
11189 | } | |
11190 | ||
11191 | ||
11192 | ||
11193 | return((0)); | |
11194 | # 489 "./include/sync0rw.ic" | |
11195 | } | |
11196 | ||
11197 | ||
11198 | ||
11199 | static inline | |
11200 | void | |
11201 | rw_lock_s_unlock_func( | |
11202 | ||
11203 | rw_lock_t* lock | |
11204 | ||
11205 | ||
11206 | ||
11207 | ||
11208 | ) | |
11209 | { | |
11210 | ||
11211 | ||
11212 | ||
11213 | ulint x_sg = (0); | |
11214 | ulint wx_sg = (0); | |
11215 | ||
11216 | ulint last = (0); | |
11217 | # 520 "./include/sync0rw.ic" | |
11218 | do { if (__builtin_expect(!((ulint)(lock->reader_count > 0)), (0))) { ut_dbg_assertion_failed("lock->reader_count > 0", "./include/sync0rw.ic", (ulint) 520); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/sync0rw.ic", (ulint) 520); } while (0); } while (0); | |
11219 | ||
11220 | ||
11221 | __sync_fetch_and_add(&(lock->lock_word),1); | |
11222 | ||
11223 | if(__sync_sub_and_fetch(&(lock->reader_count),1) == 0) { | |
11224 | last = (1); | |
11225 | } | |
11226 | # 540 "./include/sync0rw.ic" | |
11227 | if (__builtin_expect(last && __sync_lock_test_and_set(&lock->wait_ex_waiters, 0), (0))) { | |
11228 | os_event_set(lock->wait_ex_event); | |
11229 | sync_array_object_signalled(sync_primary_wait_array); | |
11230 | } | |
11231 | else if (__builtin_expect(last && __sync_lock_test_and_set(&lock->x_waiters, 0), (0))) { | |
11232 | os_event_set(lock->x_event); | |
11233 | sync_array_object_signalled(sync_primary_wait_array); | |
11234 | } | |
11235 | # 573 "./include/sync0rw.ic" | |
11236 | ; | |
11237 | ||
11238 | ||
11239 | ||
11240 | ||
11241 | } | |
11242 | ||
11243 | ||
11244 | ||
11245 | ||
11246 | static inline | |
11247 | void | |
11248 | rw_lock_s_unlock_direct( | |
11249 | ||
11250 | rw_lock_t* lock) | |
11251 | { | |
11252 | ||
11253 | ||
11254 | ; | |
11255 | ||
11256 | ||
11257 | __sync_sub_and_fetch(&(lock->reader_count),1); | |
11258 | # 604 "./include/sync0rw.ic" | |
11259 | ; | |
11260 | ; | |
11261 | ||
11262 | ||
11263 | ||
11264 | ; | |
11265 | ||
11266 | ||
11267 | ||
11268 | } | |
11269 | ||
11270 | ||
11271 | ||
11272 | static inline | |
11273 | void | |
11274 | rw_lock_x_unlock_func( | |
11275 | ||
11276 | rw_lock_t* lock | |
11277 | ||
11278 | ||
11279 | ||
11280 | ||
11281 | ) | |
11282 | { | |
11283 | ||
11284 | ulint last = (0); | |
11285 | ||
11286 | ulint s_sg = (0); | |
11287 | ulint x_sg = (0); | |
11288 | # 642 "./include/sync0rw.ic" | |
11289 | ; | |
11290 | ||
11291 | ||
11292 | if(__sync_sub_and_fetch(&(lock->writer_count),1) == 0) { | |
11293 | last = (1); | |
11294 | } | |
11295 | ||
11296 | if (last) { | |
11297 | ||
11298 | __sync_fetch_and_add(&(lock->lock_word),0x00100000); | |
11299 | ||
11300 | ||
11301 | ||
11302 | lock->writer_thread = -1; | |
11303 | __sync_lock_test_and_set(&(lock->writer),350); | |
11304 | } | |
11305 | # 672 "./include/sync0rw.ic" | |
11306 | if (last) { | |
11307 | if(__sync_lock_test_and_set(&lock->s_waiters, 0)){ | |
11308 | s_sg = (1); | |
11309 | } | |
11310 | if(__sync_lock_test_and_set(&lock->x_waiters, 0)){ | |
11311 | x_sg = (1); | |
11312 | } | |
11313 | } | |
11314 | # 695 "./include/sync0rw.ic" | |
11315 | if (__builtin_expect(s_sg, (0))) { | |
11316 | os_event_set(lock->s_event); | |
11317 | sync_array_object_signalled(sync_primary_wait_array); | |
11318 | } | |
11319 | if (__builtin_expect(x_sg, (0))) { | |
11320 | ||
11321 | ||
11322 | ||
11323 | ||
11324 | os_event_set(lock->x_event); | |
11325 | sync_array_object_signalled(sync_primary_wait_array); | |
11326 | } | |
11327 | ||
11328 | ; | |
11329 | ||
11330 | ||
11331 | ||
11332 | ||
11333 | } | |
11334 | ||
11335 | ||
11336 | ||
11337 | ||
11338 | static inline | |
11339 | void | |
11340 | rw_lock_x_unlock_direct( | |
11341 | ||
11342 | rw_lock_t* lock) | |
11343 | { | |
11344 | ||
11345 | ||
11346 | ||
11347 | ; | |
11348 | ||
11349 | ||
11350 | if(__sync_sub_and_fetch(&(lock->writer_count),1) == 0) { | |
11351 | ||
11352 | ||
11353 | ||
11354 | ||
11355 | ||
11356 | rw_lock_set_writer(lock, 350); | |
11357 | } | |
11358 | ||
11359 | ||
11360 | ||
11361 | ||
11362 | ||
11363 | ||
11364 | ; | |
11365 | ; | |
11366 | ||
11367 | ||
11368 | ||
11369 | ; | |
11370 | ||
11371 | ||
11372 | ||
11373 | ||
11374 | } | |
11375 | # 526 "./include/sync0rw.h" 2 | |
11376 | # 14 "./include/fil0fil.h" 2 | |
11377 | # 1 "./include/dict0types.h" 1 | |
11378 | # 12 "./include/dict0types.h" | |
11379 | typedef struct dict_sys_struct dict_sys_t; | |
11380 | typedef struct dict_col_struct dict_col_t; | |
11381 | typedef struct dict_field_struct dict_field_t; | |
11382 | typedef struct dict_index_struct dict_index_t; | |
11383 | typedef struct dict_tree_struct dict_tree_t; | |
11384 | typedef struct dict_table_struct dict_table_t; | |
11385 | typedef struct dict_foreign_struct dict_foreign_t; | |
11386 | ||
11387 | ||
11388 | ||
11389 | ||
11390 | typedef dict_table_t dict_cluster_t; | |
11391 | ||
11392 | typedef struct ind_node_struct ind_node_t; | |
11393 | typedef struct tab_node_struct tab_node_t; | |
11394 | # 15 "./include/fil0fil.h" 2 | |
11395 | # 1 "./include/ibuf0types.h" 1 | |
11396 | # 12 "./include/ibuf0types.h" | |
11397 | typedef struct ibuf_data_struct ibuf_data_t; | |
11398 | typedef struct ibuf_struct ibuf_t; | |
11399 | # 16 "./include/fil0fil.h" 2 | |
11400 | # 1 "./include/ut0byte.h" 1 | |
11401 | # 20 "./include/ut0byte.h" | |
11402 | typedef struct dulint_struct dulint; | |
11403 | struct dulint_struct{ | |
11404 | ulint high; | |
11405 | ulint low; | |
11406 | }; | |
11407 | ||
11408 | ||
11409 | extern dulint ut_dulint_zero; | |
11410 | ||
11411 | ||
11412 | extern dulint ut_dulint_max; | |
11413 | ||
11414 | ||
11415 | ||
11416 | static inline | |
11417 | dulint | |
11418 | ut_dulint_create( | |
11419 | ||
11420 | ||
11421 | ulint high, | |
11422 | ulint low); | |
11423 | ||
11424 | ||
11425 | static inline | |
11426 | ulint | |
11427 | ut_dulint_get_high( | |
11428 | ||
11429 | ||
11430 | dulint d); | |
11431 | ||
11432 | ||
11433 | static inline | |
11434 | ulint | |
11435 | ut_dulint_get_low( | |
11436 | ||
11437 | ||
11438 | dulint d); | |
11439 | ||
11440 | ||
11441 | ||
11442 | static inline | |
11443 | ib_longlong | |
11444 | ut_conv_dulint_to_longlong( | |
11445 | ||
11446 | ||
11447 | dulint d); | |
11448 | ||
11449 | ||
11450 | static inline | |
11451 | ulint | |
11452 | ut_dulint_is_zero( | |
11453 | ||
11454 | ||
11455 | dulint a); | |
11456 | ||
11457 | ||
11458 | static inline | |
11459 | int | |
11460 | ut_dulint_cmp( | |
11461 | ||
11462 | ||
11463 | ||
11464 | dulint a, | |
11465 | dulint b); | |
11466 | ||
11467 | ||
11468 | static inline | |
11469 | dulint | |
11470 | ut_dulint_get_max( | |
11471 | ||
11472 | ||
11473 | dulint a, | |
11474 | dulint b); | |
11475 | ||
11476 | ||
11477 | static inline | |
11478 | dulint | |
11479 | ut_dulint_get_min( | |
11480 | ||
11481 | ||
11482 | dulint a, | |
11483 | dulint b); | |
11484 | ||
11485 | ||
11486 | static inline | |
11487 | dulint | |
11488 | ut_dulint_add( | |
11489 | ||
11490 | ||
11491 | dulint a, | |
11492 | ulint b); | |
11493 | ||
11494 | ||
11495 | static inline | |
11496 | dulint | |
11497 | ut_dulint_subtract( | |
11498 | ||
11499 | ||
11500 | dulint a, | |
11501 | ulint b); | |
11502 | ||
11503 | ||
11504 | ||
11505 | static inline | |
11506 | ulint | |
11507 | ut_dulint_minus( | |
11508 | ||
11509 | ||
11510 | dulint a, | |
11511 | ||
11512 | dulint b); | |
11513 | ||
11514 | ||
11515 | static inline | |
11516 | dulint | |
11517 | ut_dulint_align_down( | |
11518 | ||
11519 | ||
11520 | dulint n, | |
11521 | ulint align_no); | |
11522 | ||
11523 | ||
11524 | ||
11525 | static inline | |
11526 | dulint | |
11527 | ut_dulint_align_up( | |
11528 | ||
11529 | ||
11530 | dulint n, | |
11531 | ulint align_no); | |
11532 | # 168 "./include/ut0byte.h" | |
11533 | void | |
11534 | ut_dulint_sort(dulint* arr, dulint* aux_arr, ulint low, ulint high); | |
11535 | ||
11536 | ||
11537 | ||
11538 | ||
11539 | ||
11540 | static inline | |
11541 | ulint | |
11542 | ut_calc_align( | |
11543 | ||
11544 | ||
11545 | ulint n, | |
11546 | ulint align_no); | |
11547 | ||
11548 | ||
11549 | ||
11550 | ||
11551 | static inline | |
11552 | ulint | |
11553 | ut_calc_align_down( | |
11554 | ||
11555 | ||
11556 | ulint n, | |
11557 | ulint align_no); | |
11558 | ||
11559 | ||
11560 | static inline | |
11561 | void* | |
11562 | ut_align( | |
11563 | ||
11564 | ||
11565 | void* ptr, | |
11566 | ulint align_no); | |
11567 | ||
11568 | ||
11569 | ||
11570 | static inline | |
11571 | void* | |
11572 | ut_align_down( | |
11573 | ||
11574 | ||
11575 | void* ptr, | |
11576 | ulint align_no) | |
11577 | __attribute__((const)); | |
11578 | ||
11579 | ||
11580 | ||
11581 | static inline | |
11582 | ulint | |
11583 | ut_align_offset( | |
11584 | ||
11585 | ||
11586 | ||
11587 | const void* ptr, | |
11588 | ulint align_no) | |
11589 | __attribute__((const)); | |
11590 | ||
11591 | ||
11592 | static inline | |
11593 | ulint | |
11594 | ut_bit_get_nth( | |
11595 | ||
11596 | ||
11597 | ||
11598 | ulint a, | |
11599 | ulint n); | |
11600 | ||
11601 | ||
11602 | static inline | |
11603 | ulint | |
11604 | ut_bit_set_nth( | |
11605 | ||
11606 | ||
11607 | ulint a, | |
11608 | ulint n, | |
11609 | ulint val); | |
11610 | ||
11611 | ||
11612 | # 1 "./include/ut0byte.ic" 1 | |
11613 | # 11 "./include/ut0byte.ic" | |
11614 | static inline | |
11615 | dulint | |
11616 | ut_dulint_create( | |
11617 | ||
11618 | ||
11619 | ulint high, | |
11620 | ulint low) | |
11621 | { | |
11622 | dulint res; | |
11623 | ||
11624 | ; | |
11625 | ; | |
11626 | ||
11627 | res.high = high; | |
11628 | res.low = low; | |
11629 | ||
11630 | return(res); | |
11631 | } | |
11632 | ||
11633 | ||
11634 | ||
11635 | static inline | |
11636 | ulint | |
11637 | ut_dulint_get_high( | |
11638 | ||
11639 | ||
11640 | dulint d) | |
11641 | { | |
11642 | return(d.high); | |
11643 | } | |
11644 | ||
11645 | ||
11646 | ||
11647 | static inline | |
11648 | ulint | |
11649 | ut_dulint_get_low( | |
11650 | ||
11651 | ||
11652 | dulint d) | |
11653 | { | |
11654 | return(d.low); | |
11655 | } | |
11656 | ||
11657 | ||
11658 | ||
11659 | ||
11660 | static inline | |
11661 | ib_longlong | |
11662 | ut_conv_dulint_to_longlong( | |
11663 | ||
11664 | ||
11665 | dulint d) | |
11666 | { | |
11667 | return((ib_longlong)d.low | |
11668 | + (((ib_longlong)d.high) << 32)); | |
11669 | } | |
11670 | ||
11671 | ||
11672 | ||
11673 | static inline | |
11674 | ulint | |
11675 | ut_dulint_is_zero( | |
11676 | ||
11677 | ||
11678 | dulint a) | |
11679 | { | |
11680 | if ((a.low == 0) && (a.high == 0)) { | |
11681 | ||
11682 | return((1)); | |
11683 | } | |
11684 | ||
11685 | return((0)); | |
11686 | } | |
11687 | ||
11688 | ||
11689 | ||
11690 | static inline | |
11691 | int | |
11692 | ut_dulint_cmp( | |
11693 | ||
11694 | ||
11695 | ||
11696 | dulint a, | |
11697 | dulint b) | |
11698 | { | |
11699 | if (a.high > b.high) { | |
11700 | return(1); | |
11701 | } else if (a.high < b.high) { | |
11702 | return(-1); | |
11703 | } else if (a.low > b.low) { | |
11704 | return(1); | |
11705 | } else if (a.low < b.low) { | |
11706 | return(-1); | |
11707 | } else { | |
11708 | return(0); | |
11709 | } | |
11710 | } | |
11711 | ||
11712 | ||
11713 | ||
11714 | static inline | |
11715 | dulint | |
11716 | ut_dulint_get_max( | |
11717 | ||
11718 | ||
11719 | dulint a, | |
11720 | dulint b) | |
11721 | { | |
11722 | if (ut_dulint_cmp(a, b) > 0) { | |
11723 | ||
11724 | return(a); | |
11725 | } | |
11726 | ||
11727 | return(b); | |
11728 | } | |
11729 | ||
11730 | ||
11731 | ||
11732 | static inline | |
11733 | dulint | |
11734 | ut_dulint_get_min( | |
11735 | ||
11736 | ||
11737 | dulint a, | |
11738 | dulint b) | |
11739 | { | |
11740 | if (ut_dulint_cmp(a, b) > 0) { | |
11741 | ||
11742 | return(b); | |
11743 | } | |
11744 | ||
11745 | return(a); | |
11746 | } | |
11747 | ||
11748 | ||
11749 | ||
11750 | static inline | |
11751 | dulint | |
11752 | ut_dulint_add( | |
11753 | ||
11754 | ||
11755 | dulint a, | |
11756 | ulint b) | |
11757 | { | |
11758 | if (0xFFFFFFFFUL - b >= a.low) { | |
11759 | a.low += b; | |
11760 | ||
11761 | return(a); | |
11762 | } | |
11763 | ||
11764 | a.low = a.low - (0xFFFFFFFFUL - b) - 1; | |
11765 | ||
11766 | a.high++; | |
11767 | ||
11768 | return(a); | |
11769 | } | |
11770 | ||
11771 | ||
11772 | ||
11773 | static inline | |
11774 | dulint | |
11775 | ut_dulint_subtract( | |
11776 | ||
11777 | ||
11778 | dulint a, | |
11779 | ulint b) | |
11780 | { | |
11781 | if (a.low >= b) { | |
11782 | a.low -= b; | |
11783 | ||
11784 | return(a); | |
11785 | } | |
11786 | ||
11787 | b -= a.low + 1; | |
11788 | ||
11789 | a.low = 0xFFFFFFFFUL - b; | |
11790 | ||
11791 | ; | |
11792 | ||
11793 | a.high--; | |
11794 | ||
11795 | return(a); | |
11796 | } | |
11797 | ||
11798 | ||
11799 | ||
11800 | ||
11801 | static inline | |
11802 | ulint | |
11803 | ut_dulint_minus( | |
11804 | ||
11805 | ||
11806 | dulint a, | |
11807 | ||
11808 | dulint b) | |
11809 | { | |
11810 | ulint diff; | |
11811 | ||
11812 | if (a.high == b.high) { | |
11813 | ; | |
11814 | ||
11815 | return(a.low - b.low); | |
11816 | } | |
11817 | ||
11818 | ; | |
11819 | ||
11820 | diff = (ulint)(0xFFFFFFFFUL - b.low); | |
11821 | diff += 1 + a.low; | |
11822 | ||
11823 | ; | |
11824 | ||
11825 | return(diff); | |
11826 | } | |
11827 | ||
11828 | ||
11829 | ||
11830 | static inline | |
11831 | dulint | |
11832 | ut_dulint_align_down( | |
11833 | ||
11834 | ||
11835 | dulint n, | |
11836 | ulint align_no) | |
11837 | ||
11838 | { | |
11839 | ulint low, high; | |
11840 | ||
11841 | ; | |
11842 | ; | |
11843 | ||
11844 | low = ut_dulint_get_low(n); | |
11845 | high = ut_dulint_get_high(n); | |
11846 | ||
11847 | low = low & ~(align_no - 1); | |
11848 | ||
11849 | return(ut_dulint_create(high, low)); | |
11850 | } | |
11851 | ||
11852 | ||
11853 | ||
11854 | static inline | |
11855 | dulint | |
11856 | ut_dulint_align_up( | |
11857 | ||
11858 | ||
11859 | dulint n, | |
11860 | ulint align_no) | |
11861 | ||
11862 | { | |
11863 | return(ut_dulint_align_down(ut_dulint_add(n, align_no - 1), align_no)); | |
11864 | } | |
11865 | ||
11866 | ||
11867 | ||
11868 | ||
11869 | ||
11870 | static inline | |
11871 | ulint | |
11872 | ut_calc_align( | |
11873 | ||
11874 | ||
11875 | ulint n, | |
11876 | ulint align_no) | |
11877 | { | |
11878 | ; | |
11879 | ; | |
11880 | ||
11881 | return((n + align_no - 1) & ~(align_no - 1)); | |
11882 | } | |
11883 | ||
11884 | ||
11885 | ||
11886 | static inline | |
11887 | void* | |
11888 | ut_align( | |
11889 | ||
11890 | ||
11891 | void* ptr, | |
11892 | ulint align_no) | |
11893 | { | |
11894 | ; | |
11895 | ; | |
11896 | ; | |
11897 | ||
11898 | ; | |
11899 | ||
11900 | return((void*)((((ulint)ptr) + align_no - 1) & ~(align_no - 1))); | |
11901 | } | |
11902 | ||
11903 | ||
11904 | ||
11905 | ||
11906 | ||
11907 | static inline | |
11908 | ulint | |
11909 | ut_calc_align_down( | |
11910 | ||
11911 | ||
11912 | ulint n, | |
11913 | ulint align_no) | |
11914 | { | |
11915 | ; | |
11916 | ; | |
11917 | ||
11918 | return(n & ~(align_no - 1)); | |
11919 | } | |
11920 | ||
11921 | ||
11922 | ||
11923 | ||
11924 | static inline | |
11925 | void* | |
11926 | ut_align_down( | |
11927 | ||
11928 | ||
11929 | void* ptr, | |
11930 | ulint align_no) | |
11931 | { | |
11932 | ; | |
11933 | ; | |
11934 | ; | |
11935 | ||
11936 | ; | |
11937 | ||
11938 | return((void*)((((ulint)ptr)) & ~(align_no - 1))); | |
11939 | } | |
11940 | ||
11941 | ||
11942 | ||
11943 | ||
11944 | static inline | |
11945 | ulint | |
11946 | ut_align_offset( | |
11947 | ||
11948 | ||
11949 | ||
11950 | const void* ptr, | |
11951 | ulint align_no) | |
11952 | { | |
11953 | ; | |
11954 | ; | |
11955 | ; | |
11956 | ||
11957 | ; | |
11958 | ||
11959 | return(((ulint)ptr) & (align_no - 1)); | |
11960 | } | |
11961 | ||
11962 | ||
11963 | ||
11964 | static inline | |
11965 | ulint | |
11966 | ut_bit_get_nth( | |
11967 | ||
11968 | ||
11969 | ||
11970 | ulint a, | |
11971 | ulint n) | |
11972 | { | |
11973 | ; | |
11974 | ; | |
11975 | ||
11976 | return(1 & (a >> n)); | |
11977 | } | |
11978 | ||
11979 | ||
11980 | ||
11981 | static inline | |
11982 | ulint | |
11983 | ut_bit_set_nth( | |
11984 | ||
11985 | ||
11986 | ulint a, | |
11987 | ulint n, | |
11988 | ulint val) | |
11989 | { | |
11990 | ; | |
11991 | ; | |
11992 | ||
11993 | if (val) { | |
11994 | return(((ulint) 1 << n) | a); | |
11995 | } else { | |
11996 | return(~((ulint) 1 << n) & a); | |
11997 | } | |
11998 | } | |
11999 | # 248 "./include/ut0byte.h" 2 | |
12000 | # 17 "./include/fil0fil.h" 2 | |
12001 | # 1 "./include/os0file.h" 1 | |
12002 | # 14 "./include/os0file.h" | |
12003 | # 1 "./include/trx0types.h" 1 | |
12004 | # 12 "./include/trx0types.h" | |
12005 | # 1 "./include/lock0types.h" 1 | |
12006 | # 13 "./include/lock0types.h" | |
12007 | typedef struct lock_struct ib_lock_t; | |
12008 | typedef struct lock_sys_struct lock_sys_t; | |
12009 | # 13 "./include/trx0types.h" 2 | |
12010 | ||
12011 | ||
12012 | ||
12013 | typedef struct trx_struct trx_t; | |
12014 | typedef struct trx_sys_struct trx_sys_t; | |
12015 | typedef struct trx_doublewrite_struct trx_doublewrite_t; | |
12016 | typedef struct trx_sig_struct trx_sig_t; | |
12017 | typedef struct trx_rseg_struct trx_rseg_t; | |
12018 | typedef struct trx_undo_struct trx_undo_t; | |
12019 | typedef struct trx_undo_arr_struct trx_undo_arr_t; | |
12020 | typedef struct trx_undo_inf_struct trx_undo_inf_t; | |
12021 | typedef struct trx_purge_struct trx_purge_t; | |
12022 | typedef struct roll_node_struct roll_node_t; | |
12023 | typedef struct commit_node_struct commit_node_t; | |
12024 | typedef struct trx_named_savept_struct trx_named_savept_t; | |
12025 | ||
12026 | ||
12027 | typedef struct trx_savept_struct trx_savept_t; | |
12028 | struct trx_savept_struct{ | |
12029 | dulint least_undo_no; | |
12030 | }; | |
12031 | ||
12032 | ||
12033 | typedef unsigned char trx_sysf_t; | |
12034 | typedef unsigned char trx_rsegf_t; | |
12035 | typedef unsigned char trx_usegf_t; | |
12036 | typedef unsigned char trx_ulogf_t; | |
12037 | typedef unsigned char trx_upagef_t; | |
12038 | ||
12039 | ||
12040 | typedef unsigned char trx_undo_rec_t; | |
12041 | # 15 "./include/os0file.h" 2 | |
12042 | ||
12043 | ||
12044 | # 1 "/usr/include/dirent.h" 1 3 4 | |
12045 | # 28 "/usr/include/dirent.h" 3 4 | |
12046 | ||
12047 | # 62 "/usr/include/dirent.h" 3 4 | |
12048 | # 1 "/usr/include/bits/dirent.h" 1 3 4 | |
12049 | # 23 "/usr/include/bits/dirent.h" 3 4 | |
12050 | struct dirent | |
12051 | { | |
12052 | ||
12053 | __ino_t d_ino; | |
12054 | __off_t d_off; | |
12055 | ||
12056 | ||
12057 | ||
12058 | ||
12059 | unsigned short int d_reclen; | |
12060 | unsigned char d_type; | |
12061 | char d_name[256]; | |
12062 | }; | |
12063 | ||
12064 | ||
12065 | struct dirent64 | |
12066 | { | |
12067 | __ino64_t d_ino; | |
12068 | __off64_t d_off; | |
12069 | unsigned short int d_reclen; | |
12070 | unsigned char d_type; | |
12071 | char d_name[256]; | |
12072 | }; | |
12073 | # 63 "/usr/include/dirent.h" 2 3 4 | |
12074 | # 98 "/usr/include/dirent.h" 3 4 | |
12075 | enum | |
12076 | { | |
12077 | DT_UNKNOWN = 0, | |
12078 | ||
12079 | DT_FIFO = 1, | |
12080 | ||
12081 | DT_CHR = 2, | |
12082 | ||
12083 | DT_DIR = 4, | |
12084 | ||
12085 | DT_BLK = 6, | |
12086 | ||
12087 | DT_REG = 8, | |
12088 | ||
12089 | DT_LNK = 10, | |
12090 | ||
12091 | DT_SOCK = 12, | |
12092 | ||
12093 | DT_WHT = 14 | |
12094 | ||
12095 | }; | |
12096 | # 128 "/usr/include/dirent.h" 3 4 | |
12097 | typedef struct __dirstream DIR; | |
12098 | ||
12099 | ||
12100 | ||
12101 | ||
12102 | ||
12103 | ||
12104 | extern DIR *opendir (__const char *__name) __attribute__ ((__nonnull__ (1))); | |
12105 | ||
12106 | ||
12107 | ||
12108 | ||
12109 | ||
12110 | ||
12111 | extern DIR *fdopendir (int __fd); | |
12112 | ||
12113 | ||
12114 | ||
12115 | ||
12116 | ||
12117 | ||
12118 | ||
12119 | extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1))); | |
12120 | # 163 "/usr/include/dirent.h" 3 4 | |
12121 | extern struct dirent *readdir (DIR *__dirp) __attribute__ ((__nonnull__ (1))); | |
12122 | # 174 "/usr/include/dirent.h" 3 4 | |
12123 | extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1))); | |
12124 | # 184 "/usr/include/dirent.h" 3 4 | |
12125 | extern int readdir_r (DIR *__restrict __dirp, | |
12126 | struct dirent *__restrict __entry, | |
12127 | struct dirent **__restrict __result) | |
12128 | __attribute__ ((__nonnull__ (1, 2, 3))); | |
12129 | # 201 "/usr/include/dirent.h" 3 4 | |
12130 | extern int readdir64_r (DIR *__restrict __dirp, | |
12131 | struct dirent64 *__restrict __entry, | |
12132 | struct dirent64 **__restrict __result) | |
12133 | __attribute__ ((__nonnull__ (1, 2, 3))); | |
12134 | ||
12135 | ||
12136 | ||
12137 | ||
12138 | extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
12139 | ||
12140 | ||
12141 | ||
12142 | ||
12143 | ||
12144 | extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
12145 | ||
12146 | ||
12147 | extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
12148 | ||
12149 | ||
12150 | ||
12151 | ||
12152 | ||
12153 | extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))); | |
12154 | # 245 "/usr/include/dirent.h" 3 4 | |
12155 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
12156 | # 246 "/usr/include/dirent.h" 2 3 4 | |
12157 | ||
12158 | ||
12159 | ||
12160 | ||
12161 | ||
12162 | ||
12163 | extern int scandir (__const char *__restrict __dir, | |
12164 | struct dirent ***__restrict __namelist, | |
12165 | int (*__selector) (__const struct dirent *), | |
12166 | int (*__cmp) (__const struct dirent **, | |
12167 | __const struct dirent **)) | |
12168 | __attribute__ ((__nonnull__ (1, 2))); | |
12169 | # 275 "/usr/include/dirent.h" 3 4 | |
12170 | extern int scandir64 (__const char *__restrict __dir, | |
12171 | struct dirent64 ***__restrict __namelist, | |
12172 | int (*__selector) (__const struct dirent64 *), | |
12173 | int (*__cmp) (__const struct dirent64 **, | |
12174 | __const struct dirent64 **)) | |
12175 | __attribute__ ((__nonnull__ (1, 2))); | |
12176 | ||
12177 | ||
12178 | ||
12179 | ||
12180 | extern int alphasort (__const struct dirent **__e1, | |
12181 | __const struct dirent **__e2) | |
12182 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
12183 | # 300 "/usr/include/dirent.h" 3 4 | |
12184 | extern int alphasort64 (__const struct dirent64 **__e1, | |
12185 | __const struct dirent64 **__e2) | |
12186 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
12187 | # 313 "/usr/include/dirent.h" 3 4 | |
12188 | extern __ssize_t getdirentries (int __fd, char *__restrict __buf, | |
12189 | size_t __nbytes, | |
12190 | __off_t *__restrict __basep) | |
12191 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); | |
12192 | # 330 "/usr/include/dirent.h" 3 4 | |
12193 | extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf, | |
12194 | size_t __nbytes, | |
12195 | __off64_t *__restrict __basep) | |
12196 | __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))); | |
12197 | ||
12198 | ||
12199 | ||
12200 | ||
12201 | ||
12202 | ||
12203 | extern int versionsort (__const struct dirent **__e1, | |
12204 | __const struct dirent **__e2) | |
12205 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
12206 | # 356 "/usr/include/dirent.h" 3 4 | |
12207 | extern int versionsort64 (__const struct dirent64 **__e1, | |
12208 | __const struct dirent64 **__e2) | |
12209 | __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2))); | |
12210 | ||
12211 | ||
12212 | ||
12213 | ||
12214 | # 18 "./include/os0file.h" 2 | |
12215 | ||
12216 | ||
12217 | ||
12218 | ||
12219 | typedef struct fil_node_struct fil_node_t; | |
12220 | ||
12221 | ||
12222 | ||
12223 | ||
12224 | extern ulint os_has_said_disk_full; | |
12225 | extern ulint os_aio_print_debug; | |
12226 | ||
12227 | extern ulint os_file_n_pending_preads; | |
12228 | extern ulint os_file_n_pending_pwrites; | |
12229 | ||
12230 | extern ulint os_n_pending_reads; | |
12231 | extern ulint os_n_pending_writes; | |
12232 | # 49 "./include/os0file.h" | |
12233 | typedef int os_file_t; | |
12234 | ||
12235 | ||
12236 | extern ulint os_innodb_umask; | |
12237 | ||
12238 | ||
12239 | ||
12240 | ||
12241 | ||
12242 | extern ulint os_aio_use_native_aio; | |
12243 | # 138 "./include/os0file.h" | |
12244 | extern ulint os_n_file_reads; | |
12245 | extern ulint os_n_file_writes; | |
12246 | extern ulint os_n_fsyncs; | |
12247 | ||
12248 | ||
12249 | ||
12250 | enum os_file_type_enum{ | |
12251 | OS_FILE_TYPE_UNKNOWN = 0, | |
12252 | OS_FILE_TYPE_FILE, | |
12253 | OS_FILE_TYPE_DIR, | |
12254 | OS_FILE_TYPE_LINK | |
12255 | }; | |
12256 | typedef enum os_file_type_enum os_file_type_t; | |
12257 | # 159 "./include/os0file.h" | |
12258 | struct os_file_stat_struct{ | |
12259 | char name[4000]; | |
12260 | os_file_type_t type; | |
12261 | ib_longlong size; | |
12262 | time_t ctime; | |
12263 | time_t mtime; | |
12264 | time_t atime; | |
12265 | }; | |
12266 | typedef struct os_file_stat_struct os_file_stat_t; | |
12267 | ||
12268 | ||
12269 | ||
12270 | ||
12271 | typedef DIR* os_file_dir_t; | |
12272 | ||
12273 | ||
12274 | ||
12275 | ||
12276 | ||
12277 | ulint | |
12278 | os_get_os_version(void); | |
12279 | ||
12280 | ||
12281 | ||
12282 | ||
12283 | ||
12284 | void | |
12285 | os_io_init_simple(void); | |
12286 | ||
12287 | ||
12288 | ||
12289 | ||
12290 | FILE* | |
12291 | os_file_create_tmpfile(void); | |
12292 | # 201 "./include/os0file.h" | |
12293 | os_file_dir_t | |
12294 | os_file_opendir( | |
12295 | ||
12296 | ||
12297 | ||
12298 | const char* dirname, | |
12299 | ||
12300 | ulint error_is_fatal); | |
12301 | ||
12302 | ||
12303 | ||
12304 | ||
12305 | ||
12306 | ||
12307 | ||
12308 | int | |
12309 | os_file_closedir( | |
12310 | ||
12311 | ||
12312 | os_file_dir_t dir); | |
12313 | ||
12314 | ||
12315 | ||
12316 | ||
12317 | int | |
12318 | os_file_readdir_next_file( | |
12319 | ||
12320 | ||
12321 | ||
12322 | const char* dirname, | |
12323 | os_file_dir_t dir, | |
12324 | os_file_stat_t* info); | |
12325 | ||
12326 | ||
12327 | ||
12328 | ||
12329 | ||
12330 | ||
12331 | ulint | |
12332 | os_file_create_directory( | |
12333 | ||
12334 | ||
12335 | ||
12336 | const char* pathname, | |
12337 | ||
12338 | ulint fail_if_exists); | |
12339 | ||
12340 | ||
12341 | ||
12342 | ||
12343 | os_file_t | |
12344 | os_file_create_simple( | |
12345 | ||
12346 | ||
12347 | ||
12348 | ||
12349 | const char* name, | |
12350 | ||
12351 | ulint create_mode, | |
12352 | ||
12353 | ||
12354 | ||
12355 | ||
12356 | ||
12357 | ||
12358 | ulint access_type, | |
12359 | ||
12360 | ulint* success); | |
12361 | ||
12362 | ||
12363 | ||
12364 | os_file_t | |
12365 | os_file_create_simple_no_error_handling( | |
12366 | ||
12367 | ||
12368 | ||
12369 | ||
12370 | const char* name, | |
12371 | ||
12372 | ulint create_mode, | |
12373 | ||
12374 | ||
12375 | ||
12376 | ulint access_type, | |
12377 | ||
12378 | ||
12379 | ||
12380 | ulint* success); | |
12381 | ||
12382 | ||
12383 | ||
12384 | os_file_t | |
12385 | os_file_create( | |
12386 | ||
12387 | ||
12388 | ||
12389 | ||
12390 | const char* name, | |
12391 | ||
12392 | ulint create_mode, | |
12393 | ||
12394 | ||
12395 | ||
12396 | ||
12397 | ||
12398 | ||
12399 | ||
12400 | ulint purpose, | |
12401 | ||
12402 | ||
12403 | ||
12404 | ||
12405 | ||
12406 | ||
12407 | ulint type, | |
12408 | ulint* success); | |
12409 | ||
12410 | ||
12411 | ||
12412 | ulint | |
12413 | os_file_delete( | |
12414 | ||
12415 | ||
12416 | const char* name); | |
12417 | ||
12418 | ||
12419 | ||
12420 | ||
12421 | ulint | |
12422 | os_file_delete_if_exists( | |
12423 | ||
12424 | ||
12425 | const char* name); | |
12426 | ||
12427 | ||
12428 | ||
12429 | ||
12430 | ulint | |
12431 | os_file_rename( | |
12432 | ||
12433 | ||
12434 | const char* oldpath, | |
12435 | ||
12436 | const char* newpath); | |
12437 | ||
12438 | ||
12439 | ||
12440 | ||
12441 | ulint | |
12442 | os_file_close( | |
12443 | ||
12444 | ||
12445 | os_file_t file); | |
12446 | ||
12447 | ||
12448 | ||
12449 | ulint | |
12450 | os_file_close_no_error_handling( | |
12451 | ||
12452 | ||
12453 | os_file_t file); | |
12454 | ||
12455 | ||
12456 | ||
12457 | ulint | |
12458 | os_file_get_size( | |
12459 | ||
12460 | ||
12461 | os_file_t file, | |
12462 | ulint* size, | |
12463 | ||
12464 | ulint* size_high); | |
12465 | ||
12466 | ||
12467 | ||
12468 | ib_longlong | |
12469 | os_file_get_size_as_iblonglong( | |
12470 | ||
12471 | ||
12472 | os_file_t file); | |
12473 | ||
12474 | ||
12475 | ||
12476 | ulint | |
12477 | os_file_set_size( | |
12478 | ||
12479 | ||
12480 | const char* name, | |
12481 | ||
12482 | os_file_t file, | |
12483 | ulint size, | |
12484 | ||
12485 | ulint size_high); | |
12486 | ||
12487 | ||
12488 | ||
12489 | ulint | |
12490 | os_file_set_eof( | |
12491 | ||
12492 | ||
12493 | FILE* file); | |
12494 | ||
12495 | ||
12496 | ||
12497 | ulint | |
12498 | os_file_flush( | |
12499 | ||
12500 | ||
12501 | os_file_t file); | |
12502 | ||
12503 | ||
12504 | ||
12505 | ||
12506 | ||
12507 | ||
12508 | ulint | |
12509 | os_file_get_last_error( | |
12510 | ||
12511 | ||
12512 | ||
12513 | ulint report_all_errors); | |
12514 | ||
12515 | ||
12516 | ||
12517 | ||
12518 | ||
12519 | ||
12520 | ||
12521 | ulint | |
12522 | _os_file_read( | |
12523 | ||
12524 | ||
12525 | ||
12526 | os_file_t file, | |
12527 | void* buf, | |
12528 | ulint offset, | |
12529 | ||
12530 | ulint offset_high, | |
12531 | ||
12532 | ulint n, | |
12533 | trx_t* trx); | |
12534 | ||
12535 | ||
12536 | ||
12537 | ||
12538 | ||
12539 | void | |
12540 | os_file_read_string( | |
12541 | ||
12542 | FILE* file, | |
12543 | char* str, | |
12544 | ulint size); | |
12545 | ||
12546 | ||
12547 | ||
12548 | ||
12549 | ulint | |
12550 | os_file_read_no_error_handling( | |
12551 | ||
12552 | ||
12553 | ||
12554 | os_file_t file, | |
12555 | void* buf, | |
12556 | ulint offset, | |
12557 | ||
12558 | ulint offset_high, | |
12559 | ||
12560 | ulint n); | |
12561 | ||
12562 | ||
12563 | ||
12564 | ||
12565 | ulint | |
12566 | os_file_write( | |
12567 | ||
12568 | ||
12569 | ||
12570 | const char* name, | |
12571 | ||
12572 | os_file_t file, | |
12573 | const void* buf, | |
12574 | ulint offset, | |
12575 | ||
12576 | ulint offset_high, | |
12577 | ||
12578 | ulint n); | |
12579 | ||
12580 | ||
12581 | ||
12582 | ulint | |
12583 | os_file_status( | |
12584 | ||
12585 | ||
12586 | const char* path, | |
12587 | ulint* exists, | |
12588 | os_file_type_t* type); | |
12589 | # 525 "./include/os0file.h" | |
12590 | char* | |
12591 | os_file_dirname( | |
12592 | ||
12593 | ||
12594 | ||
12595 | const char* path); | |
12596 | ||
12597 | ||
12598 | ||
12599 | ulint | |
12600 | os_file_create_subdirs_if_needed( | |
12601 | ||
12602 | ||
12603 | ||
12604 | const char* path); | |
12605 | # 549 "./include/os0file.h" | |
12606 | void | |
12607 | os_aio_init( | |
12608 | ||
12609 | ulint n, | |
12610 | ||
12611 | ||
12612 | ||
12613 | ulint n_read_threads, | |
12614 | ulint n_write_threads, | |
12615 | ulint n_slots_sync); | |
12616 | ||
12617 | ||
12618 | ||
12619 | ulint | |
12620 | os_aio( | |
12621 | ||
12622 | ||
12623 | ||
12624 | ulint type, | |
12625 | ulint mode, | |
12626 | # 581 "./include/os0file.h" | |
12627 | const char* name, | |
12628 | ||
12629 | os_file_t file, | |
12630 | void* buf, | |
12631 | ||
12632 | ulint offset, | |
12633 | ||
12634 | ulint offset_high, | |
12635 | ||
12636 | ulint n, | |
12637 | fil_node_t* message1, | |
12638 | ||
12639 | ||
12640 | ||
12641 | void* message2, | |
12642 | trx_t* trx); | |
12643 | ||
12644 | ||
12645 | ||
12646 | ||
12647 | void | |
12648 | os_aio_wake_all_threads_at_shutdown(void); | |
12649 | ||
12650 | ||
12651 | ||
12652 | ||
12653 | ||
12654 | void | |
12655 | os_aio_wait_until_no_pending_writes(void); | |
12656 | ||
12657 | ||
12658 | ||
12659 | ||
12660 | void | |
12661 | os_aio_simulated_wake_handler_threads(void); | |
12662 | ||
12663 | ||
12664 | ||
12665 | ||
12666 | ||
12667 | ||
12668 | ||
12669 | void | |
12670 | os_aio_simulated_put_read_threads_to_sleep(void); | |
12671 | # 681 "./include/os0file.h" | |
12672 | ulint | |
12673 | os_aio_simulated_handle( | |
12674 | ||
12675 | ||
12676 | ulint segment, | |
12677 | ||
12678 | ||
12679 | ||
12680 | ||
12681 | fil_node_t**message1, | |
12682 | ||
12683 | ||
12684 | ||
12685 | ||
12686 | void** message2, | |
12687 | ulint* type); | |
12688 | ||
12689 | ||
12690 | ||
12691 | ulint | |
12692 | os_aio_validate(void); | |
12693 | ||
12694 | ||
12695 | ||
12696 | ||
12697 | ||
12698 | void | |
12699 | os_aio_print( | |
12700 | ||
12701 | FILE* file); | |
12702 | ||
12703 | ||
12704 | ||
12705 | void | |
12706 | os_aio_refresh_stats(void); | |
12707 | # 730 "./include/os0file.h" | |
12708 | ulint | |
12709 | os_file_get_status( | |
12710 | ||
12711 | ||
12712 | const char* path, | |
12713 | os_file_stat_t* stat_info); | |
12714 | # 18 "./include/fil0fil.h" 2 | |
12715 | ||
12716 | ||
12717 | ||
12718 | ||
12719 | extern const char* fil_path_to_mysql_datadir; | |
12720 | # 34 "./include/fil0fil.h" | |
12721 | typedef unsigned char fil_faddr_t; | |
12722 | # 44 "./include/fil0fil.h" | |
12723 | typedef struct fil_addr_struct fil_addr_t; | |
12724 | struct fil_addr_struct{ | |
12725 | ulint page; | |
12726 | ulint boffset; | |
12727 | }; | |
12728 | ||
12729 | ||
12730 | extern fil_addr_t fil_addr_null; | |
12731 | # 92 "./include/fil0fil.h" | |
12732 | extern ulint fil_n_log_flushes; | |
12733 | ||
12734 | extern ulint fil_n_pending_log_flushes; | |
12735 | extern ulint fil_n_pending_tablespace_flushes; | |
12736 | ||
12737 | ||
12738 | ||
12739 | ||
12740 | ||
12741 | ib_longlong | |
12742 | fil_space_get_version( | |
12743 | ||
12744 | ||
12745 | ||
12746 | ulint id); | |
12747 | ||
12748 | ||
12749 | ||
12750 | rw_lock_t* | |
12751 | fil_space_get_latch( | |
12752 | ||
12753 | ||
12754 | ulint id); | |
12755 | ||
12756 | ||
12757 | ||
12758 | ulint | |
12759 | fil_space_get_type( | |
12760 | ||
12761 | ||
12762 | ulint id); | |
12763 | ||
12764 | ||
12765 | ||
12766 | ibuf_data_t* | |
12767 | fil_space_get_ibuf_data( | |
12768 | ||
12769 | ||
12770 | ulint id); | |
12771 | ||
12772 | ||
12773 | ||
12774 | void | |
12775 | fil_node_create( | |
12776 | ||
12777 | const char* name, | |
12778 | ulint size, | |
12779 | ||
12780 | ulint id, | |
12781 | ulint is_raw); | |
12782 | ||
12783 | ||
12784 | ||
12785 | ||
12786 | ||
12787 | void | |
12788 | fil_space_truncate_start( | |
12789 | ||
12790 | ulint id, | |
12791 | ulint trunc_len); | |
12792 | ||
12793 | ||
12794 | ||
12795 | ||
12796 | ||
12797 | ||
12798 | ulint | |
12799 | fil_space_create( | |
12800 | ||
12801 | ||
12802 | const char* name, | |
12803 | ulint id, | |
12804 | ulint purpose); | |
12805 | ||
12806 | ||
12807 | ||
12808 | ||
12809 | ulint | |
12810 | fil_space_free( | |
12811 | ||
12812 | ||
12813 | ulint id); | |
12814 | ||
12815 | ||
12816 | ||
12817 | ||
12818 | ulint | |
12819 | fil_space_get_size( | |
12820 | ||
12821 | ||
12822 | ulint id); | |
12823 | ||
12824 | ||
12825 | ||
12826 | ||
12827 | ulint | |
12828 | fil_check_adress_in_tablespace( | |
12829 | ||
12830 | ||
12831 | ulint id, | |
12832 | ulint page_no); | |
12833 | ||
12834 | ||
12835 | ||
12836 | void | |
12837 | fil_init( | |
12838 | ||
12839 | ulint max_n_open); | |
12840 | ||
12841 | ||
12842 | ||
12843 | void | |
12844 | fil_print( | |
12845 | ||
12846 | FILE* file); | |
12847 | ||
12848 | ||
12849 | ||
12850 | ||
12851 | ||
12852 | ||
12853 | ||
12854 | void | |
12855 | fil_open_log_and_system_tablespace_files(void); | |
12856 | ||
12857 | ||
12858 | ||
12859 | ||
12860 | ||
12861 | void | |
12862 | fil_close_all_files(void); | |
12863 | ||
12864 | ||
12865 | ||
12866 | ||
12867 | ||
12868 | void | |
12869 | fil_set_max_space_id_if_bigger( | |
12870 | ||
12871 | ulint max_id); | |
12872 | ||
12873 | ||
12874 | ||
12875 | ||
12876 | ||
12877 | void | |
12878 | fil_ibuf_init_at_db_start(void); | |
12879 | ||
12880 | ||
12881 | ||
12882 | ||
12883 | ||
12884 | ulint | |
12885 | fil_write_flushed_lsn_to_data_files( | |
12886 | ||
12887 | ||
12888 | dulint lsn, | |
12889 | ulint arch_log_no); | |
12890 | ||
12891 | ||
12892 | ||
12893 | ||
12894 | void | |
12895 | fil_read_flushed_lsn_and_arch_log_no( | |
12896 | ||
12897 | os_file_t data_file, | |
12898 | ulint one_read_already, | |
12899 | ||
12900 | ||
12901 | ||
12902 | ||
12903 | ||
12904 | dulint* min_flushed_lsn, | |
12905 | dulint* max_flushed_lsn); | |
12906 | ||
12907 | ||
12908 | ||
12909 | ||
12910 | ulint | |
12911 | fil_inc_pending_ibuf_merges( | |
12912 | ||
12913 | ||
12914 | ||
12915 | ulint id); | |
12916 | ||
12917 | ||
12918 | ||
12919 | void | |
12920 | fil_decr_pending_ibuf_merges( | |
12921 | ||
12922 | ulint id); | |
12923 | # 296 "./include/fil0fil.h" | |
12924 | unsigned char* | |
12925 | fil_op_log_parse_or_replay( | |
12926 | ||
12927 | ||
12928 | ||
12929 | ||
12930 | unsigned char* ptr, | |
12931 | ||
12932 | ||
12933 | unsigned char* end_ptr, | |
12934 | ulint type, | |
12935 | ulint do_replay, | |
12936 | ||
12937 | ulint space_id); | |
12938 | ||
12939 | ||
12940 | ||
12941 | ||
12942 | ||
12943 | ||
12944 | ulint | |
12945 | fil_delete_tablespace( | |
12946 | ||
12947 | ||
12948 | ulint id); | |
12949 | # 330 "./include/fil0fil.h" | |
12950 | ulint | |
12951 | fil_discard_tablespace( | |
12952 | ||
12953 | ||
12954 | ulint id); | |
12955 | ||
12956 | ||
12957 | ||
12958 | ||
12959 | ulint | |
12960 | fil_rename_tablespace( | |
12961 | ||
12962 | ||
12963 | const char* old_name, | |
12964 | ||
12965 | ||
12966 | ||
12967 | ulint id, | |
12968 | const char* new_name); | |
12969 | # 359 "./include/fil0fil.h" | |
12970 | ulint | |
12971 | fil_create_new_single_table_tablespace( | |
12972 | ||
12973 | ||
12974 | ulint* space_id, | |
12975 | ||
12976 | ||
12977 | const char* tablename, | |
12978 | ||
12979 | ||
12980 | ||
12981 | ulint is_temp, | |
12982 | ||
12983 | ulint size); | |
12984 | # 385 "./include/fil0fil.h" | |
12985 | ulint | |
12986 | fil_open_single_table_tablespace( | |
12987 | ||
12988 | ||
12989 | ulint check_space_id, | |
12990 | ||
12991 | ||
12992 | ||
12993 | ||
12994 | ||
12995 | ||
12996 | ulint id, | |
12997 | const char* name); | |
12998 | # 409 "./include/fil0fil.h" | |
12999 | ulint | |
13000 | fil_reset_too_high_lsns( | |
13001 | ||
13002 | ||
13003 | const char* name, | |
13004 | ||
13005 | dulint current_lsn); | |
13006 | # 426 "./include/fil0fil.h" | |
13007 | ulint | |
13008 | fil_load_single_table_tablespaces(void); | |
13009 | # 437 "./include/fil0fil.h" | |
13010 | void | |
13011 | fil_print_orphaned_tablespaces(void); | |
13012 | ||
13013 | ||
13014 | ||
13015 | ||
13016 | ||
13017 | ulint | |
13018 | fil_tablespace_deleted_or_being_deleted_in_mem( | |
13019 | ||
13020 | ||
13021 | ||
13022 | ulint id, | |
13023 | ib_longlong version); | |
13024 | ||
13025 | ||
13026 | ||
13027 | ||
13028 | ||
13029 | ulint | |
13030 | fil_tablespace_exists_in_mem( | |
13031 | ||
13032 | ||
13033 | ulint id); | |
13034 | ||
13035 | ||
13036 | ||
13037 | ||
13038 | ||
13039 | ulint | |
13040 | fil_space_for_table_exists_in_mem( | |
13041 | ||
13042 | ||
13043 | ||
13044 | ulint id, | |
13045 | const char* name, | |
13046 | ||
13047 | ||
13048 | ulint is_temp, | |
13049 | ||
13050 | ulint mark_space, | |
13051 | ||
13052 | ||
13053 | ||
13054 | ||
13055 | ||
13056 | ulint print_error_if_does_not_exist); | |
13057 | # 493 "./include/fil0fil.h" | |
13058 | ulint | |
13059 | fil_extend_space_to_desired_size( | |
13060 | ||
13061 | ||
13062 | ulint* actual_size, | |
13063 | ||
13064 | ||
13065 | ulint space_id, | |
13066 | ulint size_after_extend); | |
13067 | # 518 "./include/fil0fil.h" | |
13068 | ulint | |
13069 | fil_space_reserve_free_extents( | |
13070 | ||
13071 | ||
13072 | ulint id, | |
13073 | ulint n_free_now, | |
13074 | ulint n_to_reserve); | |
13075 | ||
13076 | ||
13077 | ||
13078 | void | |
13079 | fil_space_release_free_extents( | |
13080 | ||
13081 | ulint id, | |
13082 | ulint n_reserved); | |
13083 | ||
13084 | ||
13085 | ||
13086 | ||
13087 | ulint | |
13088 | fil_space_get_n_reserved_extents( | |
13089 | ||
13090 | ulint id); | |
13091 | ||
13092 | ||
13093 | ||
13094 | ||
13095 | ||
13096 | ||
13097 | ulint | |
13098 | _fil_io( | |
13099 | ||
13100 | ||
13101 | ||
13102 | ||
13103 | ulint type, | |
13104 | # 562 "./include/fil0fil.h" | |
13105 | ulint sync, | |
13106 | ulint space_id, | |
13107 | ulint block_offset, | |
13108 | ulint byte_offset, | |
13109 | ||
13110 | ||
13111 | ulint len, | |
13112 | ||
13113 | ||
13114 | void* buf, | |
13115 | ||
13116 | ||
13117 | void* message, | |
13118 | ||
13119 | trx_t* trx); | |
13120 | ||
13121 | ||
13122 | ||
13123 | ||
13124 | ||
13125 | ulint | |
13126 | fil_read( | |
13127 | ||
13128 | ||
13129 | ||
13130 | ||
13131 | ulint sync, | |
13132 | ulint space_id, | |
13133 | ulint block_offset, | |
13134 | ulint byte_offset, | |
13135 | ||
13136 | ulint len, | |
13137 | ||
13138 | ||
13139 | void* buf, | |
13140 | ||
13141 | void* message); | |
13142 | ||
13143 | ||
13144 | ||
13145 | ||
13146 | ||
13147 | ||
13148 | ulint | |
13149 | fil_write( | |
13150 | ||
13151 | ||
13152 | ||
13153 | ||
13154 | ulint sync, | |
13155 | ulint space_id, | |
13156 | ulint block_offset, | |
13157 | ulint byte_offset, | |
13158 | ||
13159 | ulint len, | |
13160 | ||
13161 | ||
13162 | void* buf, | |
13163 | ||
13164 | void* message); | |
13165 | ||
13166 | ||
13167 | ||
13168 | ||
13169 | ||
13170 | ||
13171 | ||
13172 | void | |
13173 | fil_aio_wait( | |
13174 | ||
13175 | ulint segment); | |
13176 | ||
13177 | ||
13178 | ||
13179 | typedef enum { | |
13180 | FLUSH_FROM_DIRTY_BUFFER, | |
13181 | FLUSH_FROM_OTHER, | |
13182 | FLUSH_FROM_CHECKPOINT, | |
13183 | FLUSH_FROM_LOG_IO_COMPLETE, | |
13184 | FLUSH_FROM_LOG_WRITE_UP_TO, | |
13185 | FLUSH_FROM_ARCHIVE, | |
13186 | FLUSH_FROM_NUMBER | |
13187 | } flush_from_type; | |
13188 | ||
13189 | ||
13190 | ||
13191 | ||
13192 | void | |
13193 | fil_flush( | |
13194 | ||
13195 | ulint space_id, | |
13196 | ||
13197 | flush_from_type flush_type); | |
13198 | ||
13199 | ||
13200 | ||
13201 | ||
13202 | void | |
13203 | fil_flush_file_spaces( | |
13204 | ||
13205 | ulint purpose, | |
13206 | flush_from_type flush_type); | |
13207 | ||
13208 | ||
13209 | ||
13210 | ulint | |
13211 | fil_validate(void); | |
13212 | ||
13213 | ||
13214 | ||
13215 | ||
13216 | ||
13217 | ulint | |
13218 | fil_addr_is_null( | |
13219 | ||
13220 | ||
13221 | fil_addr_t addr); | |
13222 | ||
13223 | ||
13224 | ||
13225 | ulint | |
13226 | fil_page_get_prev(unsigned char* page); | |
13227 | ulint | |
13228 | fil_page_get_next(unsigned char* page); | |
13229 | ||
13230 | ||
13231 | ||
13232 | void | |
13233 | fil_page_set_type( | |
13234 | ||
13235 | unsigned char* page, | |
13236 | ulint type); | |
13237 | ||
13238 | ||
13239 | ||
13240 | ulint | |
13241 | fil_page_get_type( | |
13242 | ||
13243 | ||
13244 | ||
13245 | unsigned char* page); | |
13246 | ||
13247 | ||
13248 | ||
13249 | ||
13250 | ulint | |
13251 | fil_system_hash_cells(void); | |
13252 | ||
13253 | ||
13254 | ulint | |
13255 | fil_system_hash_nodes(void); | |
13256 | ||
13257 | ||
13258 | typedef struct fil_space_struct fil_space_t; | |
13259 | # 28 "./include/buf0buf.h" 2 | |
13260 | # 1 "./include/mtr0types.h" 1 | |
13261 | # 12 "./include/mtr0types.h" | |
13262 | typedef struct mtr_struct mtr_t; | |
13263 | # 29 "./include/buf0buf.h" 2 | |
13264 | # 1 "./include/buf0types.h" 1 | |
13265 | # 12 "./include/buf0types.h" | |
13266 | typedef struct buf_block_struct buf_block_t; | |
13267 | typedef struct buf_pool_struct buf_pool_t; | |
13268 | ||
13269 | typedef struct buf_io_counter_struct buf_io_counter_t; | |
13270 | ||
13271 | ||
13272 | typedef unsigned char buf_frame_t; | |
13273 | # 30 "./include/buf0buf.h" 2 | |
13274 | ||
13275 | # 1 "./include/hash0hash.h" 1 | |
13276 | # 13 "./include/hash0hash.h" | |
13277 | # 1 "./include/mem0mem.h" 1 | |
13278 | # 16 "./include/mem0mem.h" | |
13279 | # 1 "./include/ut0rnd.h" 1 | |
13280 | # 22 "./include/ut0rnd.h" | |
13281 | static inline | |
13282 | void | |
13283 | ut_rnd_set_seed( | |
13284 | ||
13285 | ulint seed); | |
13286 | ||
13287 | ||
13288 | static inline | |
13289 | ulint | |
13290 | ut_rnd_gen_next_ulint( | |
13291 | ||
13292 | ||
13293 | ulint rnd); | |
13294 | ||
13295 | ||
13296 | ||
13297 | ||
13298 | ||
13299 | static inline | |
13300 | ulint | |
13301 | ut_rnd_gen_ulint(void); | |
13302 | ||
13303 | ||
13304 | ||
13305 | ||
13306 | static inline | |
13307 | ulint | |
13308 | ut_rnd_interval( | |
13309 | ||
13310 | ||
13311 | ulint low, | |
13312 | ulint high); | |
13313 | ||
13314 | ||
13315 | static inline | |
13316 | ulint | |
13317 | ut_rnd_gen_ibool(void); | |
13318 | ||
13319 | ||
13320 | ||
13321 | ||
13322 | ||
13323 | ||
13324 | static inline | |
13325 | ulint | |
13326 | ut_hash_ulint( | |
13327 | ||
13328 | ||
13329 | ulint key, | |
13330 | ulint table_size); | |
13331 | ||
13332 | ||
13333 | static inline | |
13334 | ulint | |
13335 | ut_fold_ulint_pair( | |
13336 | ||
13337 | ||
13338 | ulint n1, | |
13339 | ulint n2); | |
13340 | ||
13341 | ||
13342 | static inline | |
13343 | ulint | |
13344 | ut_fold_dulint( | |
13345 | ||
13346 | ||
13347 | dulint d); | |
13348 | ||
13349 | ||
13350 | static inline | |
13351 | ulint | |
13352 | ut_fold_string( | |
13353 | ||
13354 | ||
13355 | const char* str); | |
13356 | ||
13357 | ||
13358 | static inline | |
13359 | ulint | |
13360 | ut_fold_binary( | |
13361 | ||
13362 | ||
13363 | const unsigned char* str, | |
13364 | ulint len); | |
13365 | ||
13366 | ||
13367 | ||
13368 | ||
13369 | ulint | |
13370 | ut_find_prime( | |
13371 | ||
13372 | ||
13373 | ulint n); | |
13374 | ||
13375 | ||
13376 | ||
13377 | # 1 "./include/ut0rnd.ic" 1 | |
13378 | # 21 "./include/ut0rnd.ic" | |
13379 | extern ulint ut_rnd_ulint_counter; | |
13380 | ||
13381 | ||
13382 | ||
13383 | static inline | |
13384 | void | |
13385 | ut_rnd_set_seed( | |
13386 | ||
13387 | ulint seed) | |
13388 | { | |
13389 | ut_rnd_ulint_counter = seed; | |
13390 | } | |
13391 | ||
13392 | ||
13393 | ||
13394 | static inline | |
13395 | ulint | |
13396 | ut_rnd_gen_next_ulint( | |
13397 | ||
13398 | ||
13399 | ulint rnd) | |
13400 | { | |
13401 | ulint n_bits; | |
13402 | ||
13403 | n_bits = 8 * sizeof(ulint); | |
13404 | ||
13405 | rnd = 119785373 * rnd + 126792457; | |
13406 | rnd = 187678878 ^ rnd; | |
13407 | rnd = (rnd << 20) + (rnd >> (n_bits - 20)); | |
13408 | rnd = 85689495 * rnd + 63498502; | |
13409 | rnd = 143537923 ^ rnd; | |
13410 | rnd = (rnd << 20) + (rnd >> (n_bits - 20)); | |
13411 | rnd = 151117737 * rnd + 98781234; | |
13412 | ||
13413 | return(rnd); | |
13414 | } | |
13415 | ||
13416 | ||
13417 | ||
13418 | ||
13419 | ||
13420 | ||
13421 | static inline | |
13422 | ulint | |
13423 | ut_rnd_gen_ulint(void) | |
13424 | ||
13425 | ||
13426 | { | |
13427 | ulint rnd; | |
13428 | ulint n_bits; | |
13429 | ||
13430 | n_bits = 8 * sizeof(ulint); | |
13431 | ||
13432 | ut_rnd_ulint_counter = | |
13433 | 151117737 * ut_rnd_ulint_counter + 119785373; | |
13434 | ||
13435 | rnd = ut_rnd_gen_next_ulint(ut_rnd_ulint_counter); | |
13436 | ||
13437 | return(rnd); | |
13438 | } | |
13439 | ||
13440 | ||
13441 | ||
13442 | static inline | |
13443 | ulint | |
13444 | ut_rnd_interval( | |
13445 | ||
13446 | ||
13447 | ulint low, | |
13448 | ulint high) | |
13449 | { | |
13450 | ulint rnd; | |
13451 | ||
13452 | ; | |
13453 | ||
13454 | if (low == high) { | |
13455 | ||
13456 | return(low); | |
13457 | } | |
13458 | ||
13459 | rnd = ut_rnd_gen_ulint(); | |
13460 | ||
13461 | return(low + (rnd % (high - low + 1))); | |
13462 | } | |
13463 | ||
13464 | ||
13465 | ||
13466 | static inline | |
13467 | ulint | |
13468 | ut_rnd_gen_ibool(void) | |
13469 | ||
13470 | ||
13471 | { | |
13472 | ulint x; | |
13473 | ||
13474 | x = ut_rnd_gen_ulint(); | |
13475 | ||
13476 | if (((x >> 20) + (x >> 15)) & 1) { | |
13477 | ||
13478 | return((1)); | |
13479 | } | |
13480 | ||
13481 | return((0)); | |
13482 | } | |
13483 | ||
13484 | ||
13485 | ||
13486 | ||
13487 | ||
13488 | static inline | |
13489 | ulint | |
13490 | ut_hash_ulint( | |
13491 | ||
13492 | ||
13493 | ulint key, | |
13494 | ulint table_size) | |
13495 | { | |
13496 | key = key ^ 1653893711; | |
13497 | ||
13498 | return(key % table_size); | |
13499 | } | |
13500 | ||
13501 | ||
13502 | ||
13503 | static inline | |
13504 | ulint | |
13505 | ut_fold_ulint_pair( | |
13506 | ||
13507 | ||
13508 | ulint n1, | |
13509 | ulint n2) | |
13510 | { | |
13511 | return(((((n1 ^ n2 ^ 1653893711) << 8) + n1) | |
13512 | ^ 1463735687) + n2); | |
13513 | } | |
13514 | ||
13515 | ||
13516 | ||
13517 | static inline | |
13518 | ulint | |
13519 | ut_fold_dulint( | |
13520 | ||
13521 | ||
13522 | dulint d) | |
13523 | { | |
13524 | return(ut_fold_ulint_pair(ut_dulint_get_low(d), | |
13525 | ut_dulint_get_high(d))); | |
13526 | } | |
13527 | ||
13528 | ||
13529 | ||
13530 | static inline | |
13531 | ulint | |
13532 | ut_fold_string( | |
13533 | ||
13534 | ||
13535 | const char* str) | |
13536 | { | |
13537 | ||
13538 | ||
13539 | ||
13540 | ulint fold = 0; | |
13541 | ||
13542 | ; | |
13543 | ||
13544 | while (*str != '\0') { | |
13545 | ||
13546 | ||
13547 | ||
13548 | ||
13549 | ||
13550 | ||
13551 | fold = ut_fold_ulint_pair(fold, (ulint)(*str)); | |
13552 | str++; | |
13553 | } | |
13554 | ||
13555 | return(fold); | |
13556 | } | |
13557 | ||
13558 | ||
13559 | ||
13560 | static inline | |
13561 | ulint | |
13562 | ut_fold_binary( | |
13563 | ||
13564 | ||
13565 | const unsigned char* str, | |
13566 | ulint len) | |
13567 | { | |
13568 | const unsigned char* str_end = str + len; | |
13569 | ulint fold = 0; | |
13570 | ||
13571 | ; | |
13572 | ||
13573 | while (str < str_end) { | |
13574 | fold = ut_fold_ulint_pair(fold, (ulint)(*str)); | |
13575 | ||
13576 | str++; | |
13577 | } | |
13578 | ||
13579 | return(fold); | |
13580 | } | |
13581 | # 119 "./include/ut0rnd.h" 2 | |
13582 | # 17 "./include/mem0mem.h" 2 | |
13583 | ||
13584 | ||
13585 | # 1 "./include/mach0data.h" 1 | |
13586 | # 23 "./include/mach0data.h" | |
13587 | static inline | |
13588 | void | |
13589 | mach_write_to_1( | |
13590 | ||
13591 | unsigned char* b, | |
13592 | ulint n); | |
13593 | ||
13594 | ||
13595 | static inline | |
13596 | ulint | |
13597 | mach_read_from_1( | |
13598 | ||
13599 | ||
13600 | unsigned char* b); | |
13601 | ||
13602 | ||
13603 | ||
13604 | static inline | |
13605 | void | |
13606 | mach_write_to_2( | |
13607 | ||
13608 | unsigned char* b, | |
13609 | ulint n); | |
13610 | ||
13611 | ||
13612 | ||
13613 | static inline | |
13614 | ulint | |
13615 | mach_read_from_2( | |
13616 | ||
13617 | ||
13618 | unsigned char* b); | |
13619 | ||
13620 | ||
13621 | ||
13622 | ||
13623 | ||
13624 | static inline | |
13625 | uint16 | |
13626 | mach_encode_2( | |
13627 | ||
13628 | ||
13629 | ulint n); | |
13630 | ||
13631 | ||
13632 | ||
13633 | ||
13634 | static inline | |
13635 | ulint | |
13636 | mach_decode_2( | |
13637 | ||
13638 | ||
13639 | uint16 n); | |
13640 | ||
13641 | ||
13642 | ||
13643 | static inline | |
13644 | void | |
13645 | mach_write_to_3( | |
13646 | ||
13647 | unsigned char* b, | |
13648 | ulint n); | |
13649 | ||
13650 | ||
13651 | ||
13652 | static inline | |
13653 | ulint | |
13654 | mach_read_from_3( | |
13655 | ||
13656 | ||
13657 | unsigned char* b); | |
13658 | ||
13659 | ||
13660 | ||
13661 | static inline | |
13662 | void | |
13663 | mach_write_to_4( | |
13664 | ||
13665 | unsigned char* b, | |
13666 | ulint n); | |
13667 | ||
13668 | ||
13669 | ||
13670 | static inline | |
13671 | ulint | |
13672 | mach_read_from_4( | |
13673 | ||
13674 | ||
13675 | unsigned char* b); | |
13676 | ||
13677 | ||
13678 | static inline | |
13679 | ulint | |
13680 | mach_write_compressed( | |
13681 | ||
13682 | ||
13683 | unsigned char* b, | |
13684 | ulint n); | |
13685 | ||
13686 | ||
13687 | static inline | |
13688 | ulint | |
13689 | mach_get_compressed_size( | |
13690 | ||
13691 | ||
13692 | ulint n); | |
13693 | ||
13694 | ||
13695 | static inline | |
13696 | ulint | |
13697 | mach_read_compressed( | |
13698 | ||
13699 | ||
13700 | unsigned char* b); | |
13701 | ||
13702 | ||
13703 | ||
13704 | static inline | |
13705 | void | |
13706 | mach_write_to_6( | |
13707 | ||
13708 | unsigned char* b, | |
13709 | dulint n); | |
13710 | ||
13711 | ||
13712 | ||
13713 | static inline | |
13714 | dulint | |
13715 | mach_read_from_6( | |
13716 | ||
13717 | ||
13718 | unsigned char* b); | |
13719 | ||
13720 | ||
13721 | ||
13722 | static inline | |
13723 | void | |
13724 | mach_write_to_7( | |
13725 | ||
13726 | unsigned char* b, | |
13727 | dulint n); | |
13728 | ||
13729 | ||
13730 | ||
13731 | static inline | |
13732 | dulint | |
13733 | mach_read_from_7( | |
13734 | ||
13735 | ||
13736 | unsigned char* b); | |
13737 | ||
13738 | ||
13739 | ||
13740 | static inline | |
13741 | void | |
13742 | mach_write_to_8( | |
13743 | ||
13744 | unsigned char* b, | |
13745 | dulint n); | |
13746 | ||
13747 | ||
13748 | ||
13749 | static inline | |
13750 | dulint | |
13751 | mach_read_from_8( | |
13752 | ||
13753 | ||
13754 | unsigned char* b); | |
13755 | ||
13756 | ||
13757 | static inline | |
13758 | ulint | |
13759 | mach_dulint_write_compressed( | |
13760 | ||
13761 | ||
13762 | unsigned char* b, | |
13763 | dulint n); | |
13764 | ||
13765 | ||
13766 | static inline | |
13767 | ulint | |
13768 | mach_dulint_get_compressed_size( | |
13769 | ||
13770 | ||
13771 | dulint n); | |
13772 | ||
13773 | ||
13774 | static inline | |
13775 | dulint | |
13776 | mach_dulint_read_compressed( | |
13777 | ||
13778 | ||
13779 | unsigned char* b); | |
13780 | ||
13781 | ||
13782 | static inline | |
13783 | ulint | |
13784 | mach_dulint_write_much_compressed( | |
13785 | ||
13786 | ||
13787 | unsigned char* b, | |
13788 | dulint n); | |
13789 | ||
13790 | ||
13791 | static inline | |
13792 | ulint | |
13793 | mach_dulint_get_much_compressed_size( | |
13794 | ||
13795 | ||
13796 | dulint n); | |
13797 | ||
13798 | ||
13799 | static inline | |
13800 | dulint | |
13801 | mach_dulint_read_much_compressed( | |
13802 | ||
13803 | ||
13804 | unsigned char* b); | |
13805 | ||
13806 | ||
13807 | ||
13808 | unsigned char* | |
13809 | mach_parse_compressed( | |
13810 | ||
13811 | ||
13812 | ||
13813 | unsigned char* ptr, | |
13814 | unsigned char* end_ptr, | |
13815 | ulint* val); | |
13816 | ||
13817 | ||
13818 | ||
13819 | unsigned char* | |
13820 | mach_dulint_parse_compressed( | |
13821 | ||
13822 | ||
13823 | ||
13824 | unsigned char* ptr, | |
13825 | unsigned char* end_ptr, | |
13826 | dulint* val); | |
13827 | ||
13828 | ||
13829 | static inline | |
13830 | double | |
13831 | mach_double_read( | |
13832 | ||
13833 | ||
13834 | unsigned char* b); | |
13835 | ||
13836 | ||
13837 | static inline | |
13838 | void | |
13839 | mach_double_write( | |
13840 | ||
13841 | unsigned char* b, | |
13842 | double d); | |
13843 | ||
13844 | ||
13845 | static inline | |
13846 | float | |
13847 | mach_float_read( | |
13848 | ||
13849 | ||
13850 | unsigned char* b); | |
13851 | ||
13852 | ||
13853 | static inline | |
13854 | void | |
13855 | mach_float_write( | |
13856 | ||
13857 | unsigned char* b, | |
13858 | float d); | |
13859 | ||
13860 | ||
13861 | static inline | |
13862 | ulint | |
13863 | mach_read_from_n_little_endian( | |
13864 | ||
13865 | ||
13866 | unsigned char* buf, | |
13867 | ulint buf_size); | |
13868 | ||
13869 | ||
13870 | static inline | |
13871 | void | |
13872 | mach_write_to_n_little_endian( | |
13873 | ||
13874 | unsigned char* dest, | |
13875 | ulint dest_size, | |
13876 | ulint n); | |
13877 | ||
13878 | ||
13879 | static inline | |
13880 | ulint | |
13881 | mach_read_from_2_little_endian( | |
13882 | ||
13883 | ||
13884 | unsigned char* buf); | |
13885 | ||
13886 | ||
13887 | static inline | |
13888 | void | |
13889 | mach_write_to_2_little_endian( | |
13890 | ||
13891 | unsigned char* dest, | |
13892 | ulint n); | |
13893 | ||
13894 | ||
13895 | # 1 "./include/mach0data.ic" 1 | |
13896 | # 12 "./include/mach0data.ic" | |
13897 | static inline | |
13898 | void | |
13899 | mach_write_to_1( | |
13900 | ||
13901 | unsigned char* b, | |
13902 | ulint n) | |
13903 | { | |
13904 | ; | |
13905 | ; | |
13906 | ||
13907 | b[0] = (unsigned char)n; | |
13908 | } | |
13909 | ||
13910 | ||
13911 | ||
13912 | static inline | |
13913 | ulint | |
13914 | mach_read_from_1( | |
13915 | ||
13916 | ||
13917 | unsigned char* b) | |
13918 | { | |
13919 | ; | |
13920 | return((ulint)(b[0])); | |
13921 | } | |
13922 | ||
13923 | ||
13924 | ||
13925 | ||
13926 | static inline | |
13927 | void | |
13928 | mach_write_to_2( | |
13929 | ||
13930 | unsigned char* b, | |
13931 | ulint n) | |
13932 | { | |
13933 | ; | |
13934 | ; | |
13935 | ||
13936 | b[0] = (unsigned char)(n >> 8); | |
13937 | b[1] = (unsigned char)(n); | |
13938 | } | |
13939 | ||
13940 | ||
13941 | ||
13942 | ||
13943 | static inline | |
13944 | ulint | |
13945 | mach_read_from_2( | |
13946 | ||
13947 | ||
13948 | unsigned char* b) | |
13949 | { | |
13950 | ; | |
13951 | return( ((ulint)(b[0]) << 8) | |
13952 | + (ulint)(b[1]) | |
13953 | ); | |
13954 | } | |
13955 | ||
13956 | ||
13957 | ||
13958 | ||
13959 | ||
13960 | static inline | |
13961 | uint16 | |
13962 | mach_encode_2( | |
13963 | ||
13964 | ||
13965 | ulint n) | |
13966 | { | |
13967 | uint16 ret; | |
13968 | ; | |
13969 | mach_write_to_2((unsigned char*) &ret, n); | |
13970 | return(ret); | |
13971 | } | |
13972 | ||
13973 | ||
13974 | ||
13975 | ||
13976 | static inline | |
13977 | ulint | |
13978 | mach_decode_2( | |
13979 | ||
13980 | ||
13981 | uint16 n) | |
13982 | { | |
13983 | ; | |
13984 | return(mach_read_from_2((unsigned char*) &n)); | |
13985 | } | |
13986 | ||
13987 | ||
13988 | ||
13989 | ||
13990 | static inline | |
13991 | void | |
13992 | mach_write_to_3( | |
13993 | ||
13994 | unsigned char* b, | |
13995 | ulint n) | |
13996 | { | |
13997 | ; | |
13998 | ; | |
13999 | ||
14000 | b[0] = (unsigned char)(n >> 16); | |
14001 | b[1] = (unsigned char)(n >> 8); | |
14002 | b[2] = (unsigned char)(n); | |
14003 | } | |
14004 | ||
14005 | ||
14006 | ||
14007 | ||
14008 | static inline | |
14009 | ulint | |
14010 | mach_read_from_3( | |
14011 | ||
14012 | ||
14013 | unsigned char* b) | |
14014 | { | |
14015 | ; | |
14016 | return( ((ulint)(b[0]) << 16) | |
14017 | + ((ulint)(b[1]) << 8) | |
14018 | + (ulint)(b[2]) | |
14019 | ); | |
14020 | } | |
14021 | ||
14022 | ||
14023 | ||
14024 | ||
14025 | static inline | |
14026 | void | |
14027 | mach_write_to_4( | |
14028 | ||
14029 | unsigned char* b, | |
14030 | ulint n) | |
14031 | { | |
14032 | ; | |
14033 | # 160 "./include/mach0data.ic" | |
14034 | b[0] = (unsigned char)(n >> 24); | |
14035 | b[1] = (unsigned char)(n >> 16); | |
14036 | b[2] = (unsigned char)(n >> 8); | |
14037 | b[3] = (unsigned char)n; | |
14038 | ||
14039 | } | |
14040 | ||
14041 | ||
14042 | ||
14043 | ||
14044 | static inline | |
14045 | ulint | |
14046 | mach_read_from_4( | |
14047 | ||
14048 | ||
14049 | unsigned char* b) | |
14050 | { | |
14051 | # 192 "./include/mach0data.ic" | |
14052 | ; | |
14053 | return( ((ulint)(b[0]) << 24) | |
14054 | + ((ulint)(b[1]) << 16) | |
14055 | + ((ulint)(b[2]) << 8) | |
14056 | + (ulint)(b[3]) | |
14057 | ); | |
14058 | ||
14059 | } | |
14060 | # 208 "./include/mach0data.ic" | |
14061 | static inline | |
14062 | ulint | |
14063 | mach_write_compressed( | |
14064 | ||
14065 | ||
14066 | unsigned char* b, | |
14067 | ulint n) | |
14068 | { | |
14069 | ; | |
14070 | ||
14071 | if (n < 0x80UL) { | |
14072 | mach_write_to_1(b, n); | |
14073 | return(1); | |
14074 | } else if (n < 0x4000UL) { | |
14075 | mach_write_to_2(b, n | 0x8000UL); | |
14076 | return(2); | |
14077 | } else if (n < 0x200000UL) { | |
14078 | mach_write_to_3(b, n | 0xC00000UL); | |
14079 | return(3); | |
14080 | } else if (n < 0x10000000UL) { | |
14081 | mach_write_to_4(b, n | 0xE0000000UL); | |
14082 | return(4); | |
14083 | } else { | |
14084 | mach_write_to_1(b, 0xF0UL); | |
14085 | mach_write_to_4(b + 1, n); | |
14086 | return(5); | |
14087 | } | |
14088 | } | |
14089 | ||
14090 | ||
14091 | ||
14092 | static inline | |
14093 | ulint | |
14094 | mach_get_compressed_size( | |
14095 | ||
14096 | ||
14097 | ulint n) | |
14098 | { | |
14099 | if (n < 0x80UL) { | |
14100 | return(1); | |
14101 | } else if (n < 0x4000UL) { | |
14102 | return(2); | |
14103 | } else if (n < 0x200000UL) { | |
14104 | return(3); | |
14105 | } else if (n < 0x10000000UL) { | |
14106 | return(4); | |
14107 | } else { | |
14108 | return(5); | |
14109 | } | |
14110 | } | |
14111 | ||
14112 | ||
14113 | ||
14114 | static inline | |
14115 | ulint | |
14116 | mach_read_compressed( | |
14117 | ||
14118 | ||
14119 | unsigned char* b) | |
14120 | { | |
14121 | ulint flag; | |
14122 | ||
14123 | ; | |
14124 | ||
14125 | flag = mach_read_from_1(b); | |
14126 | ||
14127 | if (flag < 0x80UL) { | |
14128 | return(flag); | |
14129 | } else if (flag < 0xC0UL) { | |
14130 | return(mach_read_from_2(b) & 0x7FFFUL); | |
14131 | } else if (flag < 0xE0UL) { | |
14132 | return(mach_read_from_3(b) & 0x3FFFFFUL); | |
14133 | } else if (flag < 0xF0UL) { | |
14134 | return(mach_read_from_4(b) & 0x1FFFFFFFUL); | |
14135 | } else { | |
14136 | ; | |
14137 | return(mach_read_from_4(b + 1)); | |
14138 | } | |
14139 | } | |
14140 | ||
14141 | ||
14142 | ||
14143 | ||
14144 | static inline | |
14145 | void | |
14146 | mach_write_to_8( | |
14147 | ||
14148 | unsigned char* b, | |
14149 | dulint n) | |
14150 | { | |
14151 | ; | |
14152 | ||
14153 | mach_write_to_4(b, ut_dulint_get_high(n)); | |
14154 | mach_write_to_4(b + 4, ut_dulint_get_low(n)); | |
14155 | } | |
14156 | ||
14157 | ||
14158 | ||
14159 | ||
14160 | static inline | |
14161 | dulint | |
14162 | mach_read_from_8( | |
14163 | ||
14164 | ||
14165 | unsigned char* b) | |
14166 | { | |
14167 | ulint high; | |
14168 | ulint low; | |
14169 | ||
14170 | ; | |
14171 | ||
14172 | high = mach_read_from_4(b); | |
14173 | low = mach_read_from_4(b + 4); | |
14174 | ||
14175 | return(ut_dulint_create(high, low)); | |
14176 | } | |
14177 | ||
14178 | ||
14179 | ||
14180 | ||
14181 | static inline | |
14182 | void | |
14183 | mach_write_to_7( | |
14184 | ||
14185 | unsigned char* b, | |
14186 | dulint n) | |
14187 | { | |
14188 | ; | |
14189 | ||
14190 | mach_write_to_3(b, ut_dulint_get_high(n)); | |
14191 | mach_write_to_4(b + 3, ut_dulint_get_low(n)); | |
14192 | } | |
14193 | ||
14194 | ||
14195 | ||
14196 | ||
14197 | static inline | |
14198 | dulint | |
14199 | mach_read_from_7( | |
14200 | ||
14201 | ||
14202 | unsigned char* b) | |
14203 | { | |
14204 | ulint high; | |
14205 | ulint low; | |
14206 | ||
14207 | ; | |
14208 | ||
14209 | high = mach_read_from_3(b); | |
14210 | low = mach_read_from_4(b + 3); | |
14211 | ||
14212 | return(ut_dulint_create(high, low)); | |
14213 | } | |
14214 | ||
14215 | ||
14216 | ||
14217 | ||
14218 | static inline | |
14219 | void | |
14220 | mach_write_to_6( | |
14221 | ||
14222 | unsigned char* b, | |
14223 | dulint n) | |
14224 | { | |
14225 | ; | |
14226 | ||
14227 | mach_write_to_2(b, ut_dulint_get_high(n)); | |
14228 | mach_write_to_4(b + 2, ut_dulint_get_low(n)); | |
14229 | } | |
14230 | ||
14231 | ||
14232 | ||
14233 | ||
14234 | static inline | |
14235 | dulint | |
14236 | mach_read_from_6( | |
14237 | ||
14238 | ||
14239 | unsigned char* b) | |
14240 | { | |
14241 | ulint high; | |
14242 | ulint low; | |
14243 | ||
14244 | ; | |
14245 | ||
14246 | high = mach_read_from_2(b); | |
14247 | low = mach_read_from_4(b + 2); | |
14248 | ||
14249 | return(ut_dulint_create(high, low)); | |
14250 | } | |
14251 | ||
14252 | ||
14253 | ||
14254 | static inline | |
14255 | ulint | |
14256 | mach_dulint_write_compressed( | |
14257 | ||
14258 | ||
14259 | unsigned char* b, | |
14260 | dulint n) | |
14261 | { | |
14262 | ulint size; | |
14263 | ||
14264 | ; | |
14265 | ||
14266 | size = mach_write_compressed(b, ut_dulint_get_high(n)); | |
14267 | mach_write_to_4(b + size, ut_dulint_get_low(n)); | |
14268 | ||
14269 | return(size + 4); | |
14270 | } | |
14271 | ||
14272 | ||
14273 | ||
14274 | static inline | |
14275 | ulint | |
14276 | mach_dulint_get_compressed_size( | |
14277 | ||
14278 | ||
14279 | dulint n) | |
14280 | { | |
14281 | return(4 + mach_get_compressed_size(ut_dulint_get_high(n))); | |
14282 | } | |
14283 | ||
14284 | ||
14285 | ||
14286 | static inline | |
14287 | dulint | |
14288 | mach_dulint_read_compressed( | |
14289 | ||
14290 | ||
14291 | unsigned char* b) | |
14292 | { | |
14293 | ulint high; | |
14294 | ulint low; | |
14295 | ulint size; | |
14296 | ||
14297 | ; | |
14298 | ||
14299 | high = mach_read_compressed(b); | |
14300 | ||
14301 | size = mach_get_compressed_size(high); | |
14302 | ||
14303 | low = mach_read_from_4(b + size); | |
14304 | ||
14305 | return(ut_dulint_create(high, low)); | |
14306 | } | |
14307 | ||
14308 | ||
14309 | ||
14310 | static inline | |
14311 | ulint | |
14312 | mach_dulint_write_much_compressed( | |
14313 | ||
14314 | ||
14315 | unsigned char* b, | |
14316 | dulint n) | |
14317 | { | |
14318 | ulint size; | |
14319 | ||
14320 | ; | |
14321 | ||
14322 | if (ut_dulint_get_high(n) == 0) { | |
14323 | return(mach_write_compressed(b, ut_dulint_get_low(n))); | |
14324 | } | |
14325 | ||
14326 | *b = (unsigned char)0xFF; | |
14327 | size = 1 + mach_write_compressed(b + 1, ut_dulint_get_high(n)); | |
14328 | ||
14329 | size += mach_write_compressed(b + size, ut_dulint_get_low(n)); | |
14330 | ||
14331 | return(size); | |
14332 | } | |
14333 | ||
14334 | ||
14335 | ||
14336 | static inline | |
14337 | ulint | |
14338 | mach_dulint_get_much_compressed_size( | |
14339 | ||
14340 | ||
14341 | dulint n) | |
14342 | { | |
14343 | if (0 == ut_dulint_get_high(n)) { | |
14344 | return(mach_get_compressed_size(ut_dulint_get_low(n))); | |
14345 | } | |
14346 | ||
14347 | return(1 + mach_get_compressed_size(ut_dulint_get_high(n)) | |
14348 | + mach_get_compressed_size(ut_dulint_get_low(n))); | |
14349 | } | |
14350 | ||
14351 | ||
14352 | ||
14353 | static inline | |
14354 | dulint | |
14355 | mach_dulint_read_much_compressed( | |
14356 | ||
14357 | ||
14358 | unsigned char* b) | |
14359 | { | |
14360 | ulint high; | |
14361 | ulint low; | |
14362 | ulint size; | |
14363 | ||
14364 | ; | |
14365 | ||
14366 | if (*b != (unsigned char)0xFF) { | |
14367 | high = 0; | |
14368 | size = 0; | |
14369 | } else { | |
14370 | high = mach_read_compressed(b + 1); | |
14371 | ||
14372 | size = 1 + mach_get_compressed_size(high); | |
14373 | } | |
14374 | ||
14375 | low = mach_read_compressed(b + size); | |
14376 | ||
14377 | return(ut_dulint_create(high, low)); | |
14378 | } | |
14379 | ||
14380 | ||
14381 | ||
14382 | static inline | |
14383 | double | |
14384 | mach_double_read( | |
14385 | ||
14386 | ||
14387 | unsigned char* b) | |
14388 | { | |
14389 | double d; | |
14390 | ulint i; | |
14391 | unsigned char* ptr; | |
14392 | ||
14393 | ptr = (unsigned char*)&d; | |
14394 | ||
14395 | for (i = 0; i < sizeof(double); i++) { | |
14396 | ||
14397 | ptr[sizeof(double) - i - 1] = b[i]; | |
14398 | ||
14399 | ||
14400 | ||
14401 | } | |
14402 | ||
14403 | return(d); | |
14404 | } | |
14405 | ||
14406 | ||
14407 | ||
14408 | static inline | |
14409 | void | |
14410 | mach_double_write( | |
14411 | ||
14412 | unsigned char* b, | |
14413 | double d) | |
14414 | { | |
14415 | ulint i; | |
14416 | unsigned char* ptr; | |
14417 | ||
14418 | ptr = (unsigned char*)&d; | |
14419 | ||
14420 | for (i = 0; i < sizeof(double); i++) { | |
14421 | ||
14422 | b[i] = ptr[sizeof(double) - i - 1]; | |
14423 | ||
14424 | ||
14425 | ||
14426 | } | |
14427 | } | |
14428 | ||
14429 | ||
14430 | ||
14431 | static inline | |
14432 | float | |
14433 | mach_float_read( | |
14434 | ||
14435 | ||
14436 | unsigned char* b) | |
14437 | { | |
14438 | float d; | |
14439 | ulint i; | |
14440 | unsigned char* ptr; | |
14441 | ||
14442 | ptr = (unsigned char*)&d; | |
14443 | ||
14444 | for (i = 0; i < sizeof(float); i++) { | |
14445 | ||
14446 | ptr[sizeof(float) - i - 1] = b[i]; | |
14447 | ||
14448 | ||
14449 | ||
14450 | } | |
14451 | ||
14452 | return(d); | |
14453 | } | |
14454 | ||
14455 | ||
14456 | ||
14457 | static inline | |
14458 | void | |
14459 | mach_float_write( | |
14460 | ||
14461 | unsigned char* b, | |
14462 | float d) | |
14463 | { | |
14464 | ulint i; | |
14465 | unsigned char* ptr; | |
14466 | ||
14467 | ptr = (unsigned char*)&d; | |
14468 | ||
14469 | for (i = 0; i < sizeof(float); i++) { | |
14470 | ||
14471 | b[i] = ptr[sizeof(float) - i - 1]; | |
14472 | ||
14473 | ||
14474 | ||
14475 | } | |
14476 | } | |
14477 | ||
14478 | ||
14479 | ||
14480 | static inline | |
14481 | ulint | |
14482 | mach_read_from_n_little_endian( | |
14483 | ||
14484 | ||
14485 | unsigned char* buf, | |
14486 | ulint buf_size) | |
14487 | { | |
14488 | ulint n = 0; | |
14489 | unsigned char* ptr; | |
14490 | ||
14491 | ; | |
14492 | ; | |
14493 | ||
14494 | ptr = buf + buf_size; | |
14495 | ||
14496 | for (;;) { | |
14497 | ptr--; | |
14498 | ||
14499 | n = n << 8; | |
14500 | ||
14501 | n += (ulint)(*ptr); | |
14502 | ||
14503 | if (ptr == buf) { | |
14504 | break; | |
14505 | } | |
14506 | } | |
14507 | ||
14508 | return(n); | |
14509 | } | |
14510 | ||
14511 | ||
14512 | ||
14513 | static inline | |
14514 | void | |
14515 | mach_write_to_n_little_endian( | |
14516 | ||
14517 | unsigned char* dest, | |
14518 | ulint dest_size, | |
14519 | ulint n) | |
14520 | { | |
14521 | unsigned char* end; | |
14522 | ||
14523 | ; | |
14524 | ; | |
14525 | ||
14526 | end = dest + dest_size; | |
14527 | ||
14528 | for (;;) { | |
14529 | *dest = (unsigned char)(n & 0xFF); | |
14530 | ||
14531 | n = n >> 8; | |
14532 | ||
14533 | dest++; | |
14534 | ||
14535 | if (dest == end) { | |
14536 | break; | |
14537 | } | |
14538 | } | |
14539 | ||
14540 | ; | |
14541 | } | |
14542 | ||
14543 | ||
14544 | ||
14545 | static inline | |
14546 | ulint | |
14547 | mach_read_from_2_little_endian( | |
14548 | ||
14549 | ||
14550 | unsigned char* buf) | |
14551 | { | |
14552 | return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256); | |
14553 | } | |
14554 | ||
14555 | ||
14556 | ||
14557 | static inline | |
14558 | void | |
14559 | mach_write_to_2_little_endian( | |
14560 | ||
14561 | unsigned char* dest, | |
14562 | ulint n) | |
14563 | { | |
14564 | ; | |
14565 | ||
14566 | *dest = (unsigned char)(n & 0xFFUL); | |
14567 | ||
14568 | n = n >> 8; | |
14569 | dest++; | |
14570 | ||
14571 | *dest = (unsigned char)(n & 0xFFUL); | |
14572 | } | |
14573 | # 332 "./include/mach0data.h" 2 | |
14574 | # 20 "./include/mem0mem.h" 2 | |
14575 | ||
14576 | ||
14577 | ||
14578 | ||
14579 | typedef struct mem_block_info_struct mem_block_info_t; | |
14580 | ||
14581 | ||
14582 | ||
14583 | typedef mem_block_info_t mem_block_t; | |
14584 | ||
14585 | ||
14586 | typedef mem_block_t mem_heap_t; | |
14587 | # 57 "./include/mem0mem.h" | |
14588 | void | |
14589 | mem_init( | |
14590 | ||
14591 | ulint size); | |
14592 | # 103 "./include/mem0mem.h" | |
14593 | static inline | |
14594 | mem_heap_t* | |
14595 | mem_heap_create_func( | |
14596 | ||
14597 | ||
14598 | ulint n, | |
14599 | ||
14600 | ||
14601 | ||
14602 | ||
14603 | ||
14604 | void* init_block, | |
14605 | # 124 "./include/mem0mem.h" | |
14606 | ulint type, | |
14607 | ||
14608 | const char* file_name, | |
14609 | ulint line | |
14610 | ); | |
14611 | ||
14612 | ||
14613 | ||
14614 | ||
14615 | static inline | |
14616 | void | |
14617 | mem_heap_free_func( | |
14618 | ||
14619 | mem_heap_t* heap, | |
14620 | const char* file_name, | |
14621 | ulint line); | |
14622 | ||
14623 | ||
14624 | static inline | |
14625 | void* | |
14626 | mem_heap_alloc( | |
14627 | ||
14628 | ||
14629 | ||
14630 | mem_heap_t* heap, | |
14631 | ulint n); | |
14632 | ||
14633 | ||
14634 | ||
14635 | ||
14636 | static inline | |
14637 | unsigned char* | |
14638 | mem_heap_get_heap_top( | |
14639 | ||
14640 | ||
14641 | mem_heap_t* heap); | |
14642 | ||
14643 | ||
14644 | ||
14645 | ||
14646 | static inline | |
14647 | void | |
14648 | mem_heap_free_heap_top( | |
14649 | ||
14650 | mem_heap_t* heap, | |
14651 | unsigned char* old_top); | |
14652 | ||
14653 | ||
14654 | static inline | |
14655 | void | |
14656 | mem_heap_empty( | |
14657 | ||
14658 | mem_heap_t* heap); | |
14659 | ||
14660 | ||
14661 | ||
14662 | static inline | |
14663 | void* | |
14664 | mem_heap_get_top( | |
14665 | ||
14666 | ||
14667 | mem_heap_t* heap, | |
14668 | ulint n); | |
14669 | ||
14670 | ||
14671 | ||
14672 | static inline | |
14673 | void | |
14674 | mem_heap_free_top( | |
14675 | ||
14676 | mem_heap_t* heap, | |
14677 | ulint n); | |
14678 | ||
14679 | ||
14680 | static inline | |
14681 | ulint | |
14682 | mem_heap_get_size( | |
14683 | ||
14684 | mem_heap_t* heap); | |
14685 | # 219 "./include/mem0mem.h" | |
14686 | static inline | |
14687 | void* | |
14688 | mem_alloc_func( | |
14689 | ||
14690 | ||
14691 | ||
14692 | ulint n, | |
14693 | const char* file_name, | |
14694 | ulint line | |
14695 | ); | |
14696 | ||
14697 | ||
14698 | ||
14699 | ||
14700 | ||
14701 | ||
14702 | void* | |
14703 | mem_alloc_func_noninline( | |
14704 | ||
14705 | ||
14706 | ||
14707 | ulint n, | |
14708 | const char* file_name, | |
14709 | ulint line | |
14710 | ); | |
14711 | # 253 "./include/mem0mem.h" | |
14712 | static inline | |
14713 | void | |
14714 | mem_free_func( | |
14715 | ||
14716 | void* ptr, | |
14717 | const char* file_name, | |
14718 | ulint line | |
14719 | ); | |
14720 | ||
14721 | ||
14722 | ||
14723 | static inline | |
14724 | char* | |
14725 | mem_strdup( | |
14726 | ||
14727 | ||
14728 | ||
14729 | const char* str); | |
14730 | ||
14731 | ||
14732 | static inline | |
14733 | char* | |
14734 | mem_strdupl( | |
14735 | ||
14736 | ||
14737 | ||
14738 | const char* str, | |
14739 | ulint len); | |
14740 | ||
14741 | ||
14742 | ||
14743 | static inline | |
14744 | char* | |
14745 | mem_strdupq( | |
14746 | ||
14747 | ||
14748 | ||
14749 | const char* str, | |
14750 | char q); | |
14751 | ||
14752 | ||
14753 | ||
14754 | ||
14755 | char* | |
14756 | mem_heap_strdup( | |
14757 | ||
14758 | ||
14759 | mem_heap_t* heap, | |
14760 | const char* str); | |
14761 | ||
14762 | ||
14763 | ||
14764 | static inline | |
14765 | char* | |
14766 | mem_heap_strdupl( | |
14767 | ||
14768 | ||
14769 | mem_heap_t* heap, | |
14770 | const char* str, | |
14771 | ulint len); | |
14772 | # 328 "./include/mem0mem.h" | |
14773 | struct mem_block_info_struct { | |
14774 | ulint magic_n; | |
14775 | char file_name[8]; | |
14776 | ulint line; | |
14777 | struct { ulint count; mem_block_t * start; mem_block_t * end; } base; | |
14778 | ||
14779 | ||
14780 | struct { mem_block_t * prev; mem_block_t * next; } list; | |
14781 | ||
14782 | ||
14783 | ||
14784 | ulint len; | |
14785 | ulint type; | |
14786 | ||
14787 | ulint init_block; | |
14788 | ||
14789 | ||
14790 | ulint free; | |
14791 | ||
14792 | ulint start; | |
14793 | ||
14794 | unsigned char* free_block; | |
14795 | # 360 "./include/mem0mem.h" | |
14796 | }; | |
14797 | ||
14798 | ||
14799 | ||
14800 | ||
14801 | ||
14802 | ||
14803 | ||
14804 | # 1 "./include/mem0dbg.h" 1 | |
14805 | # 41 "./include/mem0dbg.h" | |
14806 | void | |
14807 | mem_heap_validate_or_print( | |
14808 | ||
14809 | mem_heap_t* heap, | |
14810 | unsigned char* top, | |
14811 | ||
14812 | ||
14813 | ulint print, | |
14814 | ||
14815 | ||
14816 | ulint* error, | |
14817 | ulint* us_size, | |
14818 | ||
14819 | ||
14820 | ||
14821 | ||
14822 | ulint* ph_size, | |
14823 | ||
14824 | ||
14825 | ulint* n_blocks); | |
14826 | # 75 "./include/mem0dbg.h" | |
14827 | ulint | |
14828 | mem_heap_check( | |
14829 | ||
14830 | ||
14831 | mem_heap_t* heap); | |
14832 | ||
14833 | ||
14834 | ||
14835 | ulint | |
14836 | mem_heap_validate( | |
14837 | ||
14838 | ||
14839 | mem_heap_t* heap); | |
14840 | # 115 "./include/mem0dbg.h" | |
14841 | void | |
14842 | mem_analyze_corruption( | |
14843 | ||
14844 | unsigned char* ptr); | |
14845 | ||
14846 | ||
14847 | ||
14848 | ||
14849 | void | |
14850 | mem_print_info(void); | |
14851 | ||
14852 | ||
14853 | ||
14854 | ||
14855 | ||
14856 | void | |
14857 | mem_print_new_info(void); | |
14858 | # 369 "./include/mem0mem.h" 2 | |
14859 | ||
14860 | ||
14861 | # 1 "./include/mem0mem.ic" 1 | |
14862 | # 9 "./include/mem0mem.ic" | |
14863 | # 1 "./include/mem0dbg.ic" 1 | |
14864 | # 10 "./include/mem0mem.ic" 2 | |
14865 | ||
14866 | # 1 "./include/mem0pool.h" 1 | |
14867 | # 16 "./include/mem0pool.h" | |
14868 | typedef struct mem_area_struct mem_area_t; | |
14869 | typedef struct mem_pool_struct mem_pool_t; | |
14870 | ||
14871 | ||
14872 | extern mem_pool_t* mem_comm_pool; | |
14873 | ||
14874 | ||
14875 | ||
14876 | struct mem_area_struct{ | |
14877 | ulint size_and_free; | |
14878 | ||
14879 | ||
14880 | ||
14881 | struct { mem_area_t * prev; mem_area_t * next; } | |
14882 | free_list; | |
14883 | }; | |
14884 | # 40 "./include/mem0pool.h" | |
14885 | mem_pool_t* | |
14886 | mem_pool_create( | |
14887 | ||
14888 | ||
14889 | ulint size); | |
14890 | ||
14891 | ||
14892 | ||
14893 | ||
14894 | void* | |
14895 | mem_area_alloc( | |
14896 | ||
14897 | ||
14898 | ulint size, | |
14899 | ||
14900 | ||
14901 | mem_pool_t* pool); | |
14902 | ||
14903 | ||
14904 | ||
14905 | void | |
14906 | mem_area_free( | |
14907 | ||
14908 | void* ptr, | |
14909 | ||
14910 | mem_pool_t* pool); | |
14911 | ||
14912 | ||
14913 | ||
14914 | ulint | |
14915 | mem_pool_get_reserved( | |
14916 | ||
14917 | ||
14918 | mem_pool_t* pool); | |
14919 | ||
14920 | ||
14921 | ||
14922 | void | |
14923 | mem_pool_mutex_enter(void); | |
14924 | ||
14925 | ||
14926 | ||
14927 | ||
14928 | void | |
14929 | mem_pool_mutex_exit(void); | |
14930 | ||
14931 | ||
14932 | ||
14933 | ||
14934 | ulint | |
14935 | mem_pool_validate( | |
14936 | ||
14937 | ||
14938 | mem_pool_t* pool); | |
14939 | ||
14940 | ||
14941 | ||
14942 | void | |
14943 | mem_pool_print_info( | |
14944 | ||
14945 | FILE* outfile, | |
14946 | mem_pool_t* pool); | |
14947 | ||
14948 | ||
14949 | ||
14950 | # 1 "./include/mem0pool.ic" 1 | |
14951 | # 106 "./include/mem0pool.h" 2 | |
14952 | # 12 "./include/mem0mem.ic" 2 | |
14953 | ||
14954 | ||
14955 | ||
14956 | ||
14957 | mem_block_t* | |
14958 | mem_heap_create_block( | |
14959 | ||
14960 | ||
14961 | ||
14962 | mem_heap_t* heap, | |
14963 | ||
14964 | ulint n, | |
14965 | ||
14966 | void* init_block, | |
14967 | ||
14968 | ulint type, | |
14969 | ||
14970 | const char* file_name, | |
14971 | ulint line); | |
14972 | ||
14973 | ||
14974 | ||
14975 | void | |
14976 | mem_heap_block_free( | |
14977 | ||
14978 | mem_heap_t* heap, | |
14979 | mem_block_t* block); | |
14980 | ||
14981 | ||
14982 | ||
14983 | void | |
14984 | mem_heap_free_block_free( | |
14985 | ||
14986 | mem_heap_t* heap); | |
14987 | ||
14988 | ||
14989 | ||
14990 | mem_block_t* | |
14991 | mem_heap_add_block( | |
14992 | ||
14993 | ||
14994 | ||
14995 | mem_heap_t* heap, | |
14996 | ulint n); | |
14997 | ||
14998 | static inline | |
14999 | void | |
15000 | mem_block_set_len(mem_block_t* block, ulint len) | |
15001 | { | |
15002 | ; | |
15003 | ||
15004 | block->len = len; | |
15005 | } | |
15006 | ||
15007 | static inline | |
15008 | ulint | |
15009 | mem_block_get_len(mem_block_t* block) | |
15010 | { | |
15011 | return(block->len); | |
15012 | } | |
15013 | ||
15014 | static inline | |
15015 | void | |
15016 | mem_block_set_type(mem_block_t* block, ulint type) | |
15017 | { | |
15018 | ; | |
15019 | ||
15020 | ||
15021 | block->type = type; | |
15022 | } | |
15023 | ||
15024 | static inline | |
15025 | ulint | |
15026 | mem_block_get_type(mem_block_t* block) | |
15027 | { | |
15028 | return(block->type); | |
15029 | } | |
15030 | ||
15031 | static inline | |
15032 | void | |
15033 | mem_block_set_free(mem_block_t* block, ulint free) | |
15034 | { | |
15035 | ; | |
15036 | ; | |
15037 | ||
15038 | block->free = free; | |
15039 | } | |
15040 | ||
15041 | static inline | |
15042 | ulint | |
15043 | mem_block_get_free(mem_block_t* block) | |
15044 | { | |
15045 | return(block->free); | |
15046 | } | |
15047 | ||
15048 | static inline | |
15049 | void | |
15050 | mem_block_set_start(mem_block_t* block, ulint start) | |
15051 | { | |
15052 | ; | |
15053 | ||
15054 | block->start = start; | |
15055 | } | |
15056 | ||
15057 | static inline | |
15058 | ulint | |
15059 | mem_block_get_start(mem_block_t* block) | |
15060 | { | |
15061 | return(block->start); | |
15062 | } | |
15063 | ||
15064 | ||
15065 | ||
15066 | static inline | |
15067 | void* | |
15068 | mem_heap_alloc( | |
15069 | ||
15070 | ||
15071 | mem_heap_t* heap, | |
15072 | ulint n) | |
15073 | ||
15074 | ||
15075 | { | |
15076 | mem_block_t* block; | |
15077 | void* buf; | |
15078 | ulint free; | |
15079 | ||
15080 | ; | |
15081 | ||
15082 | block = (heap->base).end; | |
15083 | ||
15084 | ; | |
15085 | ||
15086 | ||
15087 | ||
15088 | ||
15089 | if (mem_block_get_len(block) | |
15090 | < mem_block_get_free(block) + ut_calc_align((n), 8)) { | |
15091 | ||
15092 | block = mem_heap_add_block(heap, n); | |
15093 | ||
15094 | if (block == ((void *)0)) { | |
15095 | ||
15096 | return(((void *)0)); | |
15097 | } | |
15098 | } | |
15099 | ||
15100 | free = mem_block_get_free(block); | |
15101 | ||
15102 | buf = (unsigned char*)block + free; | |
15103 | ||
15104 | mem_block_set_free(block, free + ut_calc_align((n), 8)); | |
15105 | # 178 "./include/mem0mem.ic" | |
15106 | return(buf); | |
15107 | } | |
15108 | ||
15109 | ||
15110 | ||
15111 | static inline | |
15112 | unsigned char* | |
15113 | mem_heap_get_heap_top( | |
15114 | ||
15115 | ||
15116 | mem_heap_t* heap) | |
15117 | { | |
15118 | mem_block_t* block; | |
15119 | unsigned char* buf; | |
15120 | ||
15121 | ; | |
15122 | ||
15123 | block = (heap->base).end; | |
15124 | ||
15125 | buf = (unsigned char*)block + mem_block_get_free(block); | |
15126 | ||
15127 | return(buf); | |
15128 | } | |
15129 | ||
15130 | ||
15131 | ||
15132 | ||
15133 | ||
15134 | static inline | |
15135 | void | |
15136 | mem_heap_free_heap_top( | |
15137 | ||
15138 | mem_heap_t* heap, | |
15139 | unsigned char* old_top) | |
15140 | { | |
15141 | mem_block_t* block; | |
15142 | mem_block_t* prev_block; | |
15143 | ||
15144 | ||
15145 | ||
15146 | ||
15147 | ||
15148 | ||
15149 | ; | |
15150 | # 237 "./include/mem0mem.ic" | |
15151 | block = (heap->base).end; | |
15152 | ||
15153 | while (block != ((void *)0)) { | |
15154 | if (((unsigned char*)block + mem_block_get_free(block) >= old_top) | |
15155 | && ((unsigned char*)block <= old_top)) { | |
15156 | ||
15157 | ||
15158 | break; | |
15159 | } | |
15160 | ||
15161 | ||
15162 | ||
15163 | ||
15164 | prev_block = (((block)->list).prev); | |
15165 | ||
15166 | mem_heap_block_free(heap, block); | |
15167 | ||
15168 | block = prev_block; | |
15169 | } | |
15170 | ||
15171 | ; | |
15172 | ||
15173 | ||
15174 | mem_block_set_free(block, old_top - (unsigned char*)block); | |
15175 | # 279 "./include/mem0mem.ic" | |
15176 | if ((heap != block) && (mem_block_get_free(block) == | |
15177 | mem_block_get_start(block))) { | |
15178 | mem_heap_block_free(heap, block); | |
15179 | } | |
15180 | } | |
15181 | ||
15182 | ||
15183 | ||
15184 | static inline | |
15185 | void | |
15186 | mem_heap_empty( | |
15187 | ||
15188 | mem_heap_t* heap) | |
15189 | { | |
15190 | mem_heap_free_heap_top(heap, (unsigned char*)heap + mem_block_get_start(heap)); | |
15191 | ||
15192 | if (heap->free_block) { | |
15193 | mem_heap_free_block_free(heap); | |
15194 | } | |
15195 | } | |
15196 | ||
15197 | ||
15198 | ||
15199 | ||
15200 | static inline | |
15201 | void* | |
15202 | mem_heap_get_top( | |
15203 | ||
15204 | ||
15205 | mem_heap_t* heap, | |
15206 | ulint n) | |
15207 | { | |
15208 | mem_block_t* block; | |
15209 | void* buf; | |
15210 | ||
15211 | ; | |
15212 | ||
15213 | block = (heap->base).end; | |
15214 | ||
15215 | buf = (unsigned char*)block + mem_block_get_free(block) - ut_calc_align((n), 8); | |
15216 | # 332 "./include/mem0mem.ic" | |
15217 | return(buf); | |
15218 | } | |
15219 | ||
15220 | ||
15221 | ||
15222 | ||
15223 | static inline | |
15224 | void | |
15225 | mem_heap_free_top( | |
15226 | ||
15227 | mem_heap_t* heap, | |
15228 | ulint n) | |
15229 | { | |
15230 | mem_block_t* block; | |
15231 | ||
15232 | ; | |
15233 | ||
15234 | block = (heap->base).end; | |
15235 | ||
15236 | ||
15237 | mem_block_set_free(block, mem_block_get_free(block) | |
15238 | - ut_calc_align((n), 8)); | |
15239 | # 365 "./include/mem0mem.ic" | |
15240 | if ((heap != block) && (mem_block_get_free(block) == | |
15241 | mem_block_get_start(block))) { | |
15242 | mem_heap_block_free(heap, block); | |
15243 | } | |
15244 | } | |
15245 | ||
15246 | ||
15247 | ||
15248 | ||
15249 | ||
15250 | static inline | |
15251 | mem_heap_t* | |
15252 | mem_heap_create_func( | |
15253 | ||
15254 | ||
15255 | ulint n, | |
15256 | ||
15257 | ||
15258 | ||
15259 | ||
15260 | ||
15261 | void* init_block, | |
15262 | # 396 "./include/mem0mem.ic" | |
15263 | ulint type, | |
15264 | ||
15265 | const char* file_name, | |
15266 | ulint line | |
15267 | ) | |
15268 | { | |
15269 | mem_block_t* block; | |
15270 | ||
15271 | if (n > 0) { | |
15272 | block = mem_heap_create_block(((void *)0), n, init_block, type, | |
15273 | file_name, line); | |
15274 | } else { | |
15275 | block = mem_heap_create_block(((void *)0), 64, | |
15276 | init_block, type, file_name, line); | |
15277 | } | |
15278 | ||
15279 | ; | |
15280 | ||
15281 | { (block->base).count = 0; (block->base).start = ((void *)0); (block->base).end = ((void *)0);}; | |
15282 | ||
15283 | ||
15284 | { ; ((block->base).count)++; ((block)->list).next = (block->base).start; ((block)->list).prev = ((void *)0); if ((block->base).start != ((void *)0)) { (((block->base).start)->list).prev = (block); } (block->base).start = (block); if ((block->base).end == ((void *)0)) { (block->base).end = (block); }}; | |
15285 | # 430 "./include/mem0mem.ic" | |
15286 | return(block); | |
15287 | } | |
15288 | ||
15289 | ||
15290 | ||
15291 | ||
15292 | ||
15293 | static inline | |
15294 | void | |
15295 | mem_heap_free_func( | |
15296 | ||
15297 | mem_heap_t* heap, | |
15298 | const char* file_name __attribute__((unused)), | |
15299 | ||
15300 | ulint line __attribute__((unused))) | |
15301 | { | |
15302 | mem_block_t* block; | |
15303 | mem_block_t* prev_block; | |
15304 | ||
15305 | ; | |
15306 | ||
15307 | block = (heap->base).end; | |
15308 | # 462 "./include/mem0mem.ic" | |
15309 | if (heap->free_block) { | |
15310 | mem_heap_free_block_free(heap); | |
15311 | } | |
15312 | ||
15313 | while (block != ((void *)0)) { | |
15314 | ||
15315 | ||
15316 | ||
15317 | prev_block = (((block)->list).prev); | |
15318 | ||
15319 | mem_heap_block_free(heap, block); | |
15320 | ||
15321 | block = prev_block; | |
15322 | } | |
15323 | } | |
15324 | ||
15325 | ||
15326 | ||
15327 | ||
15328 | ||
15329 | ||
15330 | static inline | |
15331 | void* | |
15332 | mem_alloc_func( | |
15333 | ||
15334 | ||
15335 | ||
15336 | ulint n, | |
15337 | const char* file_name, | |
15338 | ulint line | |
15339 | ) | |
15340 | { | |
15341 | mem_heap_t* heap; | |
15342 | void* buf; | |
15343 | ||
15344 | heap = mem_heap_create_func(n, ((void *)0), 0, file_name, | |
15345 | line); | |
15346 | if (heap == ((void *)0)) { | |
15347 | ||
15348 | return(((void *)0)); | |
15349 | } | |
15350 | ||
15351 | ||
15352 | ||
15353 | ||
15354 | ||
15355 | ||
15356 | buf = mem_heap_alloc(heap, n); | |
15357 | ||
15358 | do { if (__builtin_expect(!((ulint)((unsigned char*)heap == (unsigned char*)buf - ut_calc_align(sizeof(mem_block_info_t), 8) - 0)), (0))) { ut_dbg_assertion_failed("(byte*)heap == (byte*)buf - MEM_BLOCK_HEADER_SIZE - MEM_FIELD_HEADER_SIZE", "./include/mem0mem.ic", (ulint) 512); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/mem0mem.ic", (ulint) 512); } while (0); } while (0); | |
15359 | ||
15360 | return(buf); | |
15361 | } | |
15362 | ||
15363 | ||
15364 | ||
15365 | ||
15366 | ||
15367 | static inline | |
15368 | void | |
15369 | mem_free_func( | |
15370 | ||
15371 | void* ptr, | |
15372 | const char* file_name, | |
15373 | ulint line | |
15374 | ) | |
15375 | { | |
15376 | mem_heap_t* heap; | |
15377 | ||
15378 | heap = (mem_heap_t*)((unsigned char*)ptr - ut_calc_align(sizeof(mem_block_info_t), 8) | |
15379 | - 0); | |
15380 | mem_heap_free_func(heap, file_name, line); | |
15381 | } | |
15382 | ||
15383 | ||
15384 | ||
15385 | static inline | |
15386 | ulint | |
15387 | mem_heap_get_size( | |
15388 | ||
15389 | mem_heap_t* heap) | |
15390 | { | |
15391 | mem_block_t* block; | |
15392 | ulint size = 0; | |
15393 | ||
15394 | ; | |
15395 | ||
15396 | block = heap; | |
15397 | ||
15398 | while (block != ((void *)0)) { | |
15399 | ||
15400 | size += mem_block_get_len(block); | |
15401 | block = (((block)->list).next); | |
15402 | } | |
15403 | ||
15404 | if (heap->free_block) { | |
15405 | size += (2 * 8192); | |
15406 | } | |
15407 | ||
15408 | return(size); | |
15409 | } | |
15410 | ||
15411 | ||
15412 | ||
15413 | static inline | |
15414 | char* | |
15415 | mem_strdup( | |
15416 | ||
15417 | ||
15418 | ||
15419 | const char* str) | |
15420 | { | |
15421 | ulint len = strlen(str) + 1; | |
15422 | return(memcpy(mem_alloc_func((len), "./include/mem0mem.ic", 575), str, len)); | |
15423 | } | |
15424 | ||
15425 | ||
15426 | ||
15427 | static inline | |
15428 | char* | |
15429 | mem_strdupl( | |
15430 | ||
15431 | ||
15432 | ||
15433 | const char* str, | |
15434 | ulint len) | |
15435 | { | |
15436 | char* s = mem_alloc_func((len + 1), "./include/mem0mem.ic", 589); | |
15437 | s[len] = 0; | |
15438 | return(memcpy(s, str, len)); | |
15439 | } | |
15440 | ||
15441 | ||
15442 | ||
15443 | static inline | |
15444 | char* | |
15445 | mem_strdupq( | |
15446 | ||
15447 | ||
15448 | ||
15449 | const char* str, | |
15450 | char q) | |
15451 | { | |
15452 | char* dst; | |
15453 | char* d; | |
15454 | const char* s = str; | |
15455 | size_t len = strlen(str) + 3; | |
15456 | ||
15457 | while((s = (__extension__ (__builtin_constant_p (q) && !__builtin_constant_p (s) && (q) == '\0' ? (char *) __rawmemchr (s, q) : __builtin_strchr (s, q)))) != ((void *)0)) { | |
15458 | s++; | |
15459 | len++; | |
15460 | } | |
15461 | ||
15462 | d = dst = mem_alloc_func((len), "./include/mem0mem.ic", 615); | |
15463 | *d++ = q; | |
15464 | s = str; | |
15465 | while(*s) { | |
15466 | if ((*d++ = *s++) == q) { | |
15467 | *d++ = q; | |
15468 | } | |
15469 | } | |
15470 | *d++ = q; | |
15471 | *d++ = '\0'; | |
15472 | ; | |
15473 | return(dst); | |
15474 | } | |
15475 | ||
15476 | ||
15477 | ||
15478 | ||
15479 | static inline | |
15480 | char* | |
15481 | mem_heap_strdupl( | |
15482 | ||
15483 | ||
15484 | mem_heap_t* heap, | |
15485 | const char* str, | |
15486 | ulint len) | |
15487 | { | |
15488 | char* s = mem_heap_alloc(heap, len + 1); | |
15489 | s[len] = 0; | |
15490 | return(memcpy(s, str, len)); | |
15491 | } | |
15492 | # 372 "./include/mem0mem.h" 2 | |
15493 | # 14 "./include/hash0hash.h" 2 | |
15494 | ||
15495 | ||
15496 | typedef struct hash_table_struct hash_table_t; | |
15497 | typedef struct hash_cell_struct hash_cell_t; | |
15498 | ||
15499 | typedef void* hash_node_t; | |
15500 | # 28 "./include/hash0hash.h" | |
15501 | hash_table_t* | |
15502 | hash0_create( | |
15503 | ||
15504 | ||
15505 | ulint n); | |
15506 | ||
15507 | ||
15508 | ||
15509 | void | |
15510 | hash_create_mutexes( | |
15511 | ||
15512 | hash_table_t* table, | |
15513 | ulint n_mutexes, | |
15514 | ulint sync_level); | |
15515 | ||
15516 | ||
15517 | ||
15518 | ||
15519 | void | |
15520 | hash_table_free( | |
15521 | ||
15522 | hash_table_t* table); | |
15523 | ||
15524 | ||
15525 | static inline | |
15526 | ulint | |
15527 | hash_calc_hash( | |
15528 | ||
15529 | ||
15530 | ulint fold, | |
15531 | hash_table_t* table); | |
15532 | # 154 "./include/hash0hash.h" | |
15533 | static inline | |
15534 | hash_cell_t* | |
15535 | hash_get_nth_cell( | |
15536 | ||
15537 | ||
15538 | hash_table_t* table, | |
15539 | ulint n); | |
15540 | ||
15541 | ||
15542 | static inline | |
15543 | ulint | |
15544 | hash_get_n_cells( | |
15545 | ||
15546 | ||
15547 | hash_table_t* table); | |
15548 | # 230 "./include/hash0hash.h" | |
15549 | static inline | |
15550 | ulint | |
15551 | hash_get_mutex_no( | |
15552 | ||
15553 | ||
15554 | hash_table_t* table, | |
15555 | ulint fold); | |
15556 | ||
15557 | ||
15558 | static inline | |
15559 | mem_heap_t* | |
15560 | hash_get_nth_heap( | |
15561 | ||
15562 | ||
15563 | hash_table_t* table, | |
15564 | ulint i); | |
15565 | ||
15566 | ||
15567 | static inline | |
15568 | mem_heap_t* | |
15569 | hash_get_heap( | |
15570 | ||
15571 | ||
15572 | hash_table_t* table, | |
15573 | ulint fold); | |
15574 | ||
15575 | ||
15576 | static inline | |
15577 | ib_mutex_t* | |
15578 | hash_get_nth_mutex( | |
15579 | ||
15580 | ||
15581 | hash_table_t* table, | |
15582 | ulint i); | |
15583 | ||
15584 | ||
15585 | static inline | |
15586 | ib_mutex_t* | |
15587 | hash_get_mutex( | |
15588 | ||
15589 | ||
15590 | hash_table_t* table, | |
15591 | ulint fold); | |
15592 | ||
15593 | ||
15594 | ||
15595 | void | |
15596 | hash_mutex_enter( | |
15597 | ||
15598 | hash_table_t* table, | |
15599 | ulint fold); | |
15600 | ||
15601 | ||
15602 | ||
15603 | void | |
15604 | hash_mutex_exit( | |
15605 | ||
15606 | hash_table_t* table, | |
15607 | ulint fold); | |
15608 | ||
15609 | ||
15610 | ||
15611 | void | |
15612 | hash_mutex_enter_all( | |
15613 | ||
15614 | hash_table_t* table); | |
15615 | ||
15616 | ||
15617 | ||
15618 | void | |
15619 | hash_mutex_exit_all( | |
15620 | ||
15621 | hash_table_t* table); | |
15622 | ||
15623 | ||
15624 | struct hash_cell_struct{ | |
15625 | void* node; | |
15626 | }; | |
15627 | ||
15628 | ||
15629 | struct hash_table_struct { | |
15630 | ulint adaptive; | |
15631 | ||
15632 | ulint n_cells; | |
15633 | hash_cell_t* array; | |
15634 | ulint n_mutexes; | |
15635 | ||
15636 | ib_mutex_t* mutexes; | |
15637 | ||
15638 | mem_heap_t** heaps; | |
15639 | ||
15640 | ||
15641 | ||
15642 | mem_heap_t* heap; | |
15643 | ulint magic_n; | |
15644 | }; | |
15645 | ||
15646 | ||
15647 | ||
15648 | ||
15649 | # 1 "./include/hash0hash.ic" 1 | |
15650 | # 13 "./include/hash0hash.ic" | |
15651 | static inline | |
15652 | hash_cell_t* | |
15653 | hash_get_nth_cell( | |
15654 | ||
15655 | ||
15656 | hash_table_t* table, | |
15657 | ulint n) | |
15658 | { | |
15659 | ; | |
15660 | ||
15661 | return(table->array + n); | |
15662 | } | |
15663 | ||
15664 | ||
15665 | ||
15666 | static inline | |
15667 | ulint | |
15668 | hash_get_n_cells( | |
15669 | ||
15670 | ||
15671 | hash_table_t* table) | |
15672 | { | |
15673 | return(table->n_cells); | |
15674 | } | |
15675 | ||
15676 | ||
15677 | ||
15678 | static inline | |
15679 | ulint | |
15680 | hash_calc_hash( | |
15681 | ||
15682 | ||
15683 | ulint fold, | |
15684 | hash_table_t* table) | |
15685 | { | |
15686 | return(ut_hash_ulint(fold, table->n_cells)); | |
15687 | } | |
15688 | ||
15689 | ||
15690 | ||
15691 | static inline | |
15692 | ulint | |
15693 | hash_get_mutex_no( | |
15694 | ||
15695 | ||
15696 | hash_table_t* table, | |
15697 | ulint fold) | |
15698 | { | |
15699 | return(ut_2pow_remainder(fold, table->n_mutexes)); | |
15700 | } | |
15701 | ||
15702 | ||
15703 | ||
15704 | static inline | |
15705 | mem_heap_t* | |
15706 | hash_get_nth_heap( | |
15707 | ||
15708 | ||
15709 | hash_table_t* table, | |
15710 | ulint i) | |
15711 | { | |
15712 | ; | |
15713 | ||
15714 | return(table->heaps[i]); | |
15715 | } | |
15716 | ||
15717 | ||
15718 | ||
15719 | static inline | |
15720 | mem_heap_t* | |
15721 | hash_get_heap( | |
15722 | ||
15723 | ||
15724 | hash_table_t* table, | |
15725 | ulint fold) | |
15726 | { | |
15727 | ulint i; | |
15728 | ||
15729 | if (table->heap) { | |
15730 | return(table->heap); | |
15731 | } | |
15732 | ||
15733 | i = hash_get_mutex_no(table, fold); | |
15734 | ||
15735 | return(hash_get_nth_heap(table, i)); | |
15736 | } | |
15737 | ||
15738 | ||
15739 | ||
15740 | static inline | |
15741 | ib_mutex_t* | |
15742 | hash_get_nth_mutex( | |
15743 | ||
15744 | ||
15745 | hash_table_t* table, | |
15746 | ulint i) | |
15747 | { | |
15748 | ; | |
15749 | ||
15750 | return(table->mutexes + i); | |
15751 | } | |
15752 | ||
15753 | ||
15754 | ||
15755 | static inline | |
15756 | ib_mutex_t* | |
15757 | hash_get_mutex( | |
15758 | ||
15759 | ||
15760 | hash_table_t* table, | |
15761 | ulint fold) | |
15762 | { | |
15763 | ulint i; | |
15764 | ||
15765 | i = hash_get_mutex_no(table, fold); | |
15766 | ||
15767 | return(hash_get_nth_mutex(table, i)); | |
15768 | } | |
15769 | # 331 "./include/hash0hash.h" 2 | |
15770 | # 32 "./include/buf0buf.h" 2 | |
15771 | ||
15772 | # 1 "./include/os0proc.h" 1 | |
15773 | # 16 "./include/os0proc.h" | |
15774 | # 1 "/usr/include/sys/ipc.h" 1 3 4 | |
15775 | # 29 "/usr/include/sys/ipc.h" 3 4 | |
15776 | # 1 "/usr/include/bits/ipctypes.h" 1 3 4 | |
15777 | # 33 "/usr/include/bits/ipctypes.h" 3 4 | |
15778 | typedef int __ipc_pid_t; | |
15779 | # 30 "/usr/include/sys/ipc.h" 2 3 4 | |
15780 | # 1 "/usr/include/bits/ipc.h" 1 3 4 | |
15781 | # 43 "/usr/include/bits/ipc.h" 3 4 | |
15782 | struct ipc_perm | |
15783 | { | |
15784 | __key_t __key; | |
15785 | __uid_t uid; | |
15786 | __gid_t gid; | |
15787 | __uid_t cuid; | |
15788 | __gid_t cgid; | |
15789 | __mode_t mode; | |
15790 | __uint32_t __seq; | |
15791 | __uint32_t __pad1; | |
15792 | __uint64_t __unused1; | |
15793 | __uint64_t __unused2; | |
15794 | }; | |
15795 | ||
15796 | ||
15797 | ||
15798 | ||
15799 | ||
15800 | extern int __ipc (int __call, int __first, int __second, int __third, | |
15801 | void *__ptr) __attribute__ ((__nothrow__)); | |
15802 | ||
15803 | ||
15804 | # 31 "/usr/include/sys/ipc.h" 2 3 4 | |
15805 | # 52 "/usr/include/sys/ipc.h" 3 4 | |
15806 | ||
15807 | ||
15808 | ||
15809 | extern key_t ftok (__const char *__pathname, int __proj_id) __attribute__ ((__nothrow__)); | |
15810 | ||
15811 | ||
15812 | # 17 "./include/os0proc.h" 2 | |
15813 | # 1 "/usr/include/sys/shm.h" 1 3 4 | |
15814 | # 25 "/usr/include/sys/shm.h" 3 4 | |
15815 | # 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4 | |
15816 | # 26 "/usr/include/sys/shm.h" 2 3 4 | |
15817 | ||
15818 | ||
15819 | ||
15820 | ||
15821 | ||
15822 | # 1 "/usr/include/bits/shm.h" 1 3 4 | |
15823 | # 40 "/usr/include/bits/shm.h" 3 4 | |
15824 | ||
15825 | ||
15826 | ||
15827 | ||
15828 | extern int __getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); | |
15829 | ||
15830 | ||
15831 | ||
15832 | typedef unsigned long int shmatt_t; | |
15833 | ||
15834 | ||
15835 | struct shmid_ds | |
15836 | { | |
15837 | struct ipc_perm shm_perm; | |
15838 | ||
15839 | ||
15840 | ||
15841 | __time_t shm_atime; | |
15842 | ||
15843 | ||
15844 | ||
15845 | __time_t shm_dtime; | |
15846 | ||
15847 | ||
15848 | ||
15849 | __time_t shm_ctime; | |
15850 | ||
15851 | ||
15852 | ||
15853 | size_t shm_segsz; | |
15854 | __pid_t shm_cpid; | |
15855 | __pid_t shm_lpid; | |
15856 | shmatt_t shm_nattch; | |
15857 | unsigned long __unused5; | |
15858 | unsigned long __unused6; | |
15859 | }; | |
15860 | # 89 "/usr/include/bits/shm.h" 3 4 | |
15861 | struct shminfo | |
15862 | { | |
15863 | unsigned long int shmmax; | |
15864 | unsigned long int shmmin; | |
15865 | unsigned long int shmmni; | |
15866 | unsigned long int shmseg; | |
15867 | unsigned long int shmall; | |
15868 | unsigned long int __unused1; | |
15869 | unsigned long int __unused2; | |
15870 | unsigned long int __unused3; | |
15871 | unsigned long int __unused4; | |
15872 | }; | |
15873 | ||
15874 | struct shm_info | |
15875 | { | |
15876 | int used_ids; | |
15877 | unsigned long int shm_tot; | |
15878 | unsigned long int shm_rss; | |
15879 | unsigned long int shm_swp; | |
15880 | unsigned long int swap_attempts; | |
15881 | unsigned long int swap_successes; | |
15882 | }; | |
15883 | ||
15884 | ||
15885 | ||
15886 | ||
15887 | # 32 "/usr/include/sys/shm.h" 2 3 4 | |
15888 | # 45 "/usr/include/sys/shm.h" 3 4 | |
15889 | ||
15890 | ||
15891 | ||
15892 | ||
15893 | ||
15894 | ||
15895 | extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __attribute__ ((__nothrow__)); | |
15896 | ||
15897 | ||
15898 | extern int shmget (key_t __key, size_t __size, int __shmflg) __attribute__ ((__nothrow__)); | |
15899 | ||
15900 | ||
15901 | extern void *shmat (int __shmid, __const void *__shmaddr, int __shmflg) | |
15902 | __attribute__ ((__nothrow__)); | |
15903 | ||
15904 | ||
15905 | extern int shmdt (__const void *__shmaddr) __attribute__ ((__nothrow__)); | |
15906 | ||
15907 | ||
15908 | # 18 "./include/os0proc.h" 2 | |
15909 | ||
15910 | ||
15911 | typedef void* os_process_t; | |
15912 | typedef unsigned long int os_process_id_t; | |
15913 | ||
15914 | ||
15915 | ||
15916 | ||
15917 | ||
15918 | typedef ulint os_awe_t; | |
15919 | ||
15920 | ||
15921 | ||
15922 | ||
15923 | ||
15924 | ||
15925 | ||
15926 | extern ulint os_use_large_pages; | |
15927 | ||
15928 | extern ulint os_large_page_size; | |
15929 | ||
15930 | ||
15931 | ||
15932 | ||
15933 | ||
15934 | ||
15935 | ulint | |
15936 | os_awe_enable_lock_pages_in_mem(void); | |
15937 | ||
15938 | ||
15939 | ||
15940 | ||
15941 | ||
15942 | ||
15943 | ||
15944 | ulint | |
15945 | os_awe_allocate_physical_mem( | |
15946 | ||
15947 | ||
15948 | os_awe_t** page_info, | |
15949 | ||
15950 | ||
15951 | ||
15952 | ulint n_megabytes); | |
15953 | ||
15954 | ||
15955 | ||
15956 | ||
15957 | unsigned char* | |
15958 | os_awe_allocate_virtual_mem_window( | |
15959 | ||
15960 | ||
15961 | ||
15962 | ulint size); | |
15963 | # 83 "./include/os0proc.h" | |
15964 | ulint | |
15965 | os_awe_map_physical_mem_to_window( | |
15966 | ||
15967 | ||
15968 | ||
15969 | unsigned char* ptr, | |
15970 | ||
15971 | ||
15972 | ||
15973 | ulint n_mem_pages, | |
15974 | ||
15975 | os_awe_t* page_info); | |
15976 | # 103 "./include/os0proc.h" | |
15977 | ulint | |
15978 | os_proc_get_number(void); | |
15979 | ||
15980 | ||
15981 | ||
15982 | ||
15983 | void* | |
15984 | os_mem_alloc_nocache( | |
15985 | ||
15986 | ||
15987 | ulint n); | |
15988 | ||
15989 | ||
15990 | ||
15991 | void* | |
15992 | os_mem_alloc_large( | |
15993 | ||
15994 | ||
15995 | ulint n, | |
15996 | ulint set_to_zero, | |
15997 | ||
15998 | ulint assert_on_error); | |
15999 | ||
16000 | ||
16001 | ||
16002 | ||
16003 | void | |
16004 | os_mem_free_large( | |
16005 | ||
16006 | void *ptr); | |
16007 | ||
16008 | ||
16009 | ||
16010 | ||
16011 | void | |
16012 | os_process_set_priority_boost( | |
16013 | ||
16014 | ulint do_boost); | |
16015 | ||
16016 | ||
16017 | ||
16018 | # 1 "./include/os0proc.ic" 1 | |
16019 | # 145 "./include/os0proc.h" 2 | |
16020 | # 34 "./include/buf0buf.h" 2 | |
16021 | # 58 "./include/buf0buf.h" | |
16022 | extern buf_pool_t* buf_pool; | |
16023 | ||
16024 | ||
16025 | ||
16026 | ||
16027 | ||
16028 | extern ulint srv_buf_pool_write_requests; | |
16029 | ||
16030 | ||
16031 | ||
16032 | ||
16033 | ||
16034 | buf_pool_t* | |
16035 | buf_pool_init( | |
16036 | ||
16037 | ||
16038 | ||
16039 | ulint max_size, | |
16040 | ||
16041 | ulint curr_size, | |
16042 | ||
16043 | ||
16044 | ulint n_frames); | |
16045 | ||
16046 | ||
16047 | ||
16048 | ||
16049 | ||
16050 | ||
16051 | ||
16052 | static inline | |
16053 | ulint | |
16054 | buf_pool_get_curr_size(void); | |
16055 | ||
16056 | ||
16057 | ||
16058 | ||
16059 | ||
16060 | static inline | |
16061 | ulint | |
16062 | buf_pool_get_max_size(void); | |
16063 | ||
16064 | ||
16065 | ||
16066 | ||
16067 | ||
16068 | static inline | |
16069 | dulint | |
16070 | buf_pool_get_oldest_modification(void); | |
16071 | ||
16072 | ||
16073 | ||
16074 | ||
16075 | ||
16076 | ||
16077 | buf_frame_t* | |
16078 | buf_frame_alloc(void); | |
16079 | ||
16080 | ||
16081 | ||
16082 | ||
16083 | ||
16084 | void | |
16085 | buf_frame_free( | |
16086 | ||
16087 | buf_frame_t* frame); | |
16088 | ||
16089 | ||
16090 | static inline | |
16091 | unsigned char* | |
16092 | buf_frame_copy( | |
16093 | ||
16094 | ||
16095 | unsigned char* buf, | |
16096 | buf_frame_t* frame); | |
16097 | # 165 "./include/buf0buf.h" | |
16098 | ulint | |
16099 | buf_page_optimistic_get_func( | |
16100 | ||
16101 | ||
16102 | ulint rw_latch, | |
16103 | buf_block_t* block, | |
16104 | buf_frame_t* guess, | |
16105 | ||
16106 | dulint modify_clock, | |
16107 | ||
16108 | const char* file, | |
16109 | ulint line, | |
16110 | mtr_t* mtr); | |
16111 | ||
16112 | ||
16113 | ||
16114 | ||
16115 | ||
16116 | static inline | |
16117 | buf_frame_t* | |
16118 | buf_page_get_release_on_io( | |
16119 | ||
16120 | ||
16121 | ||
16122 | ulint space, | |
16123 | ulint offset, | |
16124 | ||
16125 | buf_frame_t* guess, | |
16126 | ulint rw_latch, | |
16127 | ||
16128 | ulint savepoint, | |
16129 | mtr_t* mtr); | |
16130 | ||
16131 | ||
16132 | ||
16133 | ||
16134 | ulint | |
16135 | buf_page_get_known_nowait( | |
16136 | ||
16137 | ||
16138 | ulint rw_latch, | |
16139 | buf_frame_t* guess, | |
16140 | ulint mode, | |
16141 | const char* file, | |
16142 | ulint line, | |
16143 | mtr_t* mtr); | |
16144 | ||
16145 | ||
16146 | ||
16147 | buf_frame_t* | |
16148 | buf_page_get_gen( | |
16149 | ||
16150 | ||
16151 | ulint space, | |
16152 | ulint offset, | |
16153 | ulint rw_latch, | |
16154 | buf_frame_t* guess, | |
16155 | ulint mode, | |
16156 | ||
16157 | const char* file, | |
16158 | ulint line, | |
16159 | mtr_t* mtr); | |
16160 | ||
16161 | ||
16162 | ||
16163 | ||
16164 | ||
16165 | ||
16166 | buf_frame_t* | |
16167 | buf_page_create( | |
16168 | ||
16169 | ||
16170 | ulint space, | |
16171 | ulint offset, | |
16172 | ||
16173 | mtr_t* mtr); | |
16174 | ||
16175 | ||
16176 | ||
16177 | void | |
16178 | buf_page_init_for_backup_restore( | |
16179 | ||
16180 | ulint space, | |
16181 | ulint offset, | |
16182 | ||
16183 | buf_block_t* block); | |
16184 | ||
16185 | ||
16186 | ||
16187 | static inline | |
16188 | void | |
16189 | buf_page_release( | |
16190 | ||
16191 | buf_block_t* block, | |
16192 | ulint rw_latch, | |
16193 | ||
16194 | mtr_t* mtr); | |
16195 | ||
16196 | ||
16197 | ||
16198 | ||
16199 | ||
16200 | void | |
16201 | buf_page_make_young( | |
16202 | ||
16203 | buf_frame_t* frame); | |
16204 | ||
16205 | ||
16206 | ||
16207 | ||
16208 | ulint | |
16209 | buf_page_peek( | |
16210 | ||
16211 | ||
16212 | ||
16213 | ||
16214 | ulint space, | |
16215 | ulint offset); | |
16216 | ||
16217 | ||
16218 | ||
16219 | ||
16220 | ||
16221 | buf_block_t* | |
16222 | buf_page_peek_block( | |
16223 | ||
16224 | ||
16225 | ||
16226 | ||
16227 | ulint space, | |
16228 | ulint offset); | |
16229 | ||
16230 | ||
16231 | ||
16232 | ||
16233 | void | |
16234 | buf_reset_check_index_page_at_flush( | |
16235 | ||
16236 | ulint space, | |
16237 | ulint offset); | |
16238 | ||
16239 | ||
16240 | ||
16241 | ||
16242 | ||
16243 | ||
16244 | buf_block_t* | |
16245 | buf_page_set_file_page_was_freed( | |
16246 | ||
16247 | ||
16248 | ||
16249 | ulint space, | |
16250 | ulint offset); | |
16251 | ||
16252 | ||
16253 | ||
16254 | ||
16255 | ||
16256 | ||
16257 | buf_block_t* | |
16258 | buf_page_reset_file_page_was_freed( | |
16259 | ||
16260 | ||
16261 | ||
16262 | ulint space, | |
16263 | ulint offset); | |
16264 | ||
16265 | ||
16266 | ||
16267 | ||
16268 | static inline | |
16269 | ulint | |
16270 | buf_block_peek_if_too_old( | |
16271 | ||
16272 | ||
16273 | buf_block_t* block); | |
16274 | ||
16275 | ||
16276 | ||
16277 | ||
16278 | ||
16279 | ulint | |
16280 | buf_page_peek_if_search_hashed( | |
16281 | ||
16282 | ||
16283 | ||
16284 | ulint space, | |
16285 | ulint offset); | |
16286 | ||
16287 | ||
16288 | ||
16289 | static inline | |
16290 | dulint | |
16291 | buf_frame_get_newest_modification( | |
16292 | ||
16293 | ||
16294 | buf_frame_t* frame); | |
16295 | ||
16296 | ||
16297 | ||
16298 | ||
16299 | static inline | |
16300 | dulint | |
16301 | buf_frame_modify_clock_inc( | |
16302 | ||
16303 | ||
16304 | buf_frame_t* frame); | |
16305 | ||
16306 | ||
16307 | ||
16308 | ||
16309 | static inline | |
16310 | dulint | |
16311 | buf_block_modify_clock_inc( | |
16312 | ||
16313 | ||
16314 | buf_block_t* block); | |
16315 | ||
16316 | ||
16317 | ||
16318 | static inline | |
16319 | dulint | |
16320 | buf_block_get_modify_clock( | |
16321 | ||
16322 | ||
16323 | buf_block_t* block); | |
16324 | ||
16325 | ||
16326 | ||
16327 | ||
16328 | ||
16329 | ulint | |
16330 | buf_calc_page_new_checksum( | |
16331 | ||
16332 | ||
16333 | unsigned char* page); | |
16334 | # 409 "./include/buf0buf.h" | |
16335 | ulint | |
16336 | buf_calc_page_old_checksum( | |
16337 | ||
16338 | ||
16339 | unsigned char* page); | |
16340 | ||
16341 | ||
16342 | ||
16343 | ulint | |
16344 | buf_page_is_corrupted( | |
16345 | ||
16346 | ||
16347 | unsigned char* read_buf); | |
16348 | ||
16349 | ||
16350 | ||
16351 | static inline | |
16352 | ulint | |
16353 | buf_frame_get_page_no( | |
16354 | ||
16355 | ||
16356 | unsigned char* ptr); | |
16357 | ||
16358 | ||
16359 | ||
16360 | static inline | |
16361 | ulint | |
16362 | buf_frame_get_space_id( | |
16363 | ||
16364 | ||
16365 | unsigned char* ptr); | |
16366 | ||
16367 | ||
16368 | ||
16369 | static inline | |
16370 | void | |
16371 | buf_ptr_get_fsp_addr( | |
16372 | ||
16373 | unsigned char* ptr, | |
16374 | ulint* space, | |
16375 | fil_addr_t* addr); | |
16376 | ||
16377 | ||
16378 | ||
16379 | static inline | |
16380 | ulint | |
16381 | buf_frame_get_lock_hash_val( | |
16382 | ||
16383 | ||
16384 | unsigned char* ptr); | |
16385 | ||
16386 | ||
16387 | ||
16388 | static inline | |
16389 | ib_mutex_t* | |
16390 | buf_frame_get_mutex( | |
16391 | ||
16392 | ||
16393 | unsigned char* ptr); | |
16394 | ||
16395 | ||
16396 | static inline | |
16397 | buf_frame_t* | |
16398 | buf_frame_align( | |
16399 | ||
16400 | ||
16401 | unsigned char* ptr); | |
16402 | ||
16403 | ||
16404 | ||
16405 | static inline | |
16406 | ulint | |
16407 | buf_pool_is_block( | |
16408 | ||
16409 | ||
16410 | void* ptr); | |
16411 | # 510 "./include/buf0buf.h" | |
16412 | void | |
16413 | buf_page_print( | |
16414 | ||
16415 | unsigned char* read_buf); | |
16416 | ||
16417 | ||
16418 | ||
16419 | ||
16420 | ulint | |
16421 | buf_get_n_pending_ios(void); | |
16422 | ||
16423 | ||
16424 | ||
16425 | ||
16426 | void | |
16427 | buf_print_io( | |
16428 | ||
16429 | FILE* file); | |
16430 | ||
16431 | ||
16432 | ||
16433 | ||
16434 | ulint | |
16435 | buf_get_modified_ratio_pct(void); | |
16436 | ||
16437 | ||
16438 | ||
16439 | ||
16440 | void | |
16441 | buf_refresh_io_stats(void); | |
16442 | ||
16443 | ||
16444 | ||
16445 | ||
16446 | ulint | |
16447 | buf_all_freed(void); | |
16448 | ||
16449 | ||
16450 | ||
16451 | ||
16452 | ||
16453 | ulint | |
16454 | buf_pool_check_no_pending_io(void); | |
16455 | ||
16456 | ||
16457 | ||
16458 | ||
16459 | ||
16460 | ||
16461 | ||
16462 | void | |
16463 | buf_pool_invalidate(void); | |
16464 | # 572 "./include/buf0buf.h" | |
16465 | void | |
16466 | buf_awe_map_page_to_frame( | |
16467 | ||
16468 | buf_block_t* block, | |
16469 | ||
16470 | ulint add_to_mapped_list); | |
16471 | # 596 "./include/buf0buf.h" | |
16472 | static inline | |
16473 | buf_frame_t* | |
16474 | buf_block_get_frame( | |
16475 | ||
16476 | ||
16477 | buf_block_t* block); | |
16478 | ||
16479 | ||
16480 | static inline | |
16481 | ulint | |
16482 | buf_block_get_space( | |
16483 | ||
16484 | ||
16485 | buf_block_t* block); | |
16486 | ||
16487 | ||
16488 | static inline | |
16489 | ulint | |
16490 | buf_block_get_page_no( | |
16491 | ||
16492 | ||
16493 | buf_block_t* block); | |
16494 | ||
16495 | ||
16496 | static inline | |
16497 | buf_block_t* | |
16498 | buf_block_align( | |
16499 | ||
16500 | ||
16501 | unsigned char* ptr); | |
16502 | ||
16503 | ||
16504 | ||
16505 | static inline | |
16506 | ulint | |
16507 | buf_page_io_query( | |
16508 | ||
16509 | ||
16510 | buf_block_t* block); | |
16511 | ||
16512 | ||
16513 | static inline | |
16514 | buf_block_t* | |
16515 | buf_pool_get_nth_block( | |
16516 | ||
16517 | ||
16518 | buf_pool_t* pool, | |
16519 | ulint i); | |
16520 | # 656 "./include/buf0buf.h" | |
16521 | buf_block_t* | |
16522 | buf_page_init_for_read( | |
16523 | ||
16524 | ||
16525 | ulint* err, | |
16526 | ulint mode, | |
16527 | ulint space, | |
16528 | ib_longlong tablespace_version, | |
16529 | ||
16530 | ||
16531 | ulint offset); | |
16532 | ||
16533 | ||
16534 | ||
16535 | ||
16536 | void | |
16537 | buf_page_io_complete( | |
16538 | ||
16539 | buf_block_t* block); | |
16540 | ||
16541 | ||
16542 | ||
16543 | static inline | |
16544 | ulint | |
16545 | buf_page_address_fold( | |
16546 | ||
16547 | ||
16548 | ulint space, | |
16549 | ulint offset); | |
16550 | ||
16551 | ||
16552 | static inline | |
16553 | buf_block_t* | |
16554 | buf_page_hash_get( | |
16555 | ||
16556 | ||
16557 | ulint space, | |
16558 | ulint offset); | |
16559 | ||
16560 | ||
16561 | ||
16562 | static inline | |
16563 | ulint | |
16564 | buf_pool_clock_tic(void); | |
16565 | ||
16566 | ||
16567 | ||
16568 | ||
16569 | ||
16570 | ulint | |
16571 | buf_get_free_list_len(void); | |
16572 | ||
16573 | ||
16574 | void buf_pool_dump(void); | |
16575 | buf_block_t* buf_pool_get_nth_block_no_inline(buf_pool_t* pool, ulint i); | |
16576 | ||
16577 | ||
16578 | ||
16579 | ||
16580 | ||
16581 | ||
16582 | void | |
16583 | buf_io_counter_control(void); | |
16584 | ||
16585 | ||
16586 | void | |
16587 | buf_io_counter_clear(void); | |
16588 | ||
16589 | ||
16590 | ||
16591 | ||
16592 | struct buf_block_struct{ | |
16593 | ||
16594 | ||
16595 | ||
16596 | ulint magic_n; | |
16597 | ulint state; | |
16598 | ||
16599 | ||
16600 | ||
16601 | ||
16602 | unsigned char* frame; | |
16603 | ||
16604 | ||
16605 | ||
16606 | ||
16607 | ||
16608 | ||
16609 | ||
16610 | os_awe_t* awe_info; | |
16611 | ||
16612 | ||
16613 | ||
16614 | ||
16615 | ulint space; | |
16616 | ulint offset; | |
16617 | ulint lock_hash_val; | |
16618 | ||
16619 | ib_mutex_t mutex; | |
16620 | ||
16621 | ||
16622 | ||
16623 | ||
16624 | ||
16625 | rw_lock_t lock; | |
16626 | ||
16627 | buf_block_t* hash; | |
16628 | ||
16629 | ulint check_index_page_at_flush; | |
16630 | # 774 "./include/buf0buf.h" | |
16631 | struct { buf_block_t * prev; buf_block_t * next; } flush_list; | |
16632 | ||
16633 | ||
16634 | dulint newest_modification; | |
16635 | ||
16636 | ||
16637 | ||
16638 | dulint oldest_modification; | |
16639 | ||
16640 | ||
16641 | ||
16642 | ||
16643 | ||
16644 | ulint flush_type; | |
16645 | ||
16646 | ||
16647 | ||
16648 | ||
16649 | ||
16650 | ||
16651 | struct { buf_block_t * prev; buf_block_t * next; } free; | |
16652 | ||
16653 | ulint in_free_list; | |
16654 | ||
16655 | struct { buf_block_t * prev; buf_block_t * next; } LRU; | |
16656 | ||
16657 | struct { buf_block_t * prev; buf_block_t * next; } awe_LRU_free_mapped; | |
16658 | ||
16659 | ||
16660 | ||
16661 | ulint in_LRU_list; | |
16662 | ||
16663 | ulint LRU_position; | |
16664 | ||
16665 | ||
16666 | ||
16667 | ||
16668 | ||
16669 | ||
16670 | ||
16671 | ulint freed_page_clock; | |
16672 | ||
16673 | ||
16674 | ||
16675 | ||
16676 | ||
16677 | ulint old; | |
16678 | ||
16679 | ulint accessed; | |
16680 | ||
16681 | ||
16682 | ||
16683 | ||
16684 | ||
16685 | ||
16686 | ulint buf_fix_count; | |
16687 | ||
16688 | ||
16689 | ulint io_fix; | |
16690 | ||
16691 | ||
16692 | ||
16693 | ||
16694 | ||
16695 | dulint modify_clock; | |
16696 | # 853 "./include/buf0buf.h" | |
16697 | ulint n_hash_helps; | |
16698 | ||
16699 | ulint n_fields; | |
16700 | ||
16701 | ulint n_bytes; | |
16702 | ||
16703 | ulint side; | |
16704 | # 873 "./include/buf0buf.h" | |
16705 | ulint is_hashed; | |
16706 | ||
16707 | ||
16708 | ||
16709 | ||
16710 | ||
16711 | ulint n_pointers; | |
16712 | ||
16713 | ||
16714 | ulint curr_n_fields; | |
16715 | ||
16716 | ulint curr_n_bytes; | |
16717 | ulint curr_side; | |
16718 | ||
16719 | ||
16720 | dict_index_t* index; | |
16721 | # 897 "./include/buf0buf.h" | |
16722 | ulint file_page_was_freed; | |
16723 | ||
16724 | ||
16725 | }; | |
16726 | ||
16727 | ||
16728 | ||
16729 | ||
16730 | ||
16731 | ||
16732 | struct buf_pool_struct{ | |
16733 | ||
16734 | ||
16735 | ||
16736 | ib_mutex_t mutex; | |
16737 | ||
16738 | ||
16739 | unsigned char* frame_mem; | |
16740 | ||
16741 | ||
16742 | ||
16743 | ||
16744 | unsigned char* frame_zero; | |
16745 | ||
16746 | ||
16747 | unsigned char* high_end; | |
16748 | ||
16749 | ulint n_frames; | |
16750 | buf_block_t* blocks; | |
16751 | buf_block_t** blocks_of_frames; | |
16752 | # 937 "./include/buf0buf.h" | |
16753 | os_awe_t* awe_info; | |
16754 | ||
16755 | ||
16756 | ulint max_size; | |
16757 | ||
16758 | ulint curr_size; | |
16759 | ||
16760 | ||
16761 | hash_table_t* io_counter_hash; | |
16762 | mem_heap_t* io_counter_heap; | |
16763 | ulint io_counters; | |
16764 | hash_table_t* page_hash; | |
16765 | rw_lock_t hash_latch; | |
16766 | ||
16767 | ulint n_pend_reads; | |
16768 | ||
16769 | time_t last_printout_time; | |
16770 | ||
16771 | ulint n_pages_read; | |
16772 | ulint n_pages_written; | |
16773 | ulint n_pages_created; | |
16774 | ||
16775 | ulint n_page_gets; | |
16776 | ||
16777 | ||
16778 | ||
16779 | ||
16780 | ||
16781 | ulint n_pages_awe_remapped; | |
16782 | ||
16783 | ||
16784 | ulint n_page_gets_old; | |
16785 | ||
16786 | ||
16787 | ulint n_pages_read_old; | |
16788 | ||
16789 | ulint n_pages_written_old; | |
16790 | ulint n_pages_created_old; | |
16791 | ||
16792 | ulint n_pages_awe_remapped_old; | |
16793 | ||
16794 | ||
16795 | struct { ulint count; buf_block_t * start; buf_block_t * end; } flush_list; | |
16796 | ||
16797 | ||
16798 | ib_mutex_t flush_list_mutex; | |
16799 | ulint init_flush[3 + 1]; | |
16800 | ||
16801 | ||
16802 | ulint n_flush[3 + 1]; | |
16803 | ||
16804 | ||
16805 | os_event_t no_flush[3 + 1]; | |
16806 | ||
16807 | ||
16808 | ||
16809 | ulint ulint_clock; | |
16810 | ||
16811 | ||
16812 | ||
16813 | ulint freed_page_clock; | |
16814 | ||
16815 | ||
16816 | ||
16817 | ||
16818 | ||
16819 | ||
16820 | ulint LRU_flush_ended; | |
16821 | ||
16822 | ||
16823 | ||
16824 | ||
16825 | ||
16826 | ||
16827 | struct { ulint count; buf_block_t * start; buf_block_t * end; } free; | |
16828 | ||
16829 | ||
16830 | ||
16831 | ||
16832 | ib_mutex_t free_mutex; | |
16833 | struct { ulint count; buf_block_t * start; buf_block_t * end; } LRU; | |
16834 | ||
16835 | ib_mutex_t LRU_mutex; | |
16836 | buf_block_t* LRU_old; | |
16837 | ||
16838 | ||
16839 | ulint LRU_old_len; | |
16840 | ||
16841 | ||
16842 | ||
16843 | ||
16844 | ||
16845 | struct { ulint count; buf_block_t * start; buf_block_t * end; } awe_LRU_free_mapped; | |
16846 | ||
16847 | ||
16848 | ||
16849 | ||
16850 | ||
16851 | }; | |
16852 | ||
16853 | struct buf_io_counter_struct{ | |
16854 | ulint space; | |
16855 | ulint offset; | |
16856 | buf_io_counter_t* hash; | |
16857 | ulint index_id; | |
16858 | ulint n_read; | |
16859 | ulint n_write; | |
16860 | }; | |
16861 | # 1104 "./include/buf0buf.h" | |
16862 | # 1 "./include/buf0buf.ic" 1 | |
16863 | # 9 "./include/buf0buf.ic" | |
16864 | # 1 "./include/buf0flu.h" 1 | |
16865 | # 20 "./include/buf0flu.h" | |
16866 | void | |
16867 | buf_flush_write_complete( | |
16868 | ||
16869 | buf_block_t* block); | |
16870 | ||
16871 | ||
16872 | ||
16873 | ||
16874 | void | |
16875 | buf_flush_free_margin( | |
16876 | ||
16877 | ulint wait); | |
16878 | ||
16879 | ||
16880 | ||
16881 | void | |
16882 | buf_flush_init_for_writing( | |
16883 | ||
16884 | unsigned char* page, | |
16885 | dulint newest_lsn, | |
16886 | ulint space, | |
16887 | ulint page_no); | |
16888 | ||
16889 | ||
16890 | ||
16891 | ||
16892 | ||
16893 | ||
16894 | ||
16895 | ulint | |
16896 | buf_flush_batch( | |
16897 | ||
16898 | ||
16899 | ||
16900 | ulint flush_type, | |
16901 | ||
16902 | ||
16903 | ulint min_n, | |
16904 | ||
16905 | ||
16906 | dulint lsn_limit); | |
16907 | ||
16908 | ||
16909 | ||
16910 | ||
16911 | ||
16912 | ||
16913 | void | |
16914 | buf_flush_wait_batch_end( | |
16915 | ||
16916 | ulint type); | |
16917 | ||
16918 | ||
16919 | ||
16920 | ||
16921 | static inline | |
16922 | void | |
16923 | buf_flush_note_modification( | |
16924 | ||
16925 | buf_block_t* block, | |
16926 | mtr_t* mtr); | |
16927 | ||
16928 | ||
16929 | static inline | |
16930 | void | |
16931 | buf_flush_recv_note_modification( | |
16932 | ||
16933 | buf_block_t* block, | |
16934 | dulint start_lsn, | |
16935 | ||
16936 | dulint end_lsn); | |
16937 | ||
16938 | ||
16939 | ||
16940 | ||
16941 | ulint | |
16942 | buf_flush_ready_for_replace( | |
16943 | ||
16944 | ||
16945 | buf_block_t* block); | |
16946 | ||
16947 | ||
16948 | ||
16949 | ||
16950 | ulint | |
16951 | buf_flush_validate(void); | |
16952 | # 118 "./include/buf0flu.h" | |
16953 | # 1 "./include/buf0flu.ic" 1 | |
16954 | # 9 "./include/buf0flu.ic" | |
16955 | # 1 "./include/buf0buf.h" 1 | |
16956 | # 10 "./include/buf0flu.ic" 2 | |
16957 | # 1 "./include/mtr0mtr.h" 1 | |
16958 | # 14 "./include/mtr0mtr.h" | |
16959 | # 1 "./include/dyn0dyn.h" 1 | |
16960 | # 16 "./include/dyn0dyn.h" | |
16961 | typedef struct dyn_block_struct dyn_block_t; | |
16962 | typedef dyn_block_t dyn_array_t; | |
16963 | # 26 "./include/dyn0dyn.h" | |
16964 | static inline | |
16965 | dyn_array_t* | |
16966 | dyn_array_create( | |
16967 | ||
16968 | ||
16969 | dyn_array_t* arr); | |
16970 | ||
16971 | ||
16972 | ||
16973 | static inline | |
16974 | void | |
16975 | dyn_array_free( | |
16976 | ||
16977 | dyn_array_t* arr); | |
16978 | ||
16979 | ||
16980 | ||
16981 | ||
16982 | static inline | |
16983 | unsigned char* | |
16984 | dyn_array_open( | |
16985 | ||
16986 | ||
16987 | dyn_array_t* arr, | |
16988 | ulint size); | |
16989 | ||
16990 | ||
16991 | ||
16992 | static inline | |
16993 | void | |
16994 | dyn_array_close( | |
16995 | ||
16996 | dyn_array_t* arr, | |
16997 | unsigned char* ptr); | |
16998 | ||
16999 | ||
17000 | ||
17001 | ||
17002 | static inline | |
17003 | void* | |
17004 | dyn_array_push( | |
17005 | ||
17006 | ||
17007 | dyn_array_t* arr, | |
17008 | ulint size); | |
17009 | ||
17010 | ||
17011 | static inline | |
17012 | void* | |
17013 | dyn_array_get_element( | |
17014 | ||
17015 | ||
17016 | dyn_array_t* arr, | |
17017 | ulint pos); | |
17018 | ||
17019 | ||
17020 | ||
17021 | static inline | |
17022 | ulint | |
17023 | dyn_array_get_data_size( | |
17024 | ||
17025 | ||
17026 | dyn_array_t* arr); | |
17027 | ||
17028 | ||
17029 | static inline | |
17030 | dyn_block_t* | |
17031 | dyn_array_get_first_block( | |
17032 | ||
17033 | dyn_array_t* arr); | |
17034 | ||
17035 | ||
17036 | static inline | |
17037 | dyn_block_t* | |
17038 | dyn_array_get_last_block( | |
17039 | ||
17040 | dyn_array_t* arr); | |
17041 | ||
17042 | ||
17043 | static inline | |
17044 | dyn_block_t* | |
17045 | dyn_array_get_next_block( | |
17046 | ||
17047 | ||
17048 | dyn_array_t* arr, | |
17049 | dyn_block_t* block); | |
17050 | ||
17051 | ||
17052 | static inline | |
17053 | ulint | |
17054 | dyn_block_get_used( | |
17055 | ||
17056 | ||
17057 | dyn_block_t* block); | |
17058 | ||
17059 | ||
17060 | static inline | |
17061 | unsigned char* | |
17062 | dyn_block_get_data( | |
17063 | ||
17064 | ||
17065 | dyn_block_t* block); | |
17066 | ||
17067 | ||
17068 | static inline | |
17069 | void | |
17070 | dyn_push_string( | |
17071 | ||
17072 | dyn_array_t* arr, | |
17073 | const unsigned char* str, | |
17074 | ulint len); | |
17075 | ||
17076 | ||
17077 | ||
17078 | ||
17079 | ||
17080 | struct dyn_block_struct{ | |
17081 | mem_heap_t* heap; | |
17082 | ||
17083 | ulint used; | |
17084 | unsigned char data[512]; | |
17085 | ||
17086 | struct { ulint count; dyn_block_t * start; dyn_block_t * end; } base; | |
17087 | ||
17088 | ||
17089 | struct { dyn_block_t * prev; dyn_block_t * next; } list; | |
17090 | ||
17091 | ||
17092 | ||
17093 | ||
17094 | ||
17095 | ||
17096 | ||
17097 | }; | |
17098 | ||
17099 | ||
17100 | ||
17101 | # 1 "./include/dyn0dyn.ic" 1 | |
17102 | # 15 "./include/dyn0dyn.ic" | |
17103 | dyn_block_t* | |
17104 | dyn_array_add_block( | |
17105 | ||
17106 | ||
17107 | dyn_array_t* arr); | |
17108 | ||
17109 | ||
17110 | ||
17111 | ||
17112 | static inline | |
17113 | dyn_block_t* | |
17114 | dyn_array_get_first_block( | |
17115 | ||
17116 | dyn_array_t* arr) | |
17117 | { | |
17118 | return(arr); | |
17119 | } | |
17120 | ||
17121 | ||
17122 | ||
17123 | static inline | |
17124 | dyn_block_t* | |
17125 | dyn_array_get_last_block( | |
17126 | ||
17127 | dyn_array_t* arr) | |
17128 | { | |
17129 | if (arr->heap == ((void *)0)) { | |
17130 | ||
17131 | return(arr); | |
17132 | } | |
17133 | ||
17134 | return((arr->base).end); | |
17135 | } | |
17136 | ||
17137 | ||
17138 | ||
17139 | static inline | |
17140 | dyn_block_t* | |
17141 | dyn_array_get_next_block( | |
17142 | ||
17143 | ||
17144 | dyn_array_t* arr, | |
17145 | dyn_block_t* block) | |
17146 | { | |
17147 | ; | |
17148 | ||
17149 | if (arr->heap == ((void *)0)) { | |
17150 | ; | |
17151 | ||
17152 | return(((void *)0)); | |
17153 | } | |
17154 | ||
17155 | return((((block)->list).next)); | |
17156 | } | |
17157 | ||
17158 | ||
17159 | ||
17160 | static inline | |
17161 | ulint | |
17162 | dyn_block_get_used( | |
17163 | ||
17164 | ||
17165 | dyn_block_t* block) | |
17166 | { | |
17167 | ; | |
17168 | ||
17169 | return((block->used) & ~0x1000000UL); | |
17170 | } | |
17171 | ||
17172 | ||
17173 | ||
17174 | static inline | |
17175 | unsigned char* | |
17176 | dyn_block_get_data( | |
17177 | ||
17178 | ||
17179 | dyn_block_t* block) | |
17180 | { | |
17181 | ; | |
17182 | ||
17183 | return(block->data); | |
17184 | } | |
17185 | ||
17186 | ||
17187 | ||
17188 | static inline | |
17189 | dyn_array_t* | |
17190 | dyn_array_create( | |
17191 | ||
17192 | ||
17193 | dyn_array_t* arr) | |
17194 | ||
17195 | { | |
17196 | ; | |
17197 | ; | |
17198 | ||
17199 | arr->heap = ((void *)0); | |
17200 | arr->used = 0; | |
17201 | ||
17202 | ||
17203 | ||
17204 | ||
17205 | ||
17206 | return(arr); | |
17207 | } | |
17208 | ||
17209 | ||
17210 | ||
17211 | static inline | |
17212 | void | |
17213 | dyn_array_free( | |
17214 | ||
17215 | dyn_array_t* arr) | |
17216 | { | |
17217 | if (arr->heap != ((void *)0)) { | |
17218 | mem_heap_free_func( (arr->heap), "./include/dyn0dyn.ic", 130); | |
17219 | } | |
17220 | ||
17221 | ||
17222 | ||
17223 | ||
17224 | } | |
17225 | ||
17226 | ||
17227 | ||
17228 | ||
17229 | static inline | |
17230 | void* | |
17231 | dyn_array_push( | |
17232 | ||
17233 | ||
17234 | dyn_array_t* arr, | |
17235 | ulint size) | |
17236 | { | |
17237 | dyn_block_t* block; | |
17238 | ulint used; | |
17239 | ||
17240 | ; | |
17241 | ; | |
17242 | ; | |
17243 | ; | |
17244 | ||
17245 | block = arr; | |
17246 | used = block->used; | |
17247 | ||
17248 | if (used + size > 512) { | |
17249 | ||
17250 | ||
17251 | block = dyn_array_get_last_block(arr); | |
17252 | used = block->used; | |
17253 | ||
17254 | if (used + size > 512) { | |
17255 | block = dyn_array_add_block(arr); | |
17256 | used = block->used; | |
17257 | } | |
17258 | } | |
17259 | ||
17260 | block->used = used + size; | |
17261 | ; | |
17262 | ||
17263 | return((block->data) + used); | |
17264 | } | |
17265 | ||
17266 | ||
17267 | ||
17268 | ||
17269 | ||
17270 | static inline | |
17271 | unsigned char* | |
17272 | dyn_array_open( | |
17273 | ||
17274 | ||
17275 | dyn_array_t* arr, | |
17276 | ulint size) | |
17277 | ||
17278 | { | |
17279 | dyn_block_t* block; | |
17280 | ulint used; | |
17281 | ||
17282 | ; | |
17283 | ; | |
17284 | ; | |
17285 | ; | |
17286 | ||
17287 | block = arr; | |
17288 | used = block->used; | |
17289 | ||
17290 | if (used + size > 512) { | |
17291 | ||
17292 | ||
17293 | block = dyn_array_get_last_block(arr); | |
17294 | used = block->used; | |
17295 | ||
17296 | if (used + size > 512) { | |
17297 | block = dyn_array_add_block(arr); | |
17298 | used = block->used; | |
17299 | do { if (__builtin_expect(!((ulint)(size <= 512)), (0))) { ut_dbg_assertion_failed("size <= DYN_ARRAY_DATA_SIZE", "./include/dyn0dyn.ic", (ulint) 211); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dyn0dyn.ic", (ulint) 211); } while (0); } while (0); | |
17300 | } | |
17301 | } | |
17302 | ||
17303 | ; | |
17304 | ||
17305 | ||
17306 | ||
17307 | ||
17308 | ||
17309 | return((block->data) + used); | |
17310 | } | |
17311 | ||
17312 | ||
17313 | ||
17314 | static inline | |
17315 | void | |
17316 | dyn_array_close( | |
17317 | ||
17318 | dyn_array_t* arr, | |
17319 | unsigned char* ptr) | |
17320 | { | |
17321 | dyn_block_t* block; | |
17322 | ||
17323 | ; | |
17324 | ; | |
17325 | ||
17326 | block = dyn_array_get_last_block(arr); | |
17327 | ||
17328 | ; | |
17329 | ||
17330 | block->used = ptr - block->data; | |
17331 | ||
17332 | ; | |
17333 | ||
17334 | ||
17335 | ||
17336 | ||
17337 | } | |
17338 | ||
17339 | ||
17340 | ||
17341 | static inline | |
17342 | void* | |
17343 | dyn_array_get_element( | |
17344 | ||
17345 | ||
17346 | dyn_array_t* arr, | |
17347 | ulint pos) | |
17348 | ||
17349 | { | |
17350 | dyn_block_t* block; | |
17351 | ulint used; | |
17352 | ||
17353 | ; | |
17354 | ; | |
17355 | ||
17356 | ||
17357 | block = dyn_array_get_first_block(arr); | |
17358 | ||
17359 | if (arr->heap != ((void *)0)) { | |
17360 | used = dyn_block_get_used(block); | |
17361 | ||
17362 | while (pos >= used) { | |
17363 | pos -= used; | |
17364 | block = (((block)->list).next); | |
17365 | ; | |
17366 | ||
17367 | used = dyn_block_get_used(block); | |
17368 | } | |
17369 | } | |
17370 | ||
17371 | ; | |
17372 | ; | |
17373 | ||
17374 | return(block->data + pos); | |
17375 | } | |
17376 | ||
17377 | ||
17378 | ||
17379 | static inline | |
17380 | ulint | |
17381 | dyn_array_get_data_size( | |
17382 | ||
17383 | ||
17384 | dyn_array_t* arr) | |
17385 | { | |
17386 | dyn_block_t* block; | |
17387 | ulint sum = 0; | |
17388 | ||
17389 | ; | |
17390 | ; | |
17391 | ||
17392 | if (arr->heap == ((void *)0)) { | |
17393 | ||
17394 | return(arr->used); | |
17395 | } | |
17396 | ||
17397 | ||
17398 | block = dyn_array_get_first_block(arr); | |
17399 | ||
17400 | while (block != ((void *)0)) { | |
17401 | sum += dyn_block_get_used(block); | |
17402 | block = dyn_array_get_next_block(arr, block); | |
17403 | } | |
17404 | ||
17405 | return(sum); | |
17406 | } | |
17407 | ||
17408 | ||
17409 | ||
17410 | static inline | |
17411 | void | |
17412 | dyn_push_string( | |
17413 | ||
17414 | dyn_array_t* arr, | |
17415 | const unsigned char* str, | |
17416 | ulint len) | |
17417 | { | |
17418 | ulint n_copied; | |
17419 | ||
17420 | while (len > 0) { | |
17421 | if (len > 512) { | |
17422 | n_copied = 512; | |
17423 | } else { | |
17424 | n_copied = len; | |
17425 | } | |
17426 | ||
17427 | memcpy(dyn_array_push(arr, n_copied), str, n_copied); | |
17428 | ||
17429 | str += n_copied; | |
17430 | len -= n_copied; | |
17431 | } | |
17432 | } | |
17433 | # 164 "./include/dyn0dyn.h" 2 | |
17434 | # 15 "./include/mtr0mtr.h" 2 | |
17435 | ||
17436 | ||
17437 | ||
17438 | ||
17439 | # 1 "./include/page0types.h" 1 | |
17440 | # 17 "./include/page0types.h" | |
17441 | typedef unsigned char ib_page_t; | |
17442 | typedef struct page_search_struct page_search_t; | |
17443 | typedef struct page_cur_struct page_cur_t; | |
17444 | # 20 "./include/mtr0mtr.h" 2 | |
17445 | # 139 "./include/mtr0mtr.h" | |
17446 | static inline | |
17447 | mtr_t* | |
17448 | mtr_start( | |
17449 | ||
17450 | ||
17451 | ||
17452 | mtr_t* mtr); | |
17453 | ||
17454 | ||
17455 | ||
17456 | ||
17457 | mtr_t* | |
17458 | mtr_start_noninline( | |
17459 | ||
17460 | ||
17461 | ||
17462 | mtr_t* mtr); | |
17463 | ||
17464 | ||
17465 | ||
17466 | void | |
17467 | mtr_commit( | |
17468 | ||
17469 | mtr_t* mtr); | |
17470 | ||
17471 | ||
17472 | static inline | |
17473 | ulint | |
17474 | mtr_set_savepoint( | |
17475 | ||
17476 | ||
17477 | mtr_t* mtr); | |
17478 | ||
17479 | ||
17480 | ||
17481 | ||
17482 | ||
17483 | void | |
17484 | mtr_rollback_to_savepoint( | |
17485 | ||
17486 | mtr_t* mtr, | |
17487 | ulint savepoint); | |
17488 | ||
17489 | ||
17490 | ||
17491 | static inline | |
17492 | void | |
17493 | mtr_release_s_latch_at_savepoint( | |
17494 | ||
17495 | mtr_t* mtr, | |
17496 | ulint savepoint, | |
17497 | rw_lock_t* lock); | |
17498 | ||
17499 | ||
17500 | static inline | |
17501 | ulint | |
17502 | mtr_get_log_mode( | |
17503 | ||
17504 | ||
17505 | mtr_t* mtr); | |
17506 | ||
17507 | ||
17508 | static inline | |
17509 | ulint | |
17510 | mtr_set_log_mode( | |
17511 | ||
17512 | ||
17513 | mtr_t* mtr, | |
17514 | ulint mode); | |
17515 | ||
17516 | ||
17517 | ||
17518 | ulint | |
17519 | mtr_read_ulint( | |
17520 | ||
17521 | ||
17522 | unsigned char* ptr, | |
17523 | ulint type, | |
17524 | mtr_t* mtr); | |
17525 | ||
17526 | ||
17527 | ||
17528 | dulint | |
17529 | mtr_read_dulint( | |
17530 | ||
17531 | ||
17532 | unsigned char* ptr, | |
17533 | mtr_t* mtr); | |
17534 | # 238 "./include/mtr0mtr.h" | |
17535 | static inline | |
17536 | void | |
17537 | mtr_s_lock_func( | |
17538 | ||
17539 | rw_lock_t* lock, | |
17540 | const char* file, | |
17541 | ulint line, | |
17542 | mtr_t* mtr); | |
17543 | ||
17544 | ||
17545 | ||
17546 | static inline | |
17547 | void | |
17548 | mtr_x_lock_func( | |
17549 | ||
17550 | rw_lock_t* lock, | |
17551 | const char* file, | |
17552 | ulint line, | |
17553 | mtr_t* mtr); | |
17554 | ||
17555 | ||
17556 | ||
17557 | ||
17558 | void | |
17559 | mtr_memo_release( | |
17560 | ||
17561 | mtr_t* mtr, | |
17562 | void* object, | |
17563 | ulint type); | |
17564 | ||
17565 | ||
17566 | static inline | |
17567 | ulint | |
17568 | mtr_memo_contains( | |
17569 | ||
17570 | ||
17571 | mtr_t* mtr, | |
17572 | void* object, | |
17573 | ulint type); | |
17574 | ||
17575 | ||
17576 | ||
17577 | void | |
17578 | mtr_print( | |
17579 | ||
17580 | mtr_t* mtr); | |
17581 | ||
17582 | ||
17583 | ||
17584 | ||
17585 | ||
17586 | ||
17587 | static inline | |
17588 | dyn_array_t* | |
17589 | mtr_get_log( | |
17590 | ||
17591 | ||
17592 | mtr_t* mtr); | |
17593 | ||
17594 | ||
17595 | static inline | |
17596 | void | |
17597 | mtr_memo_push( | |
17598 | ||
17599 | mtr_t* mtr, | |
17600 | void* object, | |
17601 | ulint type); | |
17602 | ||
17603 | ||
17604 | ||
17605 | typedef struct mtr_memo_slot_struct mtr_memo_slot_t; | |
17606 | struct mtr_memo_slot_struct{ | |
17607 | ulint type; | |
17608 | void* object; | |
17609 | }; | |
17610 | ||
17611 | ||
17612 | struct mtr_struct{ | |
17613 | ulint state; | |
17614 | dyn_array_t memo; | |
17615 | dyn_array_t log; | |
17616 | ulint modifications; | |
17617 | ||
17618 | ||
17619 | ulint n_log_recs; | |
17620 | ||
17621 | ||
17622 | ulint log_mode; | |
17623 | ||
17624 | dulint start_lsn; | |
17625 | ||
17626 | dulint end_lsn; | |
17627 | ||
17628 | ulint magic_n; | |
17629 | }; | |
17630 | # 341 "./include/mtr0mtr.h" | |
17631 | # 1 "./include/mtr0mtr.ic" 1 | |
17632 | # 16 "./include/mtr0mtr.ic" | |
17633 | static inline | |
17634 | mtr_t* | |
17635 | mtr_start( | |
17636 | ||
17637 | ||
17638 | ||
17639 | mtr_t* mtr) | |
17640 | { | |
17641 | dyn_array_create(&(mtr->memo)); | |
17642 | dyn_array_create(&(mtr->log)); | |
17643 | ||
17644 | mtr->log_mode = 21; | |
17645 | mtr->modifications = (0); | |
17646 | mtr->n_log_recs = 0; | |
17647 | ||
17648 | ||
17649 | ||
17650 | ||
17651 | ||
17652 | return(mtr); | |
17653 | } | |
17654 | ||
17655 | ||
17656 | ||
17657 | static inline | |
17658 | void | |
17659 | mtr_memo_push( | |
17660 | ||
17661 | mtr_t* mtr, | |
17662 | void* object, | |
17663 | ulint type) | |
17664 | { | |
17665 | dyn_array_t* memo; | |
17666 | mtr_memo_slot_t* slot; | |
17667 | ||
17668 | ; | |
17669 | ; | |
17670 | ; | |
17671 | ; | |
17672 | ; | |
17673 | ||
17674 | memo = &(mtr->memo); | |
17675 | ||
17676 | slot = dyn_array_push(memo, sizeof(mtr_memo_slot_t)); | |
17677 | ||
17678 | slot->object = object; | |
17679 | slot->type = type; | |
17680 | } | |
17681 | ||
17682 | ||
17683 | ||
17684 | static inline | |
17685 | ulint | |
17686 | mtr_set_savepoint( | |
17687 | ||
17688 | ||
17689 | mtr_t* mtr) | |
17690 | { | |
17691 | dyn_array_t* memo; | |
17692 | ||
17693 | ; | |
17694 | ; | |
17695 | ||
17696 | memo = &(mtr->memo); | |
17697 | ||
17698 | return(dyn_array_get_data_size(memo)); | |
17699 | } | |
17700 | ||
17701 | ||
17702 | ||
17703 | ||
17704 | static inline | |
17705 | void | |
17706 | mtr_release_s_latch_at_savepoint( | |
17707 | ||
17708 | mtr_t* mtr, | |
17709 | ulint savepoint, | |
17710 | rw_lock_t* lock) | |
17711 | { | |
17712 | mtr_memo_slot_t* slot; | |
17713 | dyn_array_t* memo; | |
17714 | ||
17715 | ; | |
17716 | ; | |
17717 | ; | |
17718 | ||
17719 | memo = &(mtr->memo); | |
17720 | ||
17721 | ; | |
17722 | ||
17723 | slot = dyn_array_get_element(memo, savepoint); | |
17724 | ||
17725 | ; | |
17726 | ; | |
17727 | ||
17728 | rw_lock_s_unlock_func(lock); | |
17729 | ||
17730 | slot->object = ((void *)0); | |
17731 | } | |
17732 | ||
17733 | ||
17734 | ||
17735 | static inline | |
17736 | ulint | |
17737 | mtr_memo_contains( | |
17738 | ||
17739 | ||
17740 | mtr_t* mtr, | |
17741 | void* object, | |
17742 | ulint type) | |
17743 | { | |
17744 | mtr_memo_slot_t* slot; | |
17745 | dyn_array_t* memo; | |
17746 | ulint offset; | |
17747 | ||
17748 | ; | |
17749 | ; | |
17750 | ||
17751 | memo = &(mtr->memo); | |
17752 | ||
17753 | offset = dyn_array_get_data_size(memo); | |
17754 | ||
17755 | while (offset > 0) { | |
17756 | offset -= sizeof(mtr_memo_slot_t); | |
17757 | ||
17758 | slot = dyn_array_get_element(memo, offset); | |
17759 | ||
17760 | if ((object == slot->object) && (type == slot->type)) { | |
17761 | ||
17762 | return((1)); | |
17763 | } | |
17764 | } | |
17765 | ||
17766 | return((0)); | |
17767 | } | |
17768 | ||
17769 | ||
17770 | ||
17771 | static inline | |
17772 | dyn_array_t* | |
17773 | mtr_get_log( | |
17774 | ||
17775 | ||
17776 | mtr_t* mtr) | |
17777 | { | |
17778 | ; | |
17779 | ; | |
17780 | ||
17781 | return(&(mtr->log)); | |
17782 | } | |
17783 | ||
17784 | ||
17785 | ||
17786 | static inline | |
17787 | ulint | |
17788 | mtr_get_log_mode( | |
17789 | ||
17790 | ||
17791 | mtr_t* mtr) | |
17792 | { | |
17793 | ; | |
17794 | ; | |
17795 | ; | |
17796 | ||
17797 | return(mtr->log_mode); | |
17798 | } | |
17799 | ||
17800 | ||
17801 | ||
17802 | static inline | |
17803 | ulint | |
17804 | mtr_set_log_mode( | |
17805 | ||
17806 | ||
17807 | mtr_t* mtr, | |
17808 | ulint mode) | |
17809 | { | |
17810 | ulint old_mode; | |
17811 | ||
17812 | ; | |
17813 | ; | |
17814 | ; | |
17815 | ||
17816 | old_mode = mtr->log_mode; | |
17817 | ||
17818 | if ((mode == 24) && (old_mode == 22)) { | |
17819 | ||
17820 | } else { | |
17821 | mtr->log_mode = mode; | |
17822 | } | |
17823 | ||
17824 | ; | |
17825 | ; | |
17826 | ||
17827 | return(old_mode); | |
17828 | } | |
17829 | ||
17830 | ||
17831 | ||
17832 | static inline | |
17833 | void | |
17834 | mtr_s_lock_func( | |
17835 | ||
17836 | rw_lock_t* lock, | |
17837 | const char* file, | |
17838 | ulint line, | |
17839 | mtr_t* mtr) | |
17840 | { | |
17841 | ; | |
17842 | ; | |
17843 | ||
17844 | rw_lock_s_lock_func(lock, 0, file, line); | |
17845 | ||
17846 | mtr_memo_push(mtr, lock, 55); | |
17847 | } | |
17848 | ||
17849 | ||
17850 | ||
17851 | static inline | |
17852 | void | |
17853 | mtr_x_lock_func( | |
17854 | ||
17855 | rw_lock_t* lock, | |
17856 | const char* file, | |
17857 | ulint line, | |
17858 | mtr_t* mtr) | |
17859 | { | |
17860 | ; | |
17861 | ; | |
17862 | ||
17863 | rw_lock_x_lock_func(lock, 0, file, line); | |
17864 | ||
17865 | mtr_memo_push(mtr, lock, 56); | |
17866 | } | |
17867 | # 342 "./include/mtr0mtr.h" 2 | |
17868 | # 11 "./include/buf0flu.ic" 2 | |
17869 | ||
17870 | ||
17871 | ||
17872 | ||
17873 | void | |
17874 | buf_flush_insert_into_flush_list( | |
17875 | ||
17876 | buf_block_t* block); | |
17877 | ||
17878 | ||
17879 | ||
17880 | ||
17881 | ||
17882 | void | |
17883 | buf_flush_insert_sorted_into_flush_list( | |
17884 | ||
17885 | buf_block_t* block); | |
17886 | ||
17887 | ||
17888 | ||
17889 | ||
17890 | ||
17891 | static inline | |
17892 | void | |
17893 | buf_flush_note_modification( | |
17894 | ||
17895 | buf_block_t* block, | |
17896 | mtr_t* mtr) | |
17897 | { | |
17898 | ; | |
17899 | ; | |
17900 | ; | |
17901 | ||
17902 | ||
17903 | ||
17904 | ||
17905 | ||
17906 | ; | |
17907 | ; | |
17908 | ; | |
17909 | ||
17910 | block->newest_modification = mtr->end_lsn; | |
17911 | ||
17912 | if (ut_dulint_is_zero(block->oldest_modification)) { | |
17913 | ||
17914 | block->oldest_modification = mtr->start_lsn; | |
17915 | ; | |
17916 | ||
17917 | buf_flush_insert_into_flush_list(block); | |
17918 | } else { | |
17919 | ; | |
17920 | ||
17921 | } | |
17922 | ||
17923 | ++srv_buf_pool_write_requests; | |
17924 | } | |
17925 | ||
17926 | ||
17927 | ||
17928 | static inline | |
17929 | void | |
17930 | buf_flush_recv_note_modification( | |
17931 | ||
17932 | buf_block_t* block, | |
17933 | dulint start_lsn, | |
17934 | ||
17935 | dulint end_lsn) | |
17936 | ||
17937 | { | |
17938 | ; | |
17939 | ; | |
17940 | ; | |
17941 | ||
17942 | ||
17943 | ||
17944 | ||
17945 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "./include/buf0flu.ic", 87); | |
17946 | ||
17947 | ; | |
17948 | ||
17949 | block->newest_modification = end_lsn; | |
17950 | ||
17951 | if (ut_dulint_is_zero(block->oldest_modification)) { | |
17952 | ||
17953 | block->oldest_modification = start_lsn; | |
17954 | ||
17955 | ; | |
17956 | ||
17957 | buf_flush_insert_sorted_into_flush_list(block); | |
17958 | } else { | |
17959 | ; | |
17960 | ||
17961 | } | |
17962 | ||
17963 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
17964 | } | |
17965 | # 119 "./include/buf0flu.h" 2 | |
17966 | # 10 "./include/buf0buf.ic" 2 | |
17967 | # 1 "./include/buf0lru.h" 1 | |
17968 | # 25 "./include/buf0lru.h" | |
17969 | void | |
17970 | buf_LRU_try_free_flushed_blocks(void); | |
17971 | ||
17972 | ||
17973 | ||
17974 | ||
17975 | ||
17976 | ||
17977 | ulint | |
17978 | buf_LRU_buf_pool_running_out(void); | |
17979 | # 55 "./include/buf0lru.h" | |
17980 | void | |
17981 | buf_LRU_invalidate_tablespace( | |
17982 | ||
17983 | ulint id); | |
17984 | ||
17985 | ||
17986 | ||
17987 | ||
17988 | ||
17989 | ulint | |
17990 | buf_LRU_get_recent_limit(void); | |
17991 | ||
17992 | ||
17993 | ||
17994 | ||
17995 | ||
17996 | ||
17997 | ulint | |
17998 | buf_LRU_search_and_free_block( | |
17999 | ||
18000 | ||
18001 | ulint n_iterations); | |
18002 | # 87 "./include/buf0lru.h" | |
18003 | buf_block_t* | |
18004 | buf_LRU_get_free_block(void); | |
18005 | ||
18006 | ||
18007 | ||
18008 | ||
18009 | ||
18010 | ||
18011 | ||
18012 | void | |
18013 | buf_LRU_block_free_non_file_page( | |
18014 | ||
18015 | buf_block_t* block); | |
18016 | ||
18017 | ||
18018 | ||
18019 | void | |
18020 | buf_LRU_add_block( | |
18021 | ||
18022 | buf_block_t* block, | |
18023 | ulint old); | |
18024 | ||
18025 | ||
18026 | ||
18027 | ||
18028 | ||
18029 | ||
18030 | void | |
18031 | buf_LRU_make_block_young( | |
18032 | ||
18033 | buf_block_t* block); | |
18034 | ||
18035 | ||
18036 | ||
18037 | void | |
18038 | buf_LRU_make_block_old( | |
18039 | ||
18040 | buf_block_t* block); | |
18041 | ||
18042 | ||
18043 | ||
18044 | ulint | |
18045 | buf_LRU_validate(void); | |
18046 | ||
18047 | ||
18048 | ||
18049 | ||
18050 | void | |
18051 | buf_LRU_print(void); | |
18052 | ||
18053 | ||
18054 | ||
18055 | # 1 "./include/buf0lru.ic" 1 | |
18056 | # 140 "./include/buf0lru.h" 2 | |
18057 | # 11 "./include/buf0buf.ic" 2 | |
18058 | # 1 "./include/buf0rea.h" 1 | |
18059 | # 23 "./include/buf0rea.h" | |
18060 | ulint | |
18061 | buf_read_page( | |
18062 | ||
18063 | ||
18064 | ||
18065 | ulint space, | |
18066 | ulint offset, | |
18067 | trx_t* trx); | |
18068 | # 55 "./include/buf0rea.h" | |
18069 | ulint | |
18070 | buf_read_ahead_linear( | |
18071 | ||
18072 | ||
18073 | ulint space, | |
18074 | ulint offset, | |
18075 | ||
18076 | trx_t* trx); | |
18077 | ||
18078 | ||
18079 | ||
18080 | ||
18081 | ||
18082 | void | |
18083 | buf_read_ibuf_merge_pages( | |
18084 | ||
18085 | ulint sync, | |
18086 | ||
18087 | ||
18088 | ulint* space_ids, | |
18089 | ib_longlong* space_versions, | |
18090 | ||
18091 | ||
18092 | ||
18093 | ||
18094 | ulint* page_nos, | |
18095 | ||
18096 | ulint n_stored); | |
18097 | ||
18098 | ||
18099 | ||
18100 | void | |
18101 | buf_read_recv_pages( | |
18102 | ||
18103 | ulint sync, | |
18104 | ||
18105 | ||
18106 | ulint space, | |
18107 | ulint* page_nos, | |
18108 | ||
18109 | ulint n_stored); | |
18110 | # 12 "./include/buf0buf.ic" 2 | |
18111 | ||
18112 | ||
18113 | ||
18114 | ||
18115 | ||
18116 | void | |
18117 | buf_print_diagnostic( | |
18118 | ||
18119 | mtr_t* mtr, | |
18120 | const buf_block_t* block); | |
18121 | # 32 "./include/buf0buf.ic" | |
18122 | static inline | |
18123 | ulint | |
18124 | buf_block_peek_if_too_old( | |
18125 | ||
18126 | ||
18127 | buf_block_t* block) | |
18128 | { | |
18129 | return(buf_pool->freed_page_clock >= block->freed_page_clock | |
18130 | + 1 + (buf_pool->curr_size / 1024)); | |
18131 | } | |
18132 | ||
18133 | ||
18134 | ||
18135 | ||
18136 | static inline | |
18137 | ulint | |
18138 | buf_pool_get_curr_size(void) | |
18139 | ||
18140 | ||
18141 | { | |
18142 | return((buf_pool->n_frames) * (2 * 8192)); | |
18143 | } | |
18144 | ||
18145 | ||
18146 | ||
18147 | ||
18148 | static inline | |
18149 | ulint | |
18150 | buf_pool_get_max_size(void) | |
18151 | ||
18152 | ||
18153 | { | |
18154 | return((buf_pool->n_frames) * (2 * 8192)); | |
18155 | } | |
18156 | ||
18157 | ||
18158 | ||
18159 | static inline | |
18160 | buf_block_t* | |
18161 | buf_pool_get_nth_block( | |
18162 | ||
18163 | ||
18164 | buf_pool_t* buf_pool, | |
18165 | ulint i) | |
18166 | { | |
18167 | ; | |
18168 | ; | |
18169 | ||
18170 | return(i + buf_pool->blocks); | |
18171 | } | |
18172 | ||
18173 | ||
18174 | ||
18175 | ||
18176 | static inline | |
18177 | ulint | |
18178 | buf_pool_is_block( | |
18179 | ||
18180 | ||
18181 | void* ptr) | |
18182 | { | |
18183 | if ((buf_pool->blocks <= (buf_block_t*)ptr) | |
18184 | && ((buf_block_t*)ptr < buf_pool->blocks + buf_pool->max_size)) { | |
18185 | ||
18186 | return((1)); | |
18187 | } | |
18188 | ||
18189 | return((0)); | |
18190 | } | |
18191 | ||
18192 | ||
18193 | ||
18194 | ||
18195 | static inline | |
18196 | dulint | |
18197 | buf_pool_get_oldest_modification(void) | |
18198 | ||
18199 | ||
18200 | ||
18201 | { | |
18202 | buf_block_t* block; | |
18203 | dulint lsn; | |
18204 | ||
18205 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "./include/buf0buf.ic", 115); | |
18206 | ||
18207 | block = (buf_pool->flush_list).end; | |
18208 | ||
18209 | if (block == ((void *)0)) { | |
18210 | lsn = ut_dulint_zero; | |
18211 | } else { | |
18212 | lsn = block->oldest_modification; | |
18213 | } | |
18214 | ||
18215 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
18216 | ||
18217 | return(lsn); | |
18218 | } | |
18219 | ||
18220 | ||
18221 | ||
18222 | ||
18223 | static inline | |
18224 | ulint | |
18225 | buf_pool_clock_tic(void) | |
18226 | ||
18227 | ||
18228 | { | |
18229 | ||
18230 | ||
18231 | ||
18232 | ||
18233 | buf_pool->ulint_clock++; | |
18234 | ||
18235 | return(buf_pool->ulint_clock); | |
18236 | } | |
18237 | ||
18238 | ||
18239 | ||
18240 | static inline | |
18241 | buf_frame_t* | |
18242 | buf_block_get_frame( | |
18243 | ||
18244 | ||
18245 | buf_block_t* block) | |
18246 | { | |
18247 | ; | |
18248 | ; | |
18249 | ; | |
18250 | ; | |
18251 | ; | |
18252 | ||
18253 | ||
18254 | return(block->frame); | |
18255 | } | |
18256 | ||
18257 | ||
18258 | ||
18259 | static inline | |
18260 | ulint | |
18261 | buf_block_get_space( | |
18262 | ||
18263 | ||
18264 | buf_block_t* block) | |
18265 | { | |
18266 | ; | |
18267 | ; | |
18268 | ; | |
18269 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 179); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 179); } while (0); } while (0); | |
18270 | ; | |
18271 | ||
18272 | return(block->space); | |
18273 | } | |
18274 | ||
18275 | ||
18276 | ||
18277 | static inline | |
18278 | ulint | |
18279 | buf_block_get_page_no( | |
18280 | ||
18281 | ||
18282 | buf_block_t* block) | |
18283 | { | |
18284 | ; | |
18285 | ; | |
18286 | ; | |
18287 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 197); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 197); } while (0); } while (0); | |
18288 | ; | |
18289 | ||
18290 | return(block->offset); | |
18291 | } | |
18292 | ||
18293 | ||
18294 | ||
18295 | static inline | |
18296 | buf_block_t* | |
18297 | buf_block_align( | |
18298 | ||
18299 | ||
18300 | unsigned char* ptr) | |
18301 | { | |
18302 | buf_block_t* block; | |
18303 | buf_frame_t* frame_zero; | |
18304 | ||
18305 | ; | |
18306 | ||
18307 | frame_zero = buf_pool->frame_zero; | |
18308 | ||
18309 | if (__builtin_expect((ulint)ptr < (ulint)frame_zero, (0)) | |
18310 | || __builtin_expect((ulint)ptr > (ulint)(buf_pool->high_end), (0))) { | |
18311 | ||
18312 | ut_print_timestamp(stderr); | |
18313 | fprintf(stderr, | |
18314 | "InnoDB: Error: trying to access a stray pointer %p\n" | |
18315 | "InnoDB: buf pool start is at %p, end at %p\n" | |
18316 | "InnoDB: Probable reason is database corruption or memory\n" | |
18317 | "InnoDB: corruption. If this happens in an InnoDB database recovery, see\n" | |
18318 | "InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n" | |
18319 | "InnoDB: how to force recovery.\n", | |
18320 | ptr, frame_zero, | |
18321 | buf_pool->high_end); | |
18322 | do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 232); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
18323 | } | |
18324 | ||
18325 | block = *(buf_pool->blocks_of_frames + (((ulint)(ptr - frame_zero)) | |
18326 | >> 14)); | |
18327 | return(block); | |
18328 | } | |
18329 | ||
18330 | ||
18331 | ||
18332 | static inline | |
18333 | buf_frame_t* | |
18334 | buf_frame_align( | |
18335 | ||
18336 | ||
18337 | unsigned char* ptr) | |
18338 | { | |
18339 | buf_frame_t* frame; | |
18340 | ||
18341 | ; | |
18342 | ||
18343 | frame = ut_align_down(ptr, (2 * 8192)); | |
18344 | ||
18345 | if (__builtin_expect((ulint)frame < (ulint)(buf_pool->frame_zero), (0)) | |
18346 | || __builtin_expect((ulint)frame >= (ulint)(buf_pool->high_end), (0))) { | |
18347 | ||
18348 | ut_print_timestamp(stderr); | |
18349 | fprintf(stderr, | |
18350 | "InnoDB: Error: trying to access a stray pointer %p\n" | |
18351 | "InnoDB: buf pool start is at %p, end at %p\n" | |
18352 | "InnoDB: Probable reason is database corruption or memory\n" | |
18353 | "InnoDB: corruption. If this happens in an InnoDB database recovery, see\n" | |
18354 | "InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n" | |
18355 | "InnoDB: how to force recovery.\n", | |
18356 | ptr, buf_pool->frame_zero, | |
18357 | buf_pool->high_end); | |
18358 | do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 268); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
18359 | } | |
18360 | ||
18361 | return(frame); | |
18362 | } | |
18363 | ||
18364 | ||
18365 | ||
18366 | ||
18367 | static inline | |
18368 | ulint | |
18369 | buf_frame_get_page_no( | |
18370 | ||
18371 | ||
18372 | unsigned char* ptr) | |
18373 | { | |
18374 | return(buf_block_get_page_no(buf_block_align(ptr))); | |
18375 | } | |
18376 | ||
18377 | ||
18378 | ||
18379 | ||
18380 | static inline | |
18381 | ulint | |
18382 | buf_frame_get_space_id( | |
18383 | ||
18384 | ||
18385 | unsigned char* ptr) | |
18386 | { | |
18387 | return(buf_block_get_space(buf_block_align(ptr))); | |
18388 | } | |
18389 | ||
18390 | ||
18391 | ||
18392 | ||
18393 | static inline | |
18394 | void | |
18395 | buf_ptr_get_fsp_addr( | |
18396 | ||
18397 | unsigned char* ptr, | |
18398 | ulint* space, | |
18399 | fil_addr_t* addr) | |
18400 | { | |
18401 | buf_block_t* block; | |
18402 | ||
18403 | block = buf_block_align(ptr); | |
18404 | ||
18405 | *space = buf_block_get_space(block); | |
18406 | addr->page = buf_block_get_page_no(block); | |
18407 | addr->boffset = ptr - buf_frame_align(ptr); | |
18408 | } | |
18409 | ||
18410 | ||
18411 | ||
18412 | ||
18413 | static inline | |
18414 | ulint | |
18415 | buf_frame_get_lock_hash_val( | |
18416 | ||
18417 | ||
18418 | unsigned char* ptr) | |
18419 | { | |
18420 | buf_block_t* block; | |
18421 | ||
18422 | block = buf_block_align(ptr); | |
18423 | ||
18424 | return(block->lock_hash_val); | |
18425 | } | |
18426 | ||
18427 | ||
18428 | ||
18429 | ||
18430 | static inline | |
18431 | ib_mutex_t* | |
18432 | buf_frame_get_mutex( | |
18433 | ||
18434 | ||
18435 | unsigned char* ptr) | |
18436 | { | |
18437 | buf_block_t* block; | |
18438 | ||
18439 | block = buf_block_align(ptr); | |
18440 | ||
18441 | return(&block->mutex); | |
18442 | } | |
18443 | ||
18444 | ||
18445 | ||
18446 | static inline | |
18447 | unsigned char* | |
18448 | buf_frame_copy( | |
18449 | ||
18450 | ||
18451 | unsigned char* buf, | |
18452 | buf_frame_t* frame) | |
18453 | { | |
18454 | ; | |
18455 | ||
18456 | ut_memcpy(buf, frame, (2 * 8192)); | |
18457 | ||
18458 | return(buf); | |
18459 | } | |
18460 | ||
18461 | ||
18462 | ||
18463 | ||
18464 | static inline | |
18465 | ulint | |
18466 | buf_page_address_fold( | |
18467 | ||
18468 | ||
18469 | ulint space, | |
18470 | ulint offset) | |
18471 | { | |
18472 | return((space << 20) + space + offset); | |
18473 | } | |
18474 | ||
18475 | ||
18476 | ||
18477 | ||
18478 | static inline | |
18479 | ulint | |
18480 | buf_page_io_query( | |
18481 | ||
18482 | ||
18483 | buf_block_t* block) | |
18484 | { | |
18485 | mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 395); | |
18486 | ||
18487 | ; | |
18488 | ; | |
18489 | ||
18490 | if (block->io_fix != 0) { | |
18491 | mutex_exit(&block->mutex); | |
18492 | ||
18493 | return((1)); | |
18494 | } | |
18495 | ||
18496 | mutex_exit(&block->mutex); | |
18497 | ||
18498 | return((0)); | |
18499 | } | |
18500 | ||
18501 | ||
18502 | ||
18503 | ||
18504 | static inline | |
18505 | dulint | |
18506 | buf_frame_get_newest_modification( | |
18507 | ||
18508 | ||
18509 | buf_frame_t* frame) | |
18510 | { | |
18511 | buf_block_t* block; | |
18512 | dulint lsn; | |
18513 | ||
18514 | ; | |
18515 | ||
18516 | block = buf_block_align(frame); | |
18517 | ||
18518 | mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 428); | |
18519 | ||
18520 | if (block->state == 213) { | |
18521 | lsn = block->newest_modification; | |
18522 | } else { | |
18523 | lsn = ut_dulint_zero; | |
18524 | } | |
18525 | ||
18526 | mutex_exit(&block->mutex); | |
18527 | ||
18528 | return(lsn); | |
18529 | } | |
18530 | ||
18531 | ||
18532 | ||
18533 | ||
18534 | ||
18535 | static inline | |
18536 | dulint | |
18537 | buf_frame_modify_clock_inc( | |
18538 | ||
18539 | ||
18540 | buf_frame_t* frame) | |
18541 | { | |
18542 | buf_block_t* block; | |
18543 | ||
18544 | ; | |
18545 | ||
18546 | block = buf_block_align(frame); | |
18547 | ||
18548 | ||
18549 | ||
18550 | ||
18551 | ||
18552 | ||
18553 | { if ((block->modify_clock).low == 0xFFFFFFFFUL) { (block->modify_clock).high = (block->modify_clock).high + 1; (block->modify_clock).low = 0; } else { (block->modify_clock).low = (block->modify_clock).low + 1; }}; | |
18554 | ||
18555 | return(block->modify_clock); | |
18556 | } | |
18557 | ||
18558 | ||
18559 | ||
18560 | ||
18561 | ||
18562 | static inline | |
18563 | dulint | |
18564 | buf_block_modify_clock_inc( | |
18565 | ||
18566 | ||
18567 | buf_block_t* block) | |
18568 | { | |
18569 | ||
18570 | ||
18571 | ||
18572 | ||
18573 | ||
18574 | { if ((block->modify_clock).low == 0xFFFFFFFFUL) { (block->modify_clock).high = (block->modify_clock).high + 1; (block->modify_clock).low = 0; } else { (block->modify_clock).low = (block->modify_clock).low + 1; }}; | |
18575 | ||
18576 | return(block->modify_clock); | |
18577 | } | |
18578 | ||
18579 | ||
18580 | ||
18581 | ||
18582 | static inline | |
18583 | dulint | |
18584 | buf_block_get_modify_clock( | |
18585 | ||
18586 | ||
18587 | buf_block_t* block) | |
18588 | { | |
18589 | ||
18590 | ||
18591 | ||
18592 | ||
18593 | ||
18594 | return(block->modify_clock); | |
18595 | } | |
18596 | # 531 "./include/buf0buf.ic" | |
18597 | static inline | |
18598 | void | |
18599 | buf_block_buf_fix_inc( | |
18600 | ||
18601 | buf_block_t* block) | |
18602 | { | |
18603 | ||
18604 | ||
18605 | ||
18606 | block->buf_fix_count++; | |
18607 | } | |
18608 | ||
18609 | ||
18610 | ||
18611 | static inline | |
18612 | buf_block_t* | |
18613 | buf_page_hash_get( | |
18614 | ||
18615 | ||
18616 | ulint space, | |
18617 | ulint offset) | |
18618 | { | |
18619 | buf_block_t* block; | |
18620 | ulint fold; | |
18621 | ||
18622 | ; | |
18623 | ||
18624 | ||
18625 | ||
18626 | ||
18627 | ||
18628 | ||
18629 | fold = buf_page_address_fold(space, offset); | |
18630 | ||
18631 | { (block) = (hash_get_nth_cell(buf_pool->page_hash, hash_calc_hash(fold, buf_pool->page_hash))->node); while ((block) != ((void *)0)) { if ((block->space == space) && (block->offset == offset)) { break; } else { (block) = ((block)->hash); } }}; | |
18632 | ||
18633 | do { if (__builtin_expect(!((ulint)(block == ((void *)0) || block->state == 213)), (0))) { ut_dbg_assertion_failed("block == NULL || block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 567); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 567); } while (0); } while (0); | |
18634 | ||
18635 | return(block); | |
18636 | } | |
18637 | ||
18638 | ||
18639 | ||
18640 | ||
18641 | ||
18642 | ||
18643 | static inline | |
18644 | buf_frame_t* | |
18645 | buf_page_get_release_on_io( | |
18646 | ||
18647 | ||
18648 | ||
18649 | ulint space, | |
18650 | ulint offset, | |
18651 | ||
18652 | buf_frame_t* guess, | |
18653 | ulint rw_latch, | |
18654 | ||
18655 | ulint savepoint, | |
18656 | mtr_t* mtr) | |
18657 | { | |
18658 | buf_frame_t* frame; | |
18659 | ||
18660 | frame = buf_page_get_gen(space, offset, rw_latch, guess, | |
18661 | 11, | |
18662 | "./include/buf0buf.ic", 596, | |
18663 | mtr); | |
18664 | if (frame != ((void *)0)) { | |
18665 | ||
18666 | return(frame); | |
18667 | } | |
18668 | ||
18669 | ||
18670 | ||
18671 | ||
18672 | mtr_rollback_to_savepoint(mtr, savepoint); | |
18673 | ||
18674 | buf_page_get_gen( space, offset, 1, ((void *)0), 10, "./include/buf0buf.ic", 608, mtr); | |
18675 | ||
18676 | ||
18677 | ||
18678 | ||
18679 | mtr_rollback_to_savepoint(mtr, savepoint); | |
18680 | ||
18681 | return(((void *)0)); | |
18682 | } | |
18683 | ||
18684 | ||
18685 | ||
18686 | ||
18687 | static inline | |
18688 | void | |
18689 | buf_page_release( | |
18690 | ||
18691 | buf_block_t* block, | |
18692 | ulint rw_latch, | |
18693 | ||
18694 | mtr_t* mtr) | |
18695 | { | |
18696 | ; | |
18697 | ||
18698 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 632); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 632); } while (0); } while (0); | |
18699 | ||
18700 | if (rw_latch == 2 && mtr->modifications) { | |
18701 | mutex_enter_func((&buf_pool->flush_list_mutex), "./include/buf0buf.ic", 635); | |
18702 | buf_flush_note_modification(block, mtr); | |
18703 | mutex_exit(&buf_pool->flush_list_mutex); | |
18704 | } | |
18705 | ||
18706 | mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 640); | |
18707 | ||
18708 | ||
18709 | if (__builtin_expect(block->buf_fix_count == 0, (0))) { | |
18710 | buf_print_diagnostic(mtr, block); | |
18711 | do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 645); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
18712 | } | |
18713 | ||
18714 | ||
18715 | ||
18716 | ||
18717 | --block->buf_fix_count; | |
18718 | ||
18719 | mutex_exit(&block->mutex); | |
18720 | ||
18721 | if (rw_latch == 1) { | |
18722 | rw_lock_s_unlock_func(&(block->lock)); | |
18723 | } else if (rw_latch == 2) { | |
18724 | rw_lock_x_unlock_func(&(block->lock)); | |
18725 | } | |
18726 | } | |
18727 | # 1105 "./include/buf0buf.h" 2 | |
18728 | # 24 "buf/buf0buf.c" 2 | |
18729 | ||
18730 | ||
18731 | ||
18732 | ||
18733 | ||
18734 | # 1 "./include/mem0mem.h" 1 | |
18735 | # 30 "buf/buf0buf.c" 2 | |
18736 | # 1 "./include/btr0btr.h" 1 | |
18737 | # 14 "./include/btr0btr.h" | |
18738 | # 1 "./include/dict0dict.h" 1 | |
18739 | # 14 "./include/dict0dict.h" | |
18740 | # 1 "./include/dict0mem.h" 1 | |
18741 | # 14 "./include/dict0mem.h" | |
18742 | # 1 "./include/data0type.h" 1 | |
18743 | # 14 "./include/data0type.h" | |
18744 | extern ulint data_mysql_default_charset_coll; | |
18745 | ||
18746 | ||
18747 | ||
18748 | ||
18749 | typedef struct dtype_struct dtype_t; | |
18750 | ||
18751 | ||
18752 | ||
18753 | extern dtype_t* dtype_binary; | |
18754 | # 162 "./include/data0type.h" | |
18755 | static inline | |
18756 | ulint | |
18757 | dtype_get_mysql_type( | |
18758 | ||
18759 | ||
18760 | ||
18761 | dtype_t* type); | |
18762 | ||
18763 | ||
18764 | ||
18765 | ||
18766 | ||
18767 | ulint | |
18768 | dtype_get_at_most_n_mbchars( | |
18769 | ||
18770 | ||
18771 | ||
18772 | const dtype_t* dtype, | |
18773 | ulint prefix_len, | |
18774 | ||
18775 | ||
18776 | ulint data_len, | |
18777 | const char* str); | |
18778 | ||
18779 | ||
18780 | ||
18781 | ||
18782 | ||
18783 | ulint | |
18784 | dtype_is_string_type( | |
18785 | ||
18786 | ||
18787 | ulint mtype); | |
18788 | ||
18789 | ||
18790 | ||
18791 | ||
18792 | ||
18793 | ulint | |
18794 | dtype_is_binary_string_type( | |
18795 | ||
18796 | ||
18797 | ulint mtype, | |
18798 | ulint prtype); | |
18799 | ||
18800 | ||
18801 | ||
18802 | ||
18803 | ||
18804 | ||
18805 | ulint | |
18806 | dtype_is_non_binary_string_type( | |
18807 | ||
18808 | ||
18809 | ulint mtype, | |
18810 | ulint prtype); | |
18811 | ||
18812 | ||
18813 | static inline | |
18814 | void | |
18815 | dtype_set( | |
18816 | ||
18817 | dtype_t* type, | |
18818 | ulint mtype, | |
18819 | ulint prtype, | |
18820 | ulint len, | |
18821 | ulint prec); | |
18822 | ||
18823 | ||
18824 | static inline | |
18825 | void | |
18826 | dtype_copy( | |
18827 | ||
18828 | dtype_t* type1, | |
18829 | dtype_t* type2); | |
18830 | ||
18831 | ||
18832 | static inline | |
18833 | ulint | |
18834 | dtype_get_mtype( | |
18835 | ||
18836 | dtype_t* type); | |
18837 | ||
18838 | ||
18839 | static inline | |
18840 | ulint | |
18841 | dtype_get_prtype( | |
18842 | ||
18843 | dtype_t* type); | |
18844 | ||
18845 | ||
18846 | ||
18847 | ulint | |
18848 | dtype_get_charset_coll_noninline( | |
18849 | ||
18850 | ulint prtype); | |
18851 | ||
18852 | ||
18853 | static inline | |
18854 | ulint | |
18855 | dtype_get_charset_coll( | |
18856 | ||
18857 | ulint prtype); | |
18858 | ||
18859 | ||
18860 | ||
18861 | ||
18862 | ulint | |
18863 | dtype_form_prtype( | |
18864 | ||
18865 | ulint old_prtype, | |
18866 | ||
18867 | ulint charset_coll); | |
18868 | ||
18869 | ||
18870 | static inline | |
18871 | ulint | |
18872 | dtype_get_len( | |
18873 | ||
18874 | dtype_t* type); | |
18875 | ||
18876 | ||
18877 | static inline | |
18878 | ulint | |
18879 | dtype_get_prec( | |
18880 | ||
18881 | dtype_t* type); | |
18882 | ||
18883 | ||
18884 | static inline | |
18885 | ulint | |
18886 | dtype_get_mbminlen( | |
18887 | ||
18888 | ||
18889 | ||
18890 | const dtype_t* type); | |
18891 | ||
18892 | ||
18893 | static inline | |
18894 | ulint | |
18895 | dtype_get_mbmaxlen( | |
18896 | ||
18897 | ||
18898 | ||
18899 | const dtype_t* type); | |
18900 | ||
18901 | ||
18902 | static inline | |
18903 | ulint | |
18904 | dtype_get_pad_char( | |
18905 | ||
18906 | ||
18907 | ||
18908 | const dtype_t* type); | |
18909 | ||
18910 | ||
18911 | static inline | |
18912 | ulint | |
18913 | dtype_get_fixed_size( | |
18914 | ||
18915 | ||
18916 | dtype_t* type); | |
18917 | ||
18918 | ||
18919 | static inline | |
18920 | ulint | |
18921 | dtype_get_min_size( | |
18922 | ||
18923 | ||
18924 | const dtype_t* type); | |
18925 | ||
18926 | ||
18927 | ||
18928 | static inline | |
18929 | ulint | |
18930 | dtype_get_sql_null_size( | |
18931 | ||
18932 | ||
18933 | dtype_t* type); | |
18934 | ||
18935 | ||
18936 | static inline | |
18937 | ulint | |
18938 | dtype_is_fixed_size( | |
18939 | ||
18940 | ||
18941 | dtype_t* type); | |
18942 | ||
18943 | ||
18944 | ||
18945 | static inline | |
18946 | void | |
18947 | dtype_read_for_order_and_null_size( | |
18948 | ||
18949 | dtype_t* type, | |
18950 | unsigned char* buf); | |
18951 | ||
18952 | ||
18953 | ||
18954 | ||
18955 | static inline | |
18956 | void | |
18957 | dtype_new_store_for_order_and_null_size( | |
18958 | ||
18959 | unsigned char* buf, | |
18960 | ||
18961 | ||
18962 | dtype_t* type, | |
18963 | ulint prefix_len); | |
18964 | ||
18965 | ||
18966 | ||
18967 | ||
18968 | ||
18969 | static inline | |
18970 | void | |
18971 | dtype_new_read_for_order_and_null_size( | |
18972 | ||
18973 | dtype_t* type, | |
18974 | unsigned char* buf); | |
18975 | ||
18976 | ||
18977 | ||
18978 | ||
18979 | ulint | |
18980 | dtype_validate( | |
18981 | ||
18982 | ||
18983 | dtype_t* type); | |
18984 | ||
18985 | ||
18986 | ||
18987 | void | |
18988 | dtype_print( | |
18989 | ||
18990 | dtype_t* type); | |
18991 | # 407 "./include/data0type.h" | |
18992 | struct dtype_struct{ | |
18993 | ulint mtype; | |
18994 | ulint prtype; | |
18995 | ||
18996 | ||
18997 | ||
18998 | ||
18999 | ||
19000 | ||
19001 | ||
19002 | ulint len; | |
19003 | ||
19004 | ||
19005 | ||
19006 | ||
19007 | ||
19008 | ulint prec; | |
19009 | ||
19010 | ulint mbminlen; | |
19011 | ulint mbmaxlen; | |
19012 | }; | |
19013 | ||
19014 | ||
19015 | # 1 "./include/data0type.ic" 1 | |
19016 | # 16 "./include/data0type.ic" | |
19017 | extern | |
19018 | void | |
19019 | innobase_get_cset_width( | |
19020 | ||
19021 | ulint cset, | |
19022 | ulint* mbminlen, | |
19023 | ulint* mbmaxlen); | |
19024 | ||
19025 | ||
19026 | ||
19027 | static inline | |
19028 | ulint | |
19029 | dtype_get_charset_coll( | |
19030 | ||
19031 | ulint prtype) | |
19032 | { | |
19033 | return((prtype >> 16) & 0xFFUL); | |
19034 | } | |
19035 | ||
19036 | ||
19037 | ||
19038 | static inline | |
19039 | ulint | |
19040 | dtype_get_mysql_type( | |
19041 | ||
19042 | ||
19043 | ||
19044 | dtype_t* type) | |
19045 | { | |
19046 | return(type->prtype & 0xFFUL); | |
19047 | } | |
19048 | ||
19049 | ||
19050 | ||
19051 | static inline | |
19052 | void | |
19053 | dtype_set_mblen( | |
19054 | ||
19055 | dtype_t* type) | |
19056 | { | |
19057 | ; | |
19058 | if (dtype_is_string_type(type->mtype)) { | |
19059 | innobase_get_cset_width(dtype_get_charset_coll(type->prtype), | |
19060 | &type->mbminlen, &type->mbmaxlen); | |
19061 | ; | |
19062 | } else { | |
19063 | type->mbminlen = type->mbmaxlen = 0; | |
19064 | } | |
19065 | } | |
19066 | ||
19067 | ||
19068 | ||
19069 | static inline | |
19070 | void | |
19071 | dtype_set( | |
19072 | ||
19073 | dtype_t* type, | |
19074 | ulint mtype, | |
19075 | ulint prtype, | |
19076 | ulint len, | |
19077 | ulint prec) | |
19078 | { | |
19079 | ; | |
19080 | ; | |
19081 | ||
19082 | type->mtype = mtype; | |
19083 | type->prtype = prtype; | |
19084 | type->len = len; | |
19085 | type->prec = prec; | |
19086 | ||
19087 | dtype_set_mblen(type); | |
19088 | ; | |
19089 | } | |
19090 | ||
19091 | ||
19092 | ||
19093 | static inline | |
19094 | void | |
19095 | dtype_copy( | |
19096 | ||
19097 | dtype_t* type1, | |
19098 | dtype_t* type2) | |
19099 | { | |
19100 | *type1 = *type2; | |
19101 | ||
19102 | ; | |
19103 | } | |
19104 | ||
19105 | ||
19106 | ||
19107 | static inline | |
19108 | ulint | |
19109 | dtype_get_mtype( | |
19110 | ||
19111 | dtype_t* type) | |
19112 | { | |
19113 | ; | |
19114 | ||
19115 | return(type->mtype); | |
19116 | } | |
19117 | ||
19118 | ||
19119 | ||
19120 | static inline | |
19121 | ulint | |
19122 | dtype_get_prtype( | |
19123 | ||
19124 | dtype_t* type) | |
19125 | { | |
19126 | ; | |
19127 | ||
19128 | return(type->prtype); | |
19129 | } | |
19130 | ||
19131 | ||
19132 | ||
19133 | static inline | |
19134 | ulint | |
19135 | dtype_get_len( | |
19136 | ||
19137 | dtype_t* type) | |
19138 | { | |
19139 | ; | |
19140 | ||
19141 | return(type->len); | |
19142 | } | |
19143 | ||
19144 | ||
19145 | ||
19146 | static inline | |
19147 | ulint | |
19148 | dtype_get_prec( | |
19149 | ||
19150 | dtype_t* type) | |
19151 | { | |
19152 | ; | |
19153 | ||
19154 | return(type->prec); | |
19155 | } | |
19156 | ||
19157 | ||
19158 | ||
19159 | static inline | |
19160 | ulint | |
19161 | dtype_get_mbminlen( | |
19162 | ||
19163 | ||
19164 | ||
19165 | const dtype_t* type) | |
19166 | { | |
19167 | ; | |
19168 | return(type->mbminlen); | |
19169 | } | |
19170 | ||
19171 | ||
19172 | static inline | |
19173 | ulint | |
19174 | dtype_get_mbmaxlen( | |
19175 | ||
19176 | ||
19177 | ||
19178 | const dtype_t* type) | |
19179 | { | |
19180 | ; | |
19181 | return(type->mbmaxlen); | |
19182 | } | |
19183 | ||
19184 | ||
19185 | ||
19186 | static inline | |
19187 | ulint | |
19188 | dtype_get_pad_char( | |
19189 | ||
19190 | ||
19191 | ||
19192 | const dtype_t* type) | |
19193 | { | |
19194 | switch (type->mtype) { | |
19195 | case 3: | |
19196 | case 4: | |
19197 | if (__builtin_expect(dtype_get_charset_coll(type->prtype) == 63, (0))) { | |
19198 | ||
19199 | ||
19200 | ||
19201 | return(((ulint)(-1))); | |
19202 | } | |
19203 | ||
19204 | case 2: | |
19205 | case 1: | |
19206 | case 13: | |
19207 | case 12: | |
19208 | ||
19209 | ||
19210 | ||
19211 | return(0x20); | |
19212 | case 5: | |
19213 | if ((type->prtype & 1024) == 0) { | |
19214 | return(0x20); | |
19215 | } | |
19216 | ||
19217 | default: | |
19218 | ||
19219 | return(((ulint)(-1))); | |
19220 | } | |
19221 | } | |
19222 | ||
19223 | ||
19224 | ||
19225 | ||
19226 | ||
19227 | static inline | |
19228 | void | |
19229 | dtype_new_store_for_order_and_null_size( | |
19230 | ||
19231 | unsigned char* buf, | |
19232 | ||
19233 | ||
19234 | dtype_t* type, | |
19235 | ulint prefix_len) | |
19236 | ||
19237 | { | |
19238 | ||
19239 | ||
19240 | ||
19241 | ulint len; | |
19242 | ||
19243 | buf[0] = (unsigned char)(type->mtype & 0xFFUL); | |
19244 | ||
19245 | if (type->prtype & 1024) { | |
19246 | buf[0] = buf[0] | 128; | |
19247 | } | |
19248 | ||
19249 | ||
19250 | ||
19251 | ||
19252 | ||
19253 | ||
19254 | buf[1] = (unsigned char)(type->prtype & 0xFFUL); | |
19255 | ||
19256 | len = prefix_len ? prefix_len : type->len; | |
19257 | ||
19258 | mach_write_to_2(buf + 2, len & 0xFFFFUL); | |
19259 | ||
19260 | ; | |
19261 | mach_write_to_2(buf + 4, dtype_get_charset_coll(type->prtype)); | |
19262 | ||
19263 | if (type->prtype & 256) { | |
19264 | buf[4] |= 128; | |
19265 | } | |
19266 | } | |
19267 | ||
19268 | ||
19269 | ||
19270 | ||
19271 | ||
19272 | static inline | |
19273 | void | |
19274 | dtype_read_for_order_and_null_size( | |
19275 | ||
19276 | dtype_t* type, | |
19277 | unsigned char* buf) | |
19278 | { | |
19279 | ; | |
19280 | ||
19281 | type->mtype = buf[0] & 63; | |
19282 | type->prtype = buf[1]; | |
19283 | ||
19284 | if (buf[0] & 128) { | |
19285 | type->prtype = type->prtype | 1024; | |
19286 | } | |
19287 | ||
19288 | type->len = mach_read_from_2(buf + 2); | |
19289 | ||
19290 | type->prtype = dtype_form_prtype(type->prtype, | |
19291 | data_mysql_default_charset_coll); | |
19292 | dtype_set_mblen(type); | |
19293 | } | |
19294 | ||
19295 | ||
19296 | ||
19297 | ||
19298 | ||
19299 | static inline | |
19300 | void | |
19301 | dtype_new_read_for_order_and_null_size( | |
19302 | ||
19303 | dtype_t* type, | |
19304 | unsigned char* buf) | |
19305 | { | |
19306 | ulint charset_coll; | |
19307 | ||
19308 | ||
19309 | ||
19310 | ||
19311 | ||
19312 | type->mtype = buf[0] & 63; | |
19313 | type->prtype = buf[1]; | |
19314 | ||
19315 | if (buf[0] & 128) { | |
19316 | type->prtype |= 1024; | |
19317 | } | |
19318 | ||
19319 | if (buf[4] & 128) { | |
19320 | type->prtype |= 256; | |
19321 | } | |
19322 | ||
19323 | type->len = mach_read_from_2(buf + 2); | |
19324 | ||
19325 | mach_read_from_2(buf + 4); | |
19326 | ||
19327 | charset_coll = mach_read_from_2(buf + 4) & 0x7fff; | |
19328 | ||
19329 | if (dtype_is_string_type(type->mtype)) { | |
19330 | do { if (__builtin_expect(!((ulint)(charset_coll < 256)), (0))) { ut_dbg_assertion_failed("charset_coll < 256", "./include/data0type.ic", (ulint) 329); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 329); } while (0); } while (0); | |
19331 | ||
19332 | if (charset_coll == 0) { | |
19333 | ||
19334 | ||
19335 | ||
19336 | ||
19337 | ||
19338 | ||
19339 | charset_coll = data_mysql_default_charset_coll; | |
19340 | } | |
19341 | ||
19342 | type->prtype = dtype_form_prtype(type->prtype, charset_coll); | |
19343 | } | |
19344 | dtype_set_mblen(type); | |
19345 | } | |
19346 | ||
19347 | ||
19348 | ||
19349 | ||
19350 | static inline | |
19351 | ulint | |
19352 | dtype_get_fixed_size( | |
19353 | ||
19354 | ||
19355 | dtype_t* type) | |
19356 | { | |
19357 | ulint mtype; | |
19358 | ||
19359 | mtype = dtype_get_mtype(type); | |
19360 | ||
19361 | switch (mtype) { | |
19362 | case 8: | |
19363 | # 381 "./include/data0type.ic" | |
19364 | case 2: | |
19365 | case 3: | |
19366 | case 6: | |
19367 | case 9: | |
19368 | case 10: | |
19369 | return(dtype_get_len(type)); | |
19370 | case 13: | |
19371 | if (type->prtype & 1024) { | |
19372 | return(dtype_get_len(type)); | |
19373 | } else { | |
19374 | # 399 "./include/data0type.ic" | |
19375 | ulint mbminlen, mbmaxlen; | |
19376 | ||
19377 | innobase_get_cset_width( | |
19378 | dtype_get_charset_coll(type->prtype), | |
19379 | &mbminlen, &mbmaxlen); | |
19380 | ||
19381 | if (__builtin_expect(type->mbminlen != mbminlen, (0)) | |
19382 | || __builtin_expect(type->mbmaxlen != mbmaxlen, (0))) { | |
19383 | ||
19384 | ut_print_timestamp(stderr); | |
19385 | fprintf(stderr, " InnoDB: " | |
19386 | "mbminlen=%lu, " | |
19387 | "mbmaxlen=%lu, " | |
19388 | "type->mbminlen=%lu, " | |
19389 | "type->mbmaxlen=%lu\n", | |
19390 | (ulong) mbminlen, | |
19391 | (ulong) mbmaxlen, | |
19392 | (ulong) type->mbminlen, | |
19393 | (ulong) type->mbmaxlen); | |
19394 | } | |
19395 | if (mbminlen == mbmaxlen) { | |
19396 | return(dtype_get_len(type)); | |
19397 | } | |
19398 | } | |
19399 | ||
19400 | case 1: | |
19401 | case 4: | |
19402 | case 11: | |
19403 | case 12: | |
19404 | case 5: | |
19405 | return(0); | |
19406 | default: do { ut_dbg_assertion_failed(0, "./include/data0type.ic", (ulint) 430); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
19407 | } | |
19408 | ||
19409 | return(0); | |
19410 | } | |
19411 | ||
19412 | ||
19413 | ||
19414 | static inline | |
19415 | ulint | |
19416 | dtype_get_min_size( | |
19417 | ||
19418 | ||
19419 | const dtype_t* type) | |
19420 | { | |
19421 | switch (type->mtype) { | |
19422 | case 8: | |
19423 | # 466 "./include/data0type.ic" | |
19424 | case 2: | |
19425 | case 3: | |
19426 | case 6: | |
19427 | case 9: | |
19428 | case 10: | |
19429 | return(type->len); | |
19430 | case 13: | |
19431 | if ((type->prtype & 1024) | |
19432 | || type->mbminlen == type->mbmaxlen) { | |
19433 | return(type->len); | |
19434 | } | |
19435 | ||
19436 | do { if (__builtin_expect(!((ulint)(type->mbminlen > 0)), (0))) { ut_dbg_assertion_failed("type->mbminlen > 0", "./include/data0type.ic", (ulint) 478); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 478); } while (0); } while (0); | |
19437 | do { if (__builtin_expect(!((ulint)(type->mbmaxlen > type->mbminlen)), (0))) { ut_dbg_assertion_failed("type->mbmaxlen > type->mbminlen", "./include/data0type.ic", (ulint) 479); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 479); } while (0); } while (0); | |
19438 | do { if (__builtin_expect(!((ulint)(type->len % type->mbmaxlen == 0)), (0))) { ut_dbg_assertion_failed("type->len % type->mbmaxlen == 0", "./include/data0type.ic", (ulint) 480); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 480); } while (0); } while (0); | |
19439 | return(type->len * type->mbminlen / type->mbmaxlen); | |
19440 | case 1: | |
19441 | case 4: | |
19442 | case 11: | |
19443 | case 12: | |
19444 | case 5: | |
19445 | return(0); | |
19446 | default: do { ut_dbg_assertion_failed(0, "./include/data0type.ic", (ulint) 488); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
19447 | } | |
19448 | ||
19449 | return(0); | |
19450 | } | |
19451 | ||
19452 | ||
19453 | ||
19454 | ||
19455 | ||
19456 | static inline | |
19457 | ulint | |
19458 | dtype_get_sql_null_size( | |
19459 | ||
19460 | ||
19461 | dtype_t* type) | |
19462 | { | |
19463 | return(dtype_get_fixed_size(type)); | |
19464 | } | |
19465 | ||
19466 | ||
19467 | ||
19468 | static inline | |
19469 | ulint | |
19470 | dtype_is_fixed_size( | |
19471 | ||
19472 | ||
19473 | dtype_t* type) | |
19474 | { | |
19475 | ulint size; | |
19476 | ||
19477 | size = dtype_get_fixed_size(type); | |
19478 | ||
19479 | if (size) { | |
19480 | return((1)); | |
19481 | } | |
19482 | ||
19483 | return((0)); | |
19484 | } | |
19485 | # 431 "./include/data0type.h" 2 | |
19486 | # 15 "./include/dict0mem.h" 2 | |
19487 | # 1 "./include/data0data.h" 1 | |
19488 | # 14 "./include/data0data.h" | |
19489 | # 1 "./include/data0types.h" 1 | |
19490 | # 13 "./include/data0types.h" | |
19491 | typedef struct dfield_struct dfield_t; | |
19492 | ||
19493 | ||
19494 | typedef struct dtuple_struct dtuple_t; | |
19495 | # 15 "./include/data0data.h" 2 | |
19496 | ||
19497 | ||
19498 | ||
19499 | ||
19500 | typedef struct big_rec_struct big_rec_t; | |
19501 | ||
19502 | ||
19503 | void | |
19504 | dfield_set_data_noninline( | |
19505 | dfield_t* field, | |
19506 | void* data, | |
19507 | ulint len); | |
19508 | void* | |
19509 | dfield_get_data_noninline( | |
19510 | dfield_t* field); | |
19511 | ulint | |
19512 | dfield_get_len_noninline( | |
19513 | dfield_t* field); | |
19514 | ulint | |
19515 | dtuple_get_n_fields_noninline( | |
19516 | dtuple_t* tuple); | |
19517 | dfield_t* | |
19518 | dtuple_get_nth_field_noninline( | |
19519 | dtuple_t* tuple, | |
19520 | ulint n); | |
19521 | ||
19522 | ||
19523 | ||
19524 | static inline | |
19525 | dtype_t* | |
19526 | dfield_get_type( | |
19527 | ||
19528 | ||
19529 | dfield_t* field); | |
19530 | ||
19531 | ||
19532 | static inline | |
19533 | void | |
19534 | dfield_set_type( | |
19535 | ||
19536 | dfield_t* field, | |
19537 | dtype_t* type); | |
19538 | ||
19539 | ||
19540 | static inline | |
19541 | void* | |
19542 | dfield_get_data( | |
19543 | ||
19544 | ||
19545 | dfield_t* field); | |
19546 | ||
19547 | ||
19548 | static inline | |
19549 | ulint | |
19550 | dfield_get_len( | |
19551 | ||
19552 | ||
19553 | ||
19554 | dfield_t* field); | |
19555 | ||
19556 | ||
19557 | static inline | |
19558 | void | |
19559 | dfield_set_len( | |
19560 | ||
19561 | dfield_t* field, | |
19562 | ulint len); | |
19563 | ||
19564 | ||
19565 | static inline | |
19566 | void | |
19567 | dfield_set_data( | |
19568 | ||
19569 | dfield_t* field, | |
19570 | const void* data, | |
19571 | ulint len); | |
19572 | ||
19573 | ||
19574 | static inline | |
19575 | void | |
19576 | data_write_sql_null( | |
19577 | ||
19578 | unsigned char* data, | |
19579 | ulint len); | |
19580 | ||
19581 | ||
19582 | static inline | |
19583 | void | |
19584 | dfield_copy_data( | |
19585 | ||
19586 | dfield_t* field1, | |
19587 | dfield_t* field2); | |
19588 | ||
19589 | ||
19590 | static inline | |
19591 | void | |
19592 | dfield_copy( | |
19593 | ||
19594 | dfield_t* field1, | |
19595 | dfield_t* field2); | |
19596 | ||
19597 | ||
19598 | static inline | |
19599 | ulint | |
19600 | dfield_datas_are_binary_equal( | |
19601 | ||
19602 | ||
19603 | dfield_t* field1, | |
19604 | dfield_t* field2); | |
19605 | ||
19606 | ||
19607 | ||
19608 | ulint | |
19609 | dfield_data_is_binary_equal( | |
19610 | ||
19611 | ||
19612 | dfield_t* field, | |
19613 | ulint len, | |
19614 | unsigned char* data); | |
19615 | ||
19616 | ||
19617 | static inline | |
19618 | ulint | |
19619 | dtuple_get_n_fields( | |
19620 | ||
19621 | ||
19622 | dtuple_t* tuple); | |
19623 | ||
19624 | ||
19625 | static inline | |
19626 | dfield_t* | |
19627 | dtuple_get_nth_field( | |
19628 | ||
19629 | ||
19630 | dtuple_t* tuple, | |
19631 | ulint n); | |
19632 | ||
19633 | ||
19634 | static inline | |
19635 | ulint | |
19636 | dtuple_get_info_bits( | |
19637 | ||
19638 | ||
19639 | dtuple_t* tuple); | |
19640 | ||
19641 | ||
19642 | static inline | |
19643 | void | |
19644 | dtuple_set_info_bits( | |
19645 | ||
19646 | dtuple_t* tuple, | |
19647 | ulint info_bits); | |
19648 | ||
19649 | ||
19650 | static inline | |
19651 | ulint | |
19652 | dtuple_get_n_fields_cmp( | |
19653 | ||
19654 | ||
19655 | ||
19656 | dtuple_t* tuple); | |
19657 | ||
19658 | ||
19659 | static inline | |
19660 | void | |
19661 | dtuple_set_n_fields_cmp( | |
19662 | ||
19663 | dtuple_t* tuple, | |
19664 | ulint n_fields_cmp); | |
19665 | ||
19666 | ||
19667 | ||
19668 | ||
19669 | static inline | |
19670 | dtuple_t* | |
19671 | dtuple_create( | |
19672 | ||
19673 | ||
19674 | mem_heap_t* heap, | |
19675 | ||
19676 | ulint n_fields); | |
19677 | ||
19678 | ||
19679 | ||
19680 | ||
19681 | dtuple_t* | |
19682 | dtuple_create_for_mysql( | |
19683 | ||
19684 | ||
19685 | void** heap, | |
19686 | ulint n_fields); | |
19687 | ||
19688 | ||
19689 | ||
19690 | void | |
19691 | dtuple_free_for_mysql( | |
19692 | ||
19693 | void* heap); | |
19694 | ||
19695 | ||
19696 | ||
19697 | ||
19698 | void | |
19699 | dtuple_set_n_fields( | |
19700 | ||
19701 | dtuple_t* tuple, | |
19702 | ulint n_fields); | |
19703 | ||
19704 | ||
19705 | ||
19706 | static inline | |
19707 | ulint | |
19708 | dtuple_get_data_size( | |
19709 | ||
19710 | ||
19711 | dtuple_t* tuple); | |
19712 | ||
19713 | ||
19714 | ||
19715 | ||
19716 | ||
19717 | ulint | |
19718 | dtuple_datas_are_ordering_equal( | |
19719 | ||
19720 | ||
19721 | ||
19722 | ||
19723 | ||
19724 | dtuple_t* tuple1, | |
19725 | dtuple_t* tuple2); | |
19726 | ||
19727 | ||
19728 | static inline | |
19729 | ulint | |
19730 | dtuple_fold( | |
19731 | ||
19732 | ||
19733 | dtuple_t* tuple, | |
19734 | ulint n_fields, | |
19735 | ulint n_bytes, | |
19736 | ||
19737 | dulint tree_id); | |
19738 | ||
19739 | ||
19740 | static inline | |
19741 | void | |
19742 | dtuple_set_types_binary( | |
19743 | ||
19744 | dtuple_t* tuple, | |
19745 | ulint n); | |
19746 | ||
19747 | ||
19748 | static inline | |
19749 | ulint | |
19750 | dtuple_contains_null( | |
19751 | ||
19752 | ||
19753 | dtuple_t* tuple); | |
19754 | ||
19755 | ||
19756 | ||
19757 | ulint | |
19758 | dfield_check_typed( | |
19759 | ||
19760 | ||
19761 | dfield_t* field); | |
19762 | ||
19763 | ||
19764 | ||
19765 | ulint | |
19766 | dtuple_check_typed( | |
19767 | ||
19768 | ||
19769 | dtuple_t* tuple); | |
19770 | ||
19771 | ||
19772 | ||
19773 | ulint | |
19774 | dtuple_check_typed_no_assert( | |
19775 | ||
19776 | ||
19777 | dtuple_t* tuple); | |
19778 | # 311 "./include/data0data.h" | |
19779 | void | |
19780 | dfield_print( | |
19781 | ||
19782 | dfield_t* dfield); | |
19783 | ||
19784 | ||
19785 | ||
19786 | ||
19787 | void | |
19788 | dfield_print_also_hex( | |
19789 | ||
19790 | dfield_t* dfield); | |
19791 | ||
19792 | ||
19793 | ||
19794 | void | |
19795 | dtuple_print( | |
19796 | ||
19797 | FILE* f, | |
19798 | dtuple_t* tuple); | |
19799 | ||
19800 | ||
19801 | ||
19802 | ||
19803 | ||
19804 | ||
19805 | big_rec_t* | |
19806 | dtuple_convert_big_rec( | |
19807 | ||
19808 | ||
19809 | ||
19810 | ||
19811 | ||
19812 | dict_index_t* index, | |
19813 | dtuple_t* entry, | |
19814 | ulint* ext_vec, | |
19815 | ||
19816 | ||
19817 | ||
19818 | ulint n_ext_vec); | |
19819 | ||
19820 | ||
19821 | ||
19822 | ||
19823 | ||
19824 | void | |
19825 | dtuple_convert_back_big_rec( | |
19826 | ||
19827 | dict_index_t* index, | |
19828 | dtuple_t* entry, | |
19829 | big_rec_t* vector); | |
19830 | ||
19831 | ||
19832 | ||
19833 | ||
19834 | void | |
19835 | dtuple_big_rec_free( | |
19836 | ||
19837 | big_rec_t* vector); | |
19838 | ||
19839 | ||
19840 | ||
19841 | ||
19842 | ||
19843 | struct dfield_struct{ | |
19844 | void* data; | |
19845 | ulint len; | |
19846 | dtype_t type; | |
19847 | }; | |
19848 | ||
19849 | struct dtuple_struct { | |
19850 | ulint info_bits; | |
19851 | ||
19852 | ||
19853 | ||
19854 | ulint n_fields; | |
19855 | ulint n_fields_cmp; | |
19856 | ||
19857 | ||
19858 | ||
19859 | ||
19860 | ||
19861 | ||
19862 | dfield_t* fields; | |
19863 | struct { dtuple_t * prev; dtuple_t * next; } tuple_list; | |
19864 | ||
19865 | ||
19866 | ulint magic_n; | |
19867 | }; | |
19868 | ||
19869 | ||
19870 | ||
19871 | ||
19872 | typedef struct big_rec_field_struct big_rec_field_t; | |
19873 | struct big_rec_field_struct { | |
19874 | ulint field_no; | |
19875 | ulint len; | |
19876 | unsigned char* data; | |
19877 | }; | |
19878 | ||
19879 | ||
19880 | ||
19881 | ||
19882 | struct big_rec_struct { | |
19883 | mem_heap_t* heap; | |
19884 | ulint n_fields; | |
19885 | big_rec_field_t* fields; | |
19886 | }; | |
19887 | ||
19888 | ||
19889 | # 1 "./include/data0data.ic" 1 | |
19890 | # 12 "./include/data0data.ic" | |
19891 | extern unsigned char data_error; | |
19892 | ||
19893 | ||
19894 | ||
19895 | static inline | |
19896 | dtype_t* | |
19897 | dfield_get_type( | |
19898 | ||
19899 | ||
19900 | dfield_t* field) | |
19901 | { | |
19902 | ; | |
19903 | ||
19904 | return(&(field->type)); | |
19905 | } | |
19906 | ||
19907 | ||
19908 | ||
19909 | static inline | |
19910 | void | |
19911 | dfield_set_type( | |
19912 | ||
19913 | dfield_t* field, | |
19914 | dtype_t* type) | |
19915 | { | |
19916 | ; | |
19917 | ||
19918 | field->type = *type; | |
19919 | } | |
19920 | ||
19921 | ||
19922 | ||
19923 | static inline | |
19924 | void* | |
19925 | dfield_get_data( | |
19926 | ||
19927 | ||
19928 | dfield_t* field) | |
19929 | { | |
19930 | ; | |
19931 | ; | |
19932 | ||
19933 | ||
19934 | return(field->data); | |
19935 | } | |
19936 | ||
19937 | ||
19938 | ||
19939 | static inline | |
19940 | ulint | |
19941 | dfield_get_len( | |
19942 | ||
19943 | ||
19944 | ||
19945 | dfield_t* field) | |
19946 | { | |
19947 | ; | |
19948 | ; | |
19949 | ||
19950 | ||
19951 | return(field->len); | |
19952 | } | |
19953 | ||
19954 | ||
19955 | ||
19956 | static inline | |
19957 | void | |
19958 | dfield_set_len( | |
19959 | ||
19960 | dfield_t* field, | |
19961 | ulint len) | |
19962 | { | |
19963 | ; | |
19964 | ||
19965 | field->len = len; | |
19966 | } | |
19967 | ||
19968 | ||
19969 | ||
19970 | static inline | |
19971 | void | |
19972 | dfield_set_data( | |
19973 | ||
19974 | dfield_t* field, | |
19975 | const void* data, | |
19976 | ulint len) | |
19977 | { | |
19978 | ; | |
19979 | ||
19980 | field->data = (void*) data; | |
19981 | field->len = len; | |
19982 | } | |
19983 | ||
19984 | ||
19985 | ||
19986 | static inline | |
19987 | void | |
19988 | dfield_copy_data( | |
19989 | ||
19990 | dfield_t* field1, | |
19991 | dfield_t* field2) | |
19992 | { | |
19993 | ; | |
19994 | ||
19995 | field1->data = field2->data; | |
19996 | field1->len = field2->len; | |
19997 | } | |
19998 | ||
19999 | ||
20000 | ||
20001 | static inline | |
20002 | void | |
20003 | dfield_copy( | |
20004 | ||
20005 | dfield_t* field1, | |
20006 | dfield_t* field2) | |
20007 | { | |
20008 | *field1 = *field2; | |
20009 | } | |
20010 | ||
20011 | ||
20012 | ||
20013 | static inline | |
20014 | ulint | |
20015 | dfield_datas_are_binary_equal( | |
20016 | ||
20017 | ||
20018 | dfield_t* field1, | |
20019 | dfield_t* field2) | |
20020 | { | |
20021 | ulint len; | |
20022 | ||
20023 | len = field1->len; | |
20024 | ||
20025 | if ((len != field2->len) | |
20026 | || ((len != 0xFFFFFFFF) | |
20027 | && (0 != ut_memcmp(field1->data, field2->data, len)))) { | |
20028 | ||
20029 | return((0)); | |
20030 | } | |
20031 | ||
20032 | return((1)); | |
20033 | } | |
20034 | ||
20035 | ||
20036 | ||
20037 | static inline | |
20038 | ulint | |
20039 | dtuple_get_info_bits( | |
20040 | ||
20041 | ||
20042 | dtuple_t* tuple) | |
20043 | { | |
20044 | ; | |
20045 | ||
20046 | return(tuple->info_bits); | |
20047 | } | |
20048 | ||
20049 | ||
20050 | ||
20051 | static inline | |
20052 | void | |
20053 | dtuple_set_info_bits( | |
20054 | ||
20055 | dtuple_t* tuple, | |
20056 | ulint info_bits) | |
20057 | { | |
20058 | ; | |
20059 | ||
20060 | tuple->info_bits = info_bits; | |
20061 | } | |
20062 | ||
20063 | ||
20064 | ||
20065 | static inline | |
20066 | ulint | |
20067 | dtuple_get_n_fields_cmp( | |
20068 | ||
20069 | ||
20070 | ||
20071 | dtuple_t* tuple) | |
20072 | { | |
20073 | ; | |
20074 | ||
20075 | return(tuple->n_fields_cmp); | |
20076 | } | |
20077 | ||
20078 | ||
20079 | ||
20080 | static inline | |
20081 | void | |
20082 | dtuple_set_n_fields_cmp( | |
20083 | ||
20084 | dtuple_t* tuple, | |
20085 | ulint n_fields_cmp) | |
20086 | ||
20087 | { | |
20088 | ; | |
20089 | ; | |
20090 | ||
20091 | tuple->n_fields_cmp = n_fields_cmp; | |
20092 | } | |
20093 | ||
20094 | ||
20095 | ||
20096 | static inline | |
20097 | ulint | |
20098 | dtuple_get_n_fields( | |
20099 | ||
20100 | ||
20101 | dtuple_t* tuple) | |
20102 | { | |
20103 | ; | |
20104 | ||
20105 | return(tuple->n_fields); | |
20106 | } | |
20107 | ||
20108 | ||
20109 | ||
20110 | static inline | |
20111 | dfield_t* | |
20112 | dtuple_get_nth_field( | |
20113 | ||
20114 | ||
20115 | dtuple_t* tuple, | |
20116 | ulint n) | |
20117 | { | |
20118 | ; | |
20119 | ; | |
20120 | ||
20121 | return(tuple->fields + n); | |
20122 | } | |
20123 | ||
20124 | ||
20125 | ||
20126 | ||
20127 | static inline | |
20128 | dtuple_t* | |
20129 | dtuple_create( | |
20130 | ||
20131 | ||
20132 | mem_heap_t* heap, | |
20133 | ||
20134 | ulint n_fields) | |
20135 | { | |
20136 | dtuple_t* tuple; | |
20137 | ||
20138 | ; | |
20139 | ||
20140 | tuple = (dtuple_t*) mem_heap_alloc(heap, sizeof(dtuple_t) | |
20141 | + n_fields * sizeof(dfield_t)); | |
20142 | tuple->info_bits = 0; | |
20143 | tuple->n_fields = n_fields; | |
20144 | tuple->n_fields_cmp = n_fields; | |
20145 | tuple->fields = (dfield_t*)(((unsigned char*)tuple) + sizeof(dtuple_t)); | |
20146 | # 280 "./include/data0data.ic" | |
20147 | return(tuple); | |
20148 | } | |
20149 | ||
20150 | ||
20151 | ||
20152 | ||
20153 | ||
20154 | static inline | |
20155 | ulint | |
20156 | dtuple_get_data_size( | |
20157 | ||
20158 | ||
20159 | dtuple_t* tuple) | |
20160 | { | |
20161 | dfield_t* field; | |
20162 | ulint n_fields; | |
20163 | ulint len; | |
20164 | ulint i; | |
20165 | ulint sum = 0; | |
20166 | ||
20167 | ; | |
20168 | ; | |
20169 | ; | |
20170 | ||
20171 | n_fields = tuple->n_fields; | |
20172 | ||
20173 | for (i = 0; i < n_fields; i++) { | |
20174 | field = dtuple_get_nth_field(tuple, i); | |
20175 | len = dfield_get_len(field); | |
20176 | ||
20177 | if (len == 0xFFFFFFFF) { | |
20178 | len = dtype_get_sql_null_size(dfield_get_type(field)); | |
20179 | } | |
20180 | ||
20181 | sum += len; | |
20182 | } | |
20183 | ||
20184 | return(sum); | |
20185 | } | |
20186 | ||
20187 | ||
20188 | ||
20189 | static inline | |
20190 | void | |
20191 | dtuple_set_types_binary( | |
20192 | ||
20193 | dtuple_t* tuple, | |
20194 | ulint n) | |
20195 | { | |
20196 | dtype_t* dfield_type; | |
20197 | ulint i; | |
20198 | ||
20199 | for (i = 0; i < n; i++) { | |
20200 | dfield_type = dfield_get_type(dtuple_get_nth_field(tuple, i)); | |
20201 | dtype_set(dfield_type, 4, 0, 0, 0); | |
20202 | } | |
20203 | } | |
20204 | ||
20205 | ||
20206 | ||
20207 | static inline | |
20208 | ulint | |
20209 | dtuple_fold( | |
20210 | ||
20211 | ||
20212 | dtuple_t* tuple, | |
20213 | ulint n_fields, | |
20214 | ulint n_bytes, | |
20215 | ||
20216 | dulint tree_id) | |
20217 | { | |
20218 | dfield_t* field; | |
20219 | ulint i; | |
20220 | unsigned char* data; | |
20221 | ulint len; | |
20222 | ulint fold; | |
20223 | ||
20224 | ; | |
20225 | ; | |
20226 | ; | |
20227 | ||
20228 | fold = ut_fold_dulint(tree_id); | |
20229 | ||
20230 | for (i = 0; i < n_fields; i++) { | |
20231 | field = dtuple_get_nth_field(tuple, i); | |
20232 | ||
20233 | data = (unsigned char*) dfield_get_data(field); | |
20234 | len = dfield_get_len(field); | |
20235 | ||
20236 | if (len != 0xFFFFFFFF) { | |
20237 | fold = ut_fold_ulint_pair(fold, | |
20238 | ut_fold_binary(data, len)); | |
20239 | } | |
20240 | } | |
20241 | ||
20242 | if (n_bytes > 0) { | |
20243 | field = dtuple_get_nth_field(tuple, i); | |
20244 | ||
20245 | data = (unsigned char*) dfield_get_data(field); | |
20246 | len = dfield_get_len(field); | |
20247 | ||
20248 | if (len != 0xFFFFFFFF) { | |
20249 | if (len > n_bytes) { | |
20250 | len = n_bytes; | |
20251 | } | |
20252 | ||
20253 | fold = ut_fold_ulint_pair(fold, | |
20254 | ut_fold_binary(data, len)); | |
20255 | } | |
20256 | } | |
20257 | ||
20258 | return(fold); | |
20259 | } | |
20260 | ||
20261 | ||
20262 | ||
20263 | static inline | |
20264 | void | |
20265 | data_write_sql_null( | |
20266 | ||
20267 | unsigned char* data, | |
20268 | ulint len) | |
20269 | { | |
20270 | ulint j; | |
20271 | ||
20272 | for (j = 0; j < len; j++) { | |
20273 | data[j] = '\0'; | |
20274 | } | |
20275 | } | |
20276 | ||
20277 | ||
20278 | ||
20279 | static inline | |
20280 | ulint | |
20281 | dtuple_contains_null( | |
20282 | ||
20283 | ||
20284 | dtuple_t* tuple) | |
20285 | { | |
20286 | ulint n; | |
20287 | ulint i; | |
20288 | ||
20289 | n = dtuple_get_n_fields(tuple); | |
20290 | ||
20291 | for (i = 0; i < n; i++) { | |
20292 | if (dfield_get_len(dtuple_get_nth_field(tuple, i)) | |
20293 | == 0xFFFFFFFF) { | |
20294 | ||
20295 | return((1)); | |
20296 | } | |
20297 | } | |
20298 | ||
20299 | return((0)); | |
20300 | } | |
20301 | # 422 "./include/data0data.h" 2 | |
20302 | # 16 "./include/dict0mem.h" 2 | |
20303 | ||
20304 | # 1 "./include/rem0types.h" 1 | |
20305 | # 13 "./include/rem0types.h" | |
20306 | typedef unsigned char rec_t; | |
20307 | # 18 "./include/dict0mem.h" 2 | |
20308 | # 1 "./include/btr0types.h" 1 | |
20309 | # 17 "./include/btr0types.h" | |
20310 | typedef struct btr_pcur_struct btr_pcur_t; | |
20311 | typedef struct btr_cur_struct btr_cur_t; | |
20312 | typedef struct btr_search_struct btr_search_t; | |
20313 | # 19 "./include/dict0mem.h" 2 | |
20314 | ||
20315 | ||
20316 | ||
20317 | ||
20318 | ||
20319 | ||
20320 | ||
20321 | # 1 "./include/que0types.h" 1 | |
20322 | # 16 "./include/que0types.h" | |
20323 | typedef void que_node_t; | |
20324 | ||
20325 | typedef struct que_fork_struct que_fork_t; | |
20326 | ||
20327 | ||
20328 | typedef que_fork_t que_t; | |
20329 | ||
20330 | typedef struct que_thr_struct que_thr_t; | |
20331 | typedef struct que_common_struct que_common_t; | |
20332 | ||
20333 | ||
20334 | ||
20335 | ||
20336 | struct que_common_struct{ | |
20337 | ulint type; | |
20338 | que_node_t* parent; | |
20339 | que_node_t* brother; | |
20340 | dfield_t val; | |
20341 | ulint val_buf_size; | |
20342 | ||
20343 | ||
20344 | ||
20345 | ||
20346 | ||
20347 | ||
20348 | }; | |
20349 | # 27 "./include/dict0mem.h" 2 | |
20350 | # 48 "./include/dict0mem.h" | |
20351 | dict_table_t* | |
20352 | dict_mem_table_create( | |
20353 | ||
20354 | ||
20355 | const char* name, | |
20356 | ulint space, | |
20357 | ||
20358 | ||
20359 | ||
20360 | ulint n_cols, | |
20361 | ulint comp); | |
20362 | ||
20363 | ||
20364 | ||
20365 | void | |
20366 | dict_mem_table_free( | |
20367 | ||
20368 | dict_table_t* table); | |
20369 | ||
20370 | ||
20371 | ||
20372 | dict_cluster_t* | |
20373 | dict_mem_cluster_create( | |
20374 | ||
20375 | ||
20376 | ||
20377 | const char* name, | |
20378 | ulint space, | |
20379 | ||
20380 | ||
20381 | ulint n_cols, | |
20382 | ulint mix_len); | |
20383 | ||
20384 | ||
20385 | ||
20386 | ||
20387 | void | |
20388 | dict_mem_table_make_cluster_member( | |
20389 | ||
20390 | dict_table_t* table, | |
20391 | const char* cluster_name); | |
20392 | ||
20393 | ||
20394 | ||
20395 | void | |
20396 | dict_mem_table_add_col( | |
20397 | ||
20398 | dict_table_t* table, | |
20399 | const char* name, | |
20400 | ulint mtype, | |
20401 | ulint prtype, | |
20402 | ulint len, | |
20403 | ulint prec); | |
20404 | ||
20405 | ||
20406 | ||
20407 | dict_index_t* | |
20408 | dict_mem_index_create( | |
20409 | ||
20410 | ||
20411 | const char* table_name, | |
20412 | const char* index_name, | |
20413 | ulint space, | |
20414 | ||
20415 | ||
20416 | ulint type, | |
20417 | ||
20418 | ulint n_fields); | |
20419 | ||
20420 | ||
20421 | ||
20422 | ||
20423 | ||
20424 | void | |
20425 | dict_mem_index_add_field( | |
20426 | ||
20427 | dict_index_t* index, | |
20428 | const char* name, | |
20429 | ulint order, | |
20430 | ||
20431 | ulint prefix_len); | |
20432 | ||
20433 | ||
20434 | ||
20435 | ||
20436 | ||
20437 | void | |
20438 | dict_mem_index_free( | |
20439 | ||
20440 | dict_index_t* index); | |
20441 | ||
20442 | ||
20443 | ||
20444 | dict_foreign_t* | |
20445 | dict_mem_foreign_create(void); | |
20446 | ||
20447 | ||
20448 | ||
20449 | ||
20450 | struct dict_col_struct{ | |
20451 | hash_node_t hash; | |
20452 | ulint ind; | |
20453 | ||
20454 | ulint clust_pos; | |
20455 | ||
20456 | ulint ord_part; | |
20457 | ||
20458 | const char* name; | |
20459 | dtype_t type; | |
20460 | dict_table_t* table; | |
20461 | ulint aux; | |
20462 | ||
20463 | }; | |
20464 | # 173 "./include/dict0mem.h" | |
20465 | struct dict_field_struct{ | |
20466 | dict_col_t* col; | |
20467 | const char* name; | |
20468 | ulint order; | |
20469 | ||
20470 | ulint prefix_len; | |
20471 | ||
20472 | ||
20473 | ||
20474 | ||
20475 | ||
20476 | ||
20477 | ulint fixed_len; | |
20478 | ||
20479 | ||
20480 | ulint fixed_offs; | |
20481 | ||
20482 | ||
20483 | ||
20484 | }; | |
20485 | ||
20486 | ||
20487 | struct dict_tree_struct{ | |
20488 | ulint type; | |
20489 | dulint id; | |
20490 | ||
20491 | ||
20492 | ulint space; | |
20493 | ulint page; | |
20494 | unsigned char pad[64]; | |
20495 | ||
20496 | rw_lock_t lock; | |
20497 | ||
20498 | ulint mem_fix; | |
20499 | ||
20500 | ||
20501 | ||
20502 | struct { ulint count; dict_index_t * start; dict_index_t * end; } | |
20503 | tree_indexes; | |
20504 | ||
20505 | ||
20506 | ||
20507 | ||
20508 | ||
20509 | ulint magic_n; | |
20510 | }; | |
20511 | ||
20512 | ||
20513 | ||
20514 | ||
20515 | struct dict_index_struct{ | |
20516 | dulint id; | |
20517 | mem_heap_t* heap; | |
20518 | ulint type; | |
20519 | const char* name; | |
20520 | const char* table_name; | |
20521 | dict_table_t* table; | |
20522 | ulint space; | |
20523 | ulint trx_id_offset; | |
20524 | ||
20525 | ||
20526 | ||
20527 | ulint n_user_defined_cols; | |
20528 | ||
20529 | ||
20530 | ||
20531 | ulint n_uniq; | |
20532 | ||
20533 | ||
20534 | ulint n_def; | |
20535 | ulint n_fields; | |
20536 | dict_field_t* fields; | |
20537 | ulint n_nullable; | |
20538 | struct { dict_index_t * prev; dict_index_t * next; } | |
20539 | indexes; | |
20540 | dict_tree_t* tree; | |
20541 | struct { dict_index_t * prev; dict_index_t * next; } | |
20542 | tree_indexes; | |
20543 | ||
20544 | ulint cached; | |
20545 | ||
20546 | btr_search_t* search_info; | |
20547 | ||
20548 | ib_longlong* stat_n_diff_key_vals; | |
20549 | ||
20550 | ||
20551 | ||
20552 | ||
20553 | ulint stat_index_size; | |
20554 | ||
20555 | ulint stat_n_leaf_pages; | |
20556 | ||
20557 | ||
20558 | ulint magic_n; | |
20559 | }; | |
20560 | ||
20561 | ||
20562 | ||
20563 | ||
20564 | struct dict_foreign_struct{ | |
20565 | mem_heap_t* heap; | |
20566 | ||
20567 | char* id; | |
20568 | ||
20569 | ulint type; | |
20570 | ||
20571 | char* foreign_table_name; | |
20572 | dict_table_t* foreign_table; | |
20573 | const char** foreign_col_names; | |
20574 | ||
20575 | char* referenced_table_name; | |
20576 | dict_table_t* referenced_table; | |
20577 | ||
20578 | const char** referenced_col_names; | |
20579 | ||
20580 | ulint n_fields; | |
20581 | ||
20582 | ||
20583 | ||
20584 | ||
20585 | ||
20586 | dict_index_t* foreign_index; | |
20587 | ||
20588 | ||
20589 | ||
20590 | ||
20591 | dict_index_t* referenced_index; | |
20592 | struct { dict_foreign_t * prev; dict_foreign_t * next; } | |
20593 | foreign_list; | |
20594 | ||
20595 | struct { dict_foreign_t * prev; dict_foreign_t * next; } | |
20596 | referenced_list; | |
20597 | ||
20598 | }; | |
20599 | # 321 "./include/dict0mem.h" | |
20600 | struct dict_table_struct{ | |
20601 | dulint id; | |
20602 | ulint type; | |
20603 | mem_heap_t* heap; | |
20604 | const char* name; | |
20605 | const char* dir_path_of_temp_table; | |
20606 | ||
20607 | ||
20608 | ||
20609 | ||
20610 | ||
20611 | ulint space; | |
20612 | ||
20613 | ulint ibd_file_missing; | |
20614 | ||
20615 | ||
20616 | ||
20617 | ulint tablespace_discarded; | |
20618 | ||
20619 | ||
20620 | ulint comp; | |
20621 | hash_node_t name_hash; | |
20622 | hash_node_t id_hash; | |
20623 | ulint n_def; | |
20624 | ulint n_cols; | |
20625 | dict_col_t* cols; | |
20626 | struct { ulint count; dict_index_t * start; dict_index_t * end; } | |
20627 | indexes; | |
20628 | struct { ulint count; dict_foreign_t * start; dict_foreign_t * end; } | |
20629 | foreign_list; | |
20630 | ||
20631 | ||
20632 | struct { ulint count; dict_foreign_t * start; dict_foreign_t * end; } | |
20633 | referenced_list; | |
20634 | ||
20635 | struct { dict_table_t * prev; dict_table_t * next; } | |
20636 | table_LRU; | |
20637 | ulint mem_fix; | |
20638 | ||
20639 | ||
20640 | ulint n_mysql_handles_opened; | |
20641 | ||
20642 | ||
20643 | ||
20644 | ||
20645 | ||
20646 | ulint n_foreign_key_checks_running; | |
20647 | ||
20648 | ||
20649 | ||
20650 | ||
20651 | ||
20652 | ulint cached; | |
20653 | ||
20654 | ib_lock_t* auto_inc_lock; | |
20655 | ||
20656 | ||
20657 | ||
20658 | ||
20659 | ||
20660 | ||
20661 | dulint query_cache_inv_trx_id; | |
20662 | ||
20663 | ||
20664 | ||
20665 | ||
20666 | ||
20667 | ||
20668 | struct { ulint count; ib_lock_t * start; ib_lock_t * end; } | |
20669 | locks; | |
20670 | ||
20671 | dulint mix_id; | |
20672 | ||
20673 | ulint mix_len; | |
20674 | ||
20675 | ulint mix_id_len; | |
20676 | unsigned char mix_id_buf[12]; | |
20677 | ||
20678 | ||
20679 | const char* cluster_name; | |
20680 | ||
20681 | ||
20682 | ulint does_not_fit_in_memory; | |
20683 | # 413 "./include/dict0mem.h" | |
20684 | ib_longlong stat_n_rows; | |
20685 | ||
20686 | ||
20687 | ulint stat_clustered_index_size; | |
20688 | ||
20689 | ||
20690 | ulint stat_sum_of_other_index_sizes; | |
20691 | ||
20692 | ulint stat_initialized; | |
20693 | ||
20694 | ||
20695 | ulint stat_modified_counter; | |
20696 | # 437 "./include/dict0mem.h" | |
20697 | ib_mutex_t autoinc_mutex; | |
20698 | ||
20699 | ||
20700 | ulint autoinc_inited; | |
20701 | ||
20702 | ||
20703 | ||
20704 | ib_longlong autoinc; | |
20705 | ||
20706 | ulint magic_n; | |
20707 | }; | |
20708 | ||
20709 | ||
20710 | ||
20711 | # 1 "./include/dict0mem.ic" 1 | |
20712 | # 452 "./include/dict0mem.h" 2 | |
20713 | # 15 "./include/dict0dict.h" 2 | |
20714 | # 32 "./include/dict0dict.h" | |
20715 | void | |
20716 | dict_casedn_str( | |
20717 | ||
20718 | char* a); | |
20719 | ||
20720 | ||
20721 | ||
20722 | ulint | |
20723 | dict_get_db_name_len( | |
20724 | ||
20725 | ||
20726 | const char* name); | |
20727 | ||
20728 | ||
20729 | ||
20730 | ||
20731 | const char* | |
20732 | dict_accept( | |
20733 | ||
20734 | ||
20735 | ||
20736 | const char* ptr, | |
20737 | const char* string, | |
20738 | ||
20739 | ulint* success); | |
20740 | ||
20741 | ||
20742 | ||
20743 | void | |
20744 | dict_table_decrement_handle_count( | |
20745 | ||
20746 | dict_table_t* table); | |
20747 | ||
20748 | ||
20749 | ||
20750 | void | |
20751 | dict_init(void); | |
20752 | # 77 "./include/dict0dict.h" | |
20753 | void | |
20754 | dict_load_space_id_list(void); | |
20755 | ||
20756 | ||
20757 | ||
20758 | static inline | |
20759 | dtype_t* | |
20760 | dict_col_get_type( | |
20761 | ||
20762 | dict_col_t* col); | |
20763 | # 100 "./include/dict0dict.h" | |
20764 | static inline | |
20765 | ulint | |
20766 | dict_col_get_no( | |
20767 | ||
20768 | dict_col_t* col); | |
20769 | ||
20770 | ||
20771 | static inline | |
20772 | ulint | |
20773 | dict_col_get_clust_pos( | |
20774 | ||
20775 | dict_col_t* col); | |
20776 | ||
20777 | ||
20778 | ||
20779 | ||
20780 | ulint | |
20781 | dict_col_name_is_reserved( | |
20782 | ||
20783 | ||
20784 | const char* name); | |
20785 | ||
20786 | ||
20787 | ||
20788 | ||
20789 | void | |
20790 | dict_table_autoinc_initialize( | |
20791 | ||
20792 | dict_table_t* table, | |
20793 | ib_longlong value); | |
20794 | ||
20795 | ||
20796 | ||
20797 | ||
20798 | ib_longlong | |
20799 | dict_table_autoinc_get( | |
20800 | ||
20801 | ||
20802 | dict_table_t* table); | |
20803 | ||
20804 | ||
20805 | ||
20806 | void | |
20807 | dict_table_autoinc_decrement( | |
20808 | ||
20809 | dict_table_t* table); | |
20810 | ||
20811 | ||
20812 | ||
20813 | ||
20814 | ib_longlong | |
20815 | dict_table_autoinc_read( | |
20816 | ||
20817 | ||
20818 | dict_table_t* table); | |
20819 | ||
20820 | ||
20821 | ||
20822 | ||
20823 | ib_longlong | |
20824 | dict_table_autoinc_peek( | |
20825 | ||
20826 | ||
20827 | dict_table_t* table); | |
20828 | ||
20829 | ||
20830 | ||
20831 | ||
20832 | void | |
20833 | dict_table_autoinc_update( | |
20834 | ||
20835 | ||
20836 | dict_table_t* table, | |
20837 | ib_longlong value); | |
20838 | ||
20839 | ||
20840 | ||
20841 | void | |
20842 | dict_table_add_to_cache( | |
20843 | ||
20844 | dict_table_t* table); | |
20845 | ||
20846 | ||
20847 | ||
20848 | void | |
20849 | dict_table_remove_from_cache( | |
20850 | ||
20851 | dict_table_t* table); | |
20852 | ||
20853 | ||
20854 | ||
20855 | ulint | |
20856 | dict_table_rename_in_cache( | |
20857 | ||
20858 | ||
20859 | dict_table_t* table, | |
20860 | const char* new_name, | |
20861 | ulint rename_also_foreigns); | |
20862 | ||
20863 | ||
20864 | ||
20865 | ||
20866 | ||
20867 | ||
20868 | void | |
20869 | dict_table_change_id_in_cache( | |
20870 | ||
20871 | dict_table_t* table, | |
20872 | dulint new_id); | |
20873 | ||
20874 | ||
20875 | ||
20876 | ||
20877 | ||
20878 | ||
20879 | ulint | |
20880 | dict_foreign_add_to_cache( | |
20881 | ||
20882 | ||
20883 | dict_foreign_t* foreign, | |
20884 | ulint check_charsets); | |
20885 | ||
20886 | ||
20887 | ||
20888 | ||
20889 | ulint | |
20890 | dict_table_referenced_by_foreign_key( | |
20891 | ||
20892 | ||
20893 | ||
20894 | dict_table_t* table); | |
20895 | # 239 "./include/dict0dict.h" | |
20896 | ulint | |
20897 | dict_create_foreign_constraints( | |
20898 | ||
20899 | ||
20900 | trx_t* trx, | |
20901 | const char* sql_string, | |
20902 | ||
20903 | ||
20904 | ||
20905 | ||
20906 | ||
20907 | ||
20908 | ||
20909 | const char* name, | |
20910 | ||
20911 | ||
20912 | ulint reject_fks); | |
20913 | ||
20914 | ||
20915 | ||
20916 | ||
20917 | ||
20918 | ulint | |
20919 | dict_foreign_parse_drop_constraints( | |
20920 | ||
20921 | ||
20922 | ||
20923 | ||
20924 | ||
20925 | mem_heap_t* heap, | |
20926 | ||
20927 | trx_t* trx, | |
20928 | dict_table_t* table, | |
20929 | ulint* n, | |
20930 | ||
20931 | const char*** constraints_to_drop); | |
20932 | ||
20933 | ||
20934 | ||
20935 | ||
20936 | ||
20937 | ||
20938 | dict_table_t* | |
20939 | dict_table_get( | |
20940 | ||
20941 | ||
20942 | ||
20943 | const char* table_name, | |
20944 | trx_t* trx); | |
20945 | ||
20946 | ||
20947 | ||
20948 | ||
20949 | dict_table_t* | |
20950 | dict_table_get_and_increment_handle_count( | |
20951 | ||
20952 | ||
20953 | ||
20954 | const char* table_name, | |
20955 | trx_t* trx); | |
20956 | ||
20957 | ||
20958 | ||
20959 | dict_table_t* | |
20960 | dict_table_get_on_id( | |
20961 | ||
20962 | ||
20963 | dulint table_id, | |
20964 | trx_t* trx); | |
20965 | ||
20966 | ||
20967 | static inline | |
20968 | dict_table_t* | |
20969 | dict_table_get_on_id_low( | |
20970 | ||
20971 | ||
20972 | dulint table_id, | |
20973 | trx_t* trx); | |
20974 | ||
20975 | ||
20976 | static inline | |
20977 | void | |
20978 | dict_table_release( | |
20979 | ||
20980 | dict_table_t* table); | |
20981 | ||
20982 | ||
20983 | static inline | |
20984 | dict_table_t* | |
20985 | dict_table_check_if_in_cache_low( | |
20986 | ||
20987 | ||
20988 | const char* table_name); | |
20989 | ||
20990 | ||
20991 | ||
20992 | static inline | |
20993 | dict_table_t* | |
20994 | dict_table_get_low( | |
20995 | ||
20996 | ||
20997 | const char* table_name); | |
20998 | ||
20999 | ||
21000 | static inline | |
21001 | dict_index_t* | |
21002 | dict_table_get_index( | |
21003 | ||
21004 | ||
21005 | dict_table_t* table, | |
21006 | const char* name); | |
21007 | ||
21008 | ||
21009 | ||
21010 | dict_index_t* | |
21011 | dict_table_get_index_noninline( | |
21012 | ||
21013 | ||
21014 | dict_table_t* table, | |
21015 | const char* name); | |
21016 | ||
21017 | ||
21018 | ||
21019 | void | |
21020 | dict_table_print( | |
21021 | ||
21022 | dict_table_t* table); | |
21023 | ||
21024 | ||
21025 | ||
21026 | void | |
21027 | dict_table_print_low( | |
21028 | ||
21029 | dict_table_t* table); | |
21030 | ||
21031 | ||
21032 | ||
21033 | void | |
21034 | dict_table_print_by_name( | |
21035 | ||
21036 | const char* name); | |
21037 | ||
21038 | ||
21039 | ||
21040 | void | |
21041 | dict_print_info_on_foreign_keys( | |
21042 | ||
21043 | ulint create_table_format, | |
21044 | ||
21045 | ||
21046 | ||
21047 | FILE* file, | |
21048 | trx_t* trx, | |
21049 | dict_table_t* table); | |
21050 | ||
21051 | ||
21052 | ||
21053 | void | |
21054 | dict_print_info_on_foreign_key_in_create_format( | |
21055 | ||
21056 | FILE* file, | |
21057 | trx_t* trx, | |
21058 | dict_foreign_t* foreign, | |
21059 | ulint add_newline); | |
21060 | ||
21061 | ||
21062 | void | |
21063 | dict_index_name_print( | |
21064 | ||
21065 | FILE* file, | |
21066 | trx_t* trx, | |
21067 | const dict_index_t* index); | |
21068 | ||
21069 | ||
21070 | static inline | |
21071 | dict_index_t* | |
21072 | dict_table_get_first_index( | |
21073 | ||
21074 | ||
21075 | dict_table_t* table); | |
21076 | ||
21077 | ||
21078 | ||
21079 | dict_index_t* | |
21080 | dict_table_get_first_index_noninline( | |
21081 | ||
21082 | ||
21083 | dict_table_t* table); | |
21084 | ||
21085 | ||
21086 | static inline | |
21087 | dict_index_t* | |
21088 | dict_table_get_next_index( | |
21089 | ||
21090 | ||
21091 | dict_index_t* index); | |
21092 | ||
21093 | ||
21094 | ||
21095 | dict_index_t* | |
21096 | dict_table_get_next_index_noninline( | |
21097 | ||
21098 | ||
21099 | dict_index_t* index); | |
21100 | ||
21101 | ||
21102 | ||
21103 | static inline | |
21104 | ulint | |
21105 | dict_table_get_n_user_cols( | |
21106 | ||
21107 | ||
21108 | ||
21109 | dict_table_t* table); | |
21110 | ||
21111 | ||
21112 | static inline | |
21113 | ulint | |
21114 | dict_table_get_n_sys_cols( | |
21115 | ||
21116 | ||
21117 | ||
21118 | dict_table_t* table); | |
21119 | ||
21120 | ||
21121 | ||
21122 | static inline | |
21123 | ulint | |
21124 | dict_table_get_n_cols( | |
21125 | ||
21126 | ||
21127 | dict_table_t* table); | |
21128 | ||
21129 | ||
21130 | static inline | |
21131 | dict_col_t* | |
21132 | dict_table_get_nth_col( | |
21133 | ||
21134 | ||
21135 | dict_table_t* table, | |
21136 | ulint pos); | |
21137 | ||
21138 | ||
21139 | ||
21140 | dict_col_t* | |
21141 | dict_table_get_nth_col_noninline( | |
21142 | ||
21143 | ||
21144 | dict_table_t* table, | |
21145 | ulint pos); | |
21146 | ||
21147 | ||
21148 | static inline | |
21149 | dict_col_t* | |
21150 | dict_table_get_sys_col( | |
21151 | ||
21152 | ||
21153 | dict_table_t* table, | |
21154 | ulint sys); | |
21155 | ||
21156 | ||
21157 | static inline | |
21158 | ulint | |
21159 | dict_table_get_sys_col_no( | |
21160 | ||
21161 | ||
21162 | dict_table_t* table, | |
21163 | ulint sys); | |
21164 | ||
21165 | ||
21166 | ||
21167 | ||
21168 | ulint | |
21169 | dict_table_col_in_clustered_key( | |
21170 | ||
21171 | ||
21172 | ||
21173 | dict_table_t* table, | |
21174 | ulint n); | |
21175 | ||
21176 | ||
21177 | ||
21178 | void | |
21179 | dict_table_copy_types( | |
21180 | ||
21181 | dtuple_t* tuple, | |
21182 | dict_table_t* table); | |
21183 | ||
21184 | ||
21185 | ||
21186 | ||
21187 | ||
21188 | dict_index_t* | |
21189 | dict_index_find_on_id_low( | |
21190 | ||
21191 | ||
21192 | dulint id); | |
21193 | ||
21194 | ||
21195 | ||
21196 | ulint | |
21197 | dict_index_add_to_cache( | |
21198 | ||
21199 | ||
21200 | dict_table_t* table, | |
21201 | dict_index_t* index, | |
21202 | ||
21203 | ulint page_no); | |
21204 | ||
21205 | ||
21206 | ||
21207 | static inline | |
21208 | ulint | |
21209 | dict_index_get_n_fields( | |
21210 | ||
21211 | ||
21212 | dict_index_t* index); | |
21213 | ||
21214 | ||
21215 | ||
21216 | ||
21217 | ||
21218 | ||
21219 | static inline | |
21220 | ulint | |
21221 | dict_index_get_n_unique( | |
21222 | ||
21223 | ||
21224 | dict_index_t* index); | |
21225 | ||
21226 | ||
21227 | ||
21228 | ||
21229 | ||
21230 | static inline | |
21231 | ulint | |
21232 | dict_index_get_n_unique_in_tree( | |
21233 | ||
21234 | ||
21235 | dict_index_t* index); | |
21236 | ||
21237 | ||
21238 | ||
21239 | ||
21240 | ||
21241 | ||
21242 | static inline | |
21243 | ulint | |
21244 | dict_index_get_n_ordering_defined_by_user( | |
21245 | ||
21246 | ||
21247 | dict_index_t* index); | |
21248 | ||
21249 | ||
21250 | ||
21251 | static inline | |
21252 | dict_field_t* | |
21253 | dict_index_get_nth_field( | |
21254 | ||
21255 | ||
21256 | dict_index_t* index, | |
21257 | ulint pos); | |
21258 | ||
21259 | ||
21260 | static inline | |
21261 | dtype_t* | |
21262 | dict_index_get_nth_type( | |
21263 | ||
21264 | ||
21265 | dict_index_t* index, | |
21266 | ulint pos); | |
21267 | ||
21268 | ||
21269 | static inline | |
21270 | ulint | |
21271 | dict_index_get_nth_col_no( | |
21272 | ||
21273 | ||
21274 | dict_index_t* index, | |
21275 | ulint pos); | |
21276 | ||
21277 | ||
21278 | ||
21279 | ulint | |
21280 | dict_index_get_nth_col_pos( | |
21281 | ||
21282 | ||
21283 | ||
21284 | ||
21285 | dict_index_t* index, | |
21286 | ulint n); | |
21287 | ||
21288 | ||
21289 | ||
21290 | ulint | |
21291 | dict_index_contains_col_or_prefix( | |
21292 | ||
21293 | ||
21294 | ||
21295 | dict_index_t* index, | |
21296 | ulint n); | |
21297 | ||
21298 | ||
21299 | ||
21300 | ||
21301 | ||
21302 | ||
21303 | ulint | |
21304 | dict_index_get_nth_field_pos( | |
21305 | ||
21306 | ||
21307 | ||
21308 | ||
21309 | dict_index_t* index, | |
21310 | dict_index_t* index2, | |
21311 | ulint n); | |
21312 | ||
21313 | ||
21314 | ||
21315 | ulint | |
21316 | dict_table_get_nth_col_pos( | |
21317 | ||
21318 | ||
21319 | ||
21320 | dict_table_t* table, | |
21321 | ulint n); | |
21322 | ||
21323 | ||
21324 | static inline | |
21325 | ulint | |
21326 | dict_index_get_sys_col_pos( | |
21327 | ||
21328 | ||
21329 | ||
21330 | dict_index_t* index, | |
21331 | ulint type); | |
21332 | ||
21333 | ||
21334 | ||
21335 | void | |
21336 | dict_index_add_col( | |
21337 | ||
21338 | dict_index_t* index, | |
21339 | dict_col_t* col, | |
21340 | ulint order, | |
21341 | ulint prefix_len); | |
21342 | ||
21343 | ||
21344 | ||
21345 | void | |
21346 | dict_index_copy_types( | |
21347 | ||
21348 | dtuple_t* tuple, | |
21349 | dict_index_t* index, | |
21350 | ulint n_fields); | |
21351 | ||
21352 | ||
21353 | static inline | |
21354 | dict_tree_t* | |
21355 | dict_index_get_tree( | |
21356 | ||
21357 | ||
21358 | dict_index_t* index); | |
21359 | ||
21360 | ||
21361 | static inline | |
21362 | ulint | |
21363 | dict_field_get_order( | |
21364 | ||
21365 | dict_field_t* field); | |
21366 | ||
21367 | ||
21368 | static inline | |
21369 | dict_col_t* | |
21370 | dict_field_get_col( | |
21371 | ||
21372 | dict_field_t* field); | |
21373 | ||
21374 | ||
21375 | ||
21376 | dict_tree_t* | |
21377 | dict_tree_create( | |
21378 | ||
21379 | ||
21380 | dict_index_t* index, | |
21381 | ||
21382 | ||
21383 | ulint page_no); | |
21384 | ||
21385 | ||
21386 | ||
21387 | void | |
21388 | dict_tree_free( | |
21389 | ||
21390 | dict_tree_t* tree); | |
21391 | ||
21392 | ||
21393 | ||
21394 | dict_index_t* | |
21395 | dict_tree_find_index( | |
21396 | ||
21397 | ||
21398 | dict_tree_t* tree, | |
21399 | rec_t* rec); | |
21400 | ||
21401 | ||
21402 | ||
21403 | ||
21404 | dict_index_t* | |
21405 | dict_tree_find_index_for_tuple( | |
21406 | ||
21407 | ||
21408 | ||
21409 | dict_tree_t* tree, | |
21410 | dtuple_t* tuple); | |
21411 | ||
21412 | ||
21413 | ||
21414 | ulint | |
21415 | dict_is_mixed_table_rec( | |
21416 | ||
21417 | ||
21418 | ||
21419 | dict_table_t* table, | |
21420 | rec_t* rec); | |
21421 | ||
21422 | ||
21423 | ||
21424 | dict_index_t* | |
21425 | dict_index_get_if_in_cache( | |
21426 | ||
21427 | ||
21428 | dulint index_id); | |
21429 | ||
21430 | ||
21431 | ||
21432 | ||
21433 | ulint | |
21434 | dict_tree_check_search_tuple( | |
21435 | ||
21436 | ||
21437 | dict_tree_t* tree, | |
21438 | dtuple_t* tuple); | |
21439 | ||
21440 | ||
21441 | ||
21442 | dtuple_t* | |
21443 | dict_tree_build_node_ptr( | |
21444 | ||
21445 | ||
21446 | dict_tree_t* tree, | |
21447 | rec_t* rec, | |
21448 | ||
21449 | ulint page_no, | |
21450 | mem_heap_t* heap, | |
21451 | ulint level); | |
21452 | ||
21453 | ||
21454 | ||
21455 | ||
21456 | ||
21457 | rec_t* | |
21458 | dict_tree_copy_rec_order_prefix( | |
21459 | ||
21460 | ||
21461 | dict_tree_t* tree, | |
21462 | rec_t* rec, | |
21463 | ulint* n_fields, | |
21464 | unsigned char** buf, | |
21465 | ||
21466 | ulint* buf_size); | |
21467 | ||
21468 | ||
21469 | ||
21470 | dtuple_t* | |
21471 | dict_tree_build_data_tuple( | |
21472 | ||
21473 | ||
21474 | dict_tree_t* tree, | |
21475 | rec_t* rec, | |
21476 | ulint n_fields, | |
21477 | mem_heap_t* heap); | |
21478 | ||
21479 | ||
21480 | static inline | |
21481 | ulint | |
21482 | dict_tree_get_space( | |
21483 | ||
21484 | ||
21485 | dict_tree_t* tree); | |
21486 | ||
21487 | ||
21488 | static inline | |
21489 | void | |
21490 | dict_tree_set_space( | |
21491 | ||
21492 | dict_tree_t* tree, | |
21493 | ulint space); | |
21494 | ||
21495 | ||
21496 | static inline | |
21497 | ulint | |
21498 | dict_tree_get_page( | |
21499 | ||
21500 | ||
21501 | dict_tree_t* tree); | |
21502 | ||
21503 | ||
21504 | static inline | |
21505 | void | |
21506 | dict_tree_set_page( | |
21507 | ||
21508 | dict_tree_t* tree, | |
21509 | ulint page); | |
21510 | ||
21511 | ||
21512 | static inline | |
21513 | ulint | |
21514 | dict_tree_get_type( | |
21515 | ||
21516 | ||
21517 | dict_tree_t* tree); | |
21518 | ||
21519 | ||
21520 | static inline | |
21521 | rw_lock_t* | |
21522 | dict_tree_get_lock( | |
21523 | ||
21524 | ||
21525 | dict_tree_t* tree); | |
21526 | ||
21527 | ||
21528 | ||
21529 | ||
21530 | static inline | |
21531 | ulint | |
21532 | dict_tree_get_space_reserve( | |
21533 | ||
21534 | ||
21535 | ||
21536 | dict_tree_t* tree); | |
21537 | ||
21538 | ||
21539 | ||
21540 | ulint | |
21541 | dict_index_calc_min_rec_len( | |
21542 | ||
21543 | dict_index_t* index); | |
21544 | ||
21545 | ||
21546 | ||
21547 | ||
21548 | void | |
21549 | dict_update_statistics_low( | |
21550 | ||
21551 | dict_table_t* table, | |
21552 | ulint has_dict_mutex); | |
21553 | ||
21554 | ||
21555 | ||
21556 | ||
21557 | ||
21558 | void | |
21559 | dict_update_statistics( | |
21560 | ||
21561 | dict_table_t* table); | |
21562 | ||
21563 | ||
21564 | ||
21565 | void | |
21566 | dict_mutex_enter_for_mysql(void); | |
21567 | ||
21568 | ||
21569 | ||
21570 | ||
21571 | void | |
21572 | dict_mutex_exit_for_mysql(void); | |
21573 | ||
21574 | ||
21575 | ||
21576 | ||
21577 | ulint | |
21578 | dict_tables_have_same_db( | |
21579 | ||
21580 | ||
21581 | const char* name1, | |
21582 | ||
21583 | const char* name2); | |
21584 | ||
21585 | ||
21586 | ||
21587 | ||
21588 | ||
21589 | ||
21590 | ||
21591 | const char* | |
21592 | dict_scan_to( | |
21593 | ||
21594 | ||
21595 | const char* ptr, | |
21596 | const char* string); | |
21597 | ||
21598 | void | |
21599 | dict_table_LRU_trim( | |
21600 | ||
21601 | dict_table_t* self); | |
21602 | ||
21603 | ||
21604 | ||
21605 | extern FILE* dict_foreign_err_file; | |
21606 | extern ib_mutex_t dict_foreign_err_mutex; | |
21607 | ||
21608 | extern dict_sys_t* dict_sys; | |
21609 | extern rw_lock_t dict_operation_lock; | |
21610 | ||
21611 | ||
21612 | struct dict_sys_struct{ | |
21613 | ib_mutex_t mutex; | |
21614 | ||
21615 | ||
21616 | ||
21617 | ||
21618 | ||
21619 | ||
21620 | dulint row_id; | |
21621 | ||
21622 | ||
21623 | ||
21624 | ||
21625 | ||
21626 | hash_table_t* table_hash; | |
21627 | ||
21628 | hash_table_t* table_id_hash; | |
21629 | ||
21630 | hash_table_t* col_hash; | |
21631 | struct { ulint count; dict_table_t * start; dict_table_t * end; } | |
21632 | table_LRU; | |
21633 | ulint size; | |
21634 | ||
21635 | ||
21636 | dict_table_t* sys_tables; | |
21637 | dict_table_t* sys_columns; | |
21638 | dict_table_t* sys_indexes; | |
21639 | dict_table_t* sys_fields; | |
21640 | }; | |
21641 | ||
21642 | ||
21643 | # 1 "./include/dict0dict.ic" 1 | |
21644 | # 9 "./include/dict0dict.ic" | |
21645 | # 1 "./include/dict0load.h" 1 | |
21646 | # 26 "./include/dict0load.h" | |
21647 | void | |
21648 | dict_check_tablespaces_and_store_max_id( | |
21649 | ||
21650 | ulint in_crash_recovery); | |
21651 | ||
21652 | ||
21653 | ||
21654 | char* | |
21655 | dict_get_first_table_name_in_db( | |
21656 | ||
21657 | ||
21658 | ||
21659 | ||
21660 | const char* name); | |
21661 | ||
21662 | ||
21663 | ||
21664 | ||
21665 | ||
21666 | ||
21667 | dict_table_t* | |
21668 | dict_load_table( | |
21669 | ||
21670 | ||
21671 | ||
21672 | ||
21673 | ||
21674 | ||
21675 | const char* name); | |
21676 | ||
21677 | ||
21678 | ||
21679 | ||
21680 | dict_table_t* | |
21681 | dict_load_table_on_id( | |
21682 | ||
21683 | ||
21684 | dulint table_id); | |
21685 | ||
21686 | ||
21687 | ||
21688 | ||
21689 | ||
21690 | void | |
21691 | dict_load_sys_table( | |
21692 | ||
21693 | dict_table_t* table); | |
21694 | ||
21695 | ||
21696 | ||
21697 | ||
21698 | ||
21699 | ||
21700 | ||
21701 | ulint | |
21702 | dict_load_foreigns( | |
21703 | ||
21704 | ||
21705 | const char* table_name, | |
21706 | ulint check_charsets); | |
21707 | ||
21708 | ||
21709 | ||
21710 | ||
21711 | ||
21712 | void | |
21713 | dict_print(void); | |
21714 | ||
21715 | ||
21716 | ||
21717 | ||
21718 | # 1 "./include/dict0load.ic" 1 | |
21719 | # 98 "./include/dict0load.h" 2 | |
21720 | # 10 "./include/dict0dict.ic" 2 | |
21721 | # 1 "./include/trx0undo.h" 1 | |
21722 | # 15 "./include/trx0undo.h" | |
21723 | # 1 "./include/trx0sys.h" 1 | |
21724 | # 16 "./include/trx0sys.h" | |
21725 | # 1 "./include/mtr0log.h" 1 | |
21726 | # 20 "./include/mtr0log.h" | |
21727 | void | |
21728 | mlog_write_ulint( | |
21729 | ||
21730 | unsigned char* ptr, | |
21731 | ulint val, | |
21732 | unsigned char type, | |
21733 | mtr_t* mtr); | |
21734 | ||
21735 | ||
21736 | ||
21737 | ||
21738 | void | |
21739 | mlog_write_dulint( | |
21740 | ||
21741 | unsigned char* ptr, | |
21742 | dulint val, | |
21743 | mtr_t* mtr); | |
21744 | ||
21745 | ||
21746 | ||
21747 | ||
21748 | void | |
21749 | mlog_write_string( | |
21750 | ||
21751 | unsigned char* ptr, | |
21752 | const unsigned char* str, | |
21753 | ulint len, | |
21754 | mtr_t* mtr); | |
21755 | ||
21756 | ||
21757 | ||
21758 | ||
21759 | void | |
21760 | mlog_write_initial_log_record( | |
21761 | ||
21762 | unsigned char* ptr, | |
21763 | ||
21764 | ||
21765 | unsigned char type, | |
21766 | mtr_t* mtr); | |
21767 | ||
21768 | ||
21769 | static inline | |
21770 | unsigned char* | |
21771 | mlog_write_initial_log_record_for_file_op( | |
21772 | ||
21773 | ||
21774 | ulint type, | |
21775 | ||
21776 | ulint space_id, | |
21777 | ulint page_no, | |
21778 | unsigned char* log_ptr, | |
21779 | mtr_t* mtr); | |
21780 | ||
21781 | ||
21782 | static inline | |
21783 | void | |
21784 | mlog_catenate_ulint( | |
21785 | ||
21786 | mtr_t* mtr, | |
21787 | ulint val, | |
21788 | ulint type); | |
21789 | ||
21790 | ||
21791 | ||
21792 | void | |
21793 | mlog_catenate_string( | |
21794 | ||
21795 | mtr_t* mtr, | |
21796 | const unsigned char* str, | |
21797 | ulint len); | |
21798 | ||
21799 | ||
21800 | static inline | |
21801 | void | |
21802 | mlog_catenate_ulint_compressed( | |
21803 | ||
21804 | mtr_t* mtr, | |
21805 | ulint val); | |
21806 | ||
21807 | ||
21808 | static inline | |
21809 | void | |
21810 | mlog_catenate_dulint_compressed( | |
21811 | ||
21812 | mtr_t* mtr, | |
21813 | dulint val); | |
21814 | ||
21815 | ||
21816 | static inline | |
21817 | unsigned char* | |
21818 | mlog_open( | |
21819 | ||
21820 | ||
21821 | mtr_t* mtr, | |
21822 | ulint size); | |
21823 | ||
21824 | ||
21825 | ||
21826 | static inline | |
21827 | void | |
21828 | mlog_close( | |
21829 | ||
21830 | mtr_t* mtr, | |
21831 | unsigned char* ptr); | |
21832 | ||
21833 | ||
21834 | ||
21835 | ||
21836 | static inline | |
21837 | unsigned char* | |
21838 | mlog_write_initial_log_record_fast( | |
21839 | ||
21840 | ||
21841 | unsigned char* ptr, | |
21842 | ||
21843 | unsigned char type, | |
21844 | unsigned char* log_ptr, | |
21845 | mtr_t* mtr); | |
21846 | ||
21847 | ||
21848 | ||
21849 | unsigned char* | |
21850 | mlog_parse_initial_log_record( | |
21851 | ||
21852 | ||
21853 | ||
21854 | unsigned char* ptr, | |
21855 | unsigned char* end_ptr, | |
21856 | unsigned char* type, | |
21857 | ulint* space, | |
21858 | ulint* page_no); | |
21859 | ||
21860 | ||
21861 | ||
21862 | unsigned char* | |
21863 | mlog_parse_nbytes( | |
21864 | ||
21865 | ||
21866 | ||
21867 | ulint type, | |
21868 | unsigned char* ptr, | |
21869 | unsigned char* end_ptr, | |
21870 | unsigned char* page); | |
21871 | ||
21872 | ||
21873 | ||
21874 | unsigned char* | |
21875 | mlog_parse_string( | |
21876 | ||
21877 | ||
21878 | ||
21879 | unsigned char* ptr, | |
21880 | unsigned char* end_ptr, | |
21881 | unsigned char* page); | |
21882 | # 183 "./include/mtr0log.h" | |
21883 | unsigned char* | |
21884 | mlog_open_and_write_index( | |
21885 | ||
21886 | ||
21887 | ||
21888 | mtr_t* mtr, | |
21889 | unsigned char* rec, | |
21890 | dict_index_t* index, | |
21891 | unsigned char type, | |
21892 | ulint size); | |
21893 | ||
21894 | ||
21895 | ||
21896 | ||
21897 | ||
21898 | unsigned char* | |
21899 | mlog_parse_index( | |
21900 | ||
21901 | ||
21902 | ||
21903 | unsigned char* ptr, | |
21904 | unsigned char* end_ptr, | |
21905 | ||
21906 | ulint comp, | |
21907 | dict_index_t** index); | |
21908 | ||
21909 | ||
21910 | ||
21911 | ||
21912 | ||
21913 | ||
21914 | # 1 "./include/mtr0log.ic" 1 | |
21915 | # 15 "./include/mtr0log.ic" | |
21916 | static inline | |
21917 | unsigned char* | |
21918 | mlog_open( | |
21919 | ||
21920 | ||
21921 | mtr_t* mtr, | |
21922 | ulint size) | |
21923 | ||
21924 | { | |
21925 | dyn_array_t* mlog; | |
21926 | ||
21927 | mtr->modifications = (1); | |
21928 | ||
21929 | if (mtr_get_log_mode(mtr) == 22) { | |
21930 | ||
21931 | return(((void *)0)); | |
21932 | } | |
21933 | ||
21934 | mlog = &(mtr->log); | |
21935 | ||
21936 | return(dyn_array_open(mlog, size)); | |
21937 | } | |
21938 | ||
21939 | ||
21940 | ||
21941 | static inline | |
21942 | void | |
21943 | mlog_close( | |
21944 | ||
21945 | mtr_t* mtr, | |
21946 | unsigned char* ptr) | |
21947 | { | |
21948 | dyn_array_t* mlog; | |
21949 | ||
21950 | ; | |
21951 | ||
21952 | mlog = &(mtr->log); | |
21953 | ||
21954 | dyn_array_close(mlog, ptr); | |
21955 | } | |
21956 | ||
21957 | ||
21958 | ||
21959 | static inline | |
21960 | void | |
21961 | mlog_catenate_ulint( | |
21962 | ||
21963 | mtr_t* mtr, | |
21964 | ulint val, | |
21965 | ulint type) | |
21966 | { | |
21967 | dyn_array_t* mlog; | |
21968 | unsigned char* ptr; | |
21969 | ||
21970 | if (mtr_get_log_mode(mtr) == 22) { | |
21971 | ||
21972 | return; | |
21973 | } | |
21974 | ||
21975 | mlog = &(mtr->log); | |
21976 | ||
21977 | ; | |
21978 | ; | |
21979 | ; | |
21980 | ||
21981 | ptr = dyn_array_push(mlog, type); | |
21982 | ||
21983 | if (type == ((unsigned char)4)) { | |
21984 | mach_write_to_4(ptr, val); | |
21985 | } else if (type == ((unsigned char)2)) { | |
21986 | mach_write_to_2(ptr, val); | |
21987 | } else { | |
21988 | ; | |
21989 | mach_write_to_1(ptr, val); | |
21990 | } | |
21991 | } | |
21992 | ||
21993 | ||
21994 | ||
21995 | static inline | |
21996 | void | |
21997 | mlog_catenate_ulint_compressed( | |
21998 | ||
21999 | mtr_t* mtr, | |
22000 | ulint val) | |
22001 | { | |
22002 | unsigned char* log_ptr; | |
22003 | ||
22004 | log_ptr = mlog_open(mtr, 10); | |
22005 | ||
22006 | ||
22007 | if (log_ptr == ((void *)0)) { | |
22008 | ||
22009 | return; | |
22010 | } | |
22011 | ||
22012 | log_ptr += mach_write_compressed(log_ptr, val); | |
22013 | ||
22014 | mlog_close(mtr, log_ptr); | |
22015 | } | |
22016 | ||
22017 | ||
22018 | ||
22019 | static inline | |
22020 | void | |
22021 | mlog_catenate_dulint_compressed( | |
22022 | ||
22023 | mtr_t* mtr, | |
22024 | dulint val) | |
22025 | { | |
22026 | unsigned char* log_ptr; | |
22027 | ||
22028 | log_ptr = mlog_open(mtr, 15); | |
22029 | ||
22030 | ||
22031 | if (log_ptr == ((void *)0)) { | |
22032 | ||
22033 | return; | |
22034 | } | |
22035 | ||
22036 | log_ptr += mach_dulint_write_compressed(log_ptr, val); | |
22037 | ||
22038 | mlog_close(mtr, log_ptr); | |
22039 | } | |
22040 | ||
22041 | ||
22042 | ||
22043 | ||
22044 | ||
22045 | static inline | |
22046 | unsigned char* | |
22047 | mlog_write_initial_log_record_fast( | |
22048 | ||
22049 | ||
22050 | unsigned char* ptr, | |
22051 | ||
22052 | unsigned char type, | |
22053 | unsigned char* log_ptr, | |
22054 | mtr_t* mtr) | |
22055 | { | |
22056 | buf_block_t* block; | |
22057 | ulint space; | |
22058 | ulint offset; | |
22059 | ||
22060 | ; | |
22061 | ||
22062 | ; | |
22063 | ; | |
22064 | ||
22065 | block = buf_block_align(ptr); | |
22066 | ||
22067 | space = buf_block_get_space(block); | |
22068 | offset = buf_block_get_page_no(block); | |
22069 | ||
22070 | mach_write_to_1(log_ptr, type); | |
22071 | log_ptr++; | |
22072 | log_ptr += mach_write_compressed(log_ptr, space); | |
22073 | log_ptr += mach_write_compressed(log_ptr, offset); | |
22074 | ||
22075 | mtr->n_log_recs++; | |
22076 | # 190 "./include/mtr0log.ic" | |
22077 | return(log_ptr); | |
22078 | } | |
22079 | ||
22080 | ||
22081 | ||
22082 | static inline | |
22083 | unsigned char* | |
22084 | mlog_write_initial_log_record_for_file_op( | |
22085 | ||
22086 | ||
22087 | ulint type, | |
22088 | ||
22089 | ulint space_id, | |
22090 | ulint page_no, | |
22091 | unsigned char* log_ptr, | |
22092 | mtr_t* mtr) | |
22093 | { | |
22094 | ; | |
22095 | ||
22096 | mach_write_to_1(log_ptr, type); | |
22097 | log_ptr++; | |
22098 | ||
22099 | ||
22100 | log_ptr += mach_write_compressed(log_ptr, space_id); | |
22101 | log_ptr += mach_write_compressed(log_ptr, page_no); | |
22102 | ||
22103 | mtr->n_log_recs++; | |
22104 | ||
22105 | return(log_ptr); | |
22106 | } | |
22107 | # 215 "./include/mtr0log.h" 2 | |
22108 | # 17 "./include/trx0sys.h" 2 | |
22109 | ||
22110 | ||
22111 | ||
22112 | ||
22113 | ||
22114 | ||
22115 | # 1 "./include/fut0lst.h" 1 | |
22116 | # 22 "./include/fut0lst.h" | |
22117 | typedef unsigned char flst_base_node_t; | |
22118 | typedef unsigned char flst_node_t; | |
22119 | # 34 "./include/fut0lst.h" | |
22120 | static inline | |
22121 | void | |
22122 | flst_init( | |
22123 | ||
22124 | flst_base_node_t* base, | |
22125 | mtr_t* mtr); | |
22126 | ||
22127 | ||
22128 | ||
22129 | void | |
22130 | flst_add_last( | |
22131 | ||
22132 | flst_base_node_t* base, | |
22133 | flst_node_t* node, | |
22134 | mtr_t* mtr); | |
22135 | ||
22136 | ||
22137 | ||
22138 | void | |
22139 | flst_add_first( | |
22140 | ||
22141 | flst_base_node_t* base, | |
22142 | flst_node_t* node, | |
22143 | mtr_t* mtr); | |
22144 | ||
22145 | ||
22146 | ||
22147 | void | |
22148 | flst_insert_after( | |
22149 | ||
22150 | flst_base_node_t* base, | |
22151 | flst_node_t* node1, | |
22152 | flst_node_t* node2, | |
22153 | mtr_t* mtr); | |
22154 | ||
22155 | ||
22156 | ||
22157 | void | |
22158 | flst_insert_before( | |
22159 | ||
22160 | flst_base_node_t* base, | |
22161 | flst_node_t* node2, | |
22162 | flst_node_t* node3, | |
22163 | mtr_t* mtr); | |
22164 | ||
22165 | ||
22166 | ||
22167 | void | |
22168 | flst_remove( | |
22169 | ||
22170 | flst_base_node_t* base, | |
22171 | flst_node_t* node2, | |
22172 | mtr_t* mtr); | |
22173 | ||
22174 | ||
22175 | ||
22176 | ||
22177 | ||
22178 | void | |
22179 | flst_cut_end( | |
22180 | ||
22181 | flst_base_node_t* base, | |
22182 | flst_node_t* node2, | |
22183 | ulint n_nodes, | |
22184 | ||
22185 | mtr_t* mtr); | |
22186 | ||
22187 | ||
22188 | ||
22189 | ||
22190 | ||
22191 | void | |
22192 | flst_truncate_end( | |
22193 | ||
22194 | flst_base_node_t* base, | |
22195 | flst_node_t* node2, | |
22196 | ulint n_nodes, | |
22197 | mtr_t* mtr); | |
22198 | ||
22199 | ||
22200 | static inline | |
22201 | ulint | |
22202 | flst_get_len( | |
22203 | ||
22204 | ||
22205 | flst_base_node_t* base, | |
22206 | mtr_t* mtr); | |
22207 | ||
22208 | ||
22209 | static inline | |
22210 | fil_addr_t | |
22211 | flst_get_first( | |
22212 | ||
22213 | ||
22214 | flst_base_node_t* base, | |
22215 | mtr_t* mtr); | |
22216 | ||
22217 | ||
22218 | static inline | |
22219 | fil_addr_t | |
22220 | flst_get_last( | |
22221 | ||
22222 | ||
22223 | flst_base_node_t* base, | |
22224 | mtr_t* mtr); | |
22225 | ||
22226 | ||
22227 | static inline | |
22228 | fil_addr_t | |
22229 | flst_get_next_addr( | |
22230 | ||
22231 | ||
22232 | flst_node_t* node, | |
22233 | mtr_t* mtr); | |
22234 | ||
22235 | ||
22236 | static inline | |
22237 | fil_addr_t | |
22238 | flst_get_prev_addr( | |
22239 | ||
22240 | ||
22241 | flst_node_t* node, | |
22242 | mtr_t* mtr); | |
22243 | ||
22244 | ||
22245 | static inline | |
22246 | void | |
22247 | flst_write_addr( | |
22248 | ||
22249 | fil_faddr_t* faddr, | |
22250 | fil_addr_t addr, | |
22251 | mtr_t* mtr); | |
22252 | ||
22253 | ||
22254 | static inline | |
22255 | fil_addr_t | |
22256 | flst_read_addr( | |
22257 | ||
22258 | ||
22259 | fil_faddr_t* faddr, | |
22260 | mtr_t* mtr); | |
22261 | ||
22262 | ||
22263 | ||
22264 | ulint | |
22265 | flst_validate( | |
22266 | ||
22267 | ||
22268 | flst_base_node_t* base, | |
22269 | mtr_t* mtr1); | |
22270 | ||
22271 | ||
22272 | ||
22273 | void | |
22274 | flst_print( | |
22275 | ||
22276 | flst_base_node_t* base, | |
22277 | mtr_t* mtr); | |
22278 | ||
22279 | ||
22280 | ||
22281 | # 1 "./include/fut0lst.ic" 1 | |
22282 | # 9 "./include/fut0lst.ic" | |
22283 | # 1 "./include/fut0fut.h" 1 | |
22284 | # 20 "./include/fut0fut.h" | |
22285 | static inline | |
22286 | unsigned char* | |
22287 | fut_get_ptr( | |
22288 | ||
22289 | ||
22290 | ||
22291 | ulint space, | |
22292 | fil_addr_t addr, | |
22293 | ulint rw_latch, | |
22294 | mtr_t* mtr); | |
22295 | ||
22296 | ||
22297 | # 1 "./include/fut0fut.ic" 1 | |
22298 | # 14 "./include/fut0fut.ic" | |
22299 | static inline | |
22300 | unsigned char* | |
22301 | fut_get_ptr( | |
22302 | ||
22303 | ||
22304 | ||
22305 | ulint space, | |
22306 | fil_addr_t addr, | |
22307 | ulint rw_latch, | |
22308 | mtr_t* mtr) | |
22309 | { | |
22310 | unsigned char* ptr; | |
22311 | ||
22312 | ; | |
22313 | ; | |
22314 | ; | |
22315 | ||
22316 | ptr = buf_page_get_gen( space, addr.page, rw_latch, ((void *)0), 10, "./include/fut0fut.ic", 31, mtr) + addr.boffset; | |
22317 | ||
22318 | ||
22319 | ||
22320 | ||
22321 | ||
22322 | return(ptr); | |
22323 | } | |
22324 | # 33 "./include/fut0fut.h" 2 | |
22325 | # 10 "./include/fut0lst.ic" 2 | |
22326 | # 31 "./include/fut0lst.ic" | |
22327 | static inline | |
22328 | void | |
22329 | flst_write_addr( | |
22330 | ||
22331 | fil_faddr_t* faddr, | |
22332 | fil_addr_t addr, | |
22333 | mtr_t* mtr) | |
22334 | { | |
22335 | ; | |
22336 | ; | |
22337 | ||
22338 | ||
22339 | mlog_write_ulint(faddr + 0, addr.page, ((unsigned char)4), mtr); | |
22340 | mlog_write_ulint(faddr + 4, addr.boffset, | |
22341 | ((unsigned char)2), mtr); | |
22342 | } | |
22343 | ||
22344 | ||
22345 | ||
22346 | static inline | |
22347 | fil_addr_t | |
22348 | flst_read_addr( | |
22349 | ||
22350 | ||
22351 | fil_faddr_t* faddr, | |
22352 | mtr_t* mtr) | |
22353 | { | |
22354 | fil_addr_t addr; | |
22355 | ||
22356 | ; | |
22357 | ||
22358 | addr.page = mtr_read_ulint(faddr + 0, ((unsigned char)4), mtr); | |
22359 | addr.boffset = mtr_read_ulint(faddr + 4, ((unsigned char)2), | |
22360 | mtr); | |
22361 | return(addr); | |
22362 | } | |
22363 | ||
22364 | ||
22365 | ||
22366 | static inline | |
22367 | void | |
22368 | flst_init( | |
22369 | ||
22370 | flst_base_node_t* base, | |
22371 | mtr_t* mtr) | |
22372 | { | |
22373 | ; | |
22374 | ||
22375 | mlog_write_ulint(base + 0, 0, ((unsigned char)4), mtr); | |
22376 | flst_write_addr(base + 4, fil_addr_null, mtr); | |
22377 | flst_write_addr(base + (4 + 6), fil_addr_null, mtr); | |
22378 | } | |
22379 | ||
22380 | ||
22381 | ||
22382 | static inline | |
22383 | ulint | |
22384 | flst_get_len( | |
22385 | ||
22386 | ||
22387 | flst_base_node_t* base, | |
22388 | mtr_t* mtr) | |
22389 | { | |
22390 | return(mtr_read_ulint(base + 0, ((unsigned char)4), mtr)); | |
22391 | } | |
22392 | ||
22393 | ||
22394 | ||
22395 | static inline | |
22396 | fil_addr_t | |
22397 | flst_get_first( | |
22398 | ||
22399 | ||
22400 | flst_base_node_t* base, | |
22401 | mtr_t* mtr) | |
22402 | { | |
22403 | return(flst_read_addr(base + 4, mtr)); | |
22404 | } | |
22405 | ||
22406 | ||
22407 | ||
22408 | static inline | |
22409 | fil_addr_t | |
22410 | flst_get_last( | |
22411 | ||
22412 | ||
22413 | flst_base_node_t* base, | |
22414 | mtr_t* mtr) | |
22415 | { | |
22416 | return(flst_read_addr(base + (4 + 6), mtr)); | |
22417 | } | |
22418 | ||
22419 | ||
22420 | ||
22421 | static inline | |
22422 | fil_addr_t | |
22423 | flst_get_next_addr( | |
22424 | ||
22425 | ||
22426 | flst_node_t* node, | |
22427 | mtr_t* mtr) | |
22428 | { | |
22429 | return(flst_read_addr(node + 6, mtr)); | |
22430 | } | |
22431 | ||
22432 | ||
22433 | ||
22434 | static inline | |
22435 | fil_addr_t | |
22436 | flst_get_prev_addr( | |
22437 | ||
22438 | ||
22439 | flst_node_t* node, | |
22440 | mtr_t* mtr) | |
22441 | { | |
22442 | return(flst_read_addr(node + 0, mtr)); | |
22443 | } | |
22444 | # 196 "./include/fut0lst.h" 2 | |
22445 | # 24 "./include/trx0sys.h" 2 | |
22446 | # 1 "./include/fsp0fsp.h" 1 | |
22447 | # 34 "./include/fsp0fsp.h" | |
22448 | typedef unsigned char fseg_header_t; | |
22449 | # 45 "./include/fsp0fsp.h" | |
22450 | void | |
22451 | fsp_init(void); | |
22452 | ||
22453 | ||
22454 | ||
22455 | ||
22456 | ||
22457 | ||
22458 | ||
22459 | ulint | |
22460 | fsp_header_get_free_limit( | |
22461 | ||
22462 | ||
22463 | ulint space); | |
22464 | ||
22465 | ||
22466 | ||
22467 | ||
22468 | ||
22469 | ulint | |
22470 | fsp_header_get_tablespace_size( | |
22471 | ||
22472 | ||
22473 | ulint space); | |
22474 | ||
22475 | ||
22476 | ||
22477 | ulint | |
22478 | fsp_get_size_low( | |
22479 | ||
22480 | ||
22481 | ib_page_t* page); | |
22482 | ||
22483 | ||
22484 | ||
22485 | ulint | |
22486 | fsp_header_get_space_id( | |
22487 | ||
22488 | ||
22489 | ib_page_t* page); | |
22490 | ||
22491 | ||
22492 | ||
22493 | ||
22494 | void | |
22495 | fsp_header_write_space_id( | |
22496 | ||
22497 | ib_page_t* page, | |
22498 | ulint space_id); | |
22499 | ||
22500 | ||
22501 | ||
22502 | ||
22503 | void | |
22504 | fsp_header_init( | |
22505 | ||
22506 | ulint space, | |
22507 | ulint size, | |
22508 | mtr_t* mtr); | |
22509 | ||
22510 | ||
22511 | ||
22512 | void | |
22513 | fsp_header_inc_size( | |
22514 | ||
22515 | ulint space, | |
22516 | ulint size_inc, | |
22517 | mtr_t* mtr); | |
22518 | ||
22519 | ||
22520 | ||
22521 | ib_page_t* | |
22522 | fseg_create( | |
22523 | ||
22524 | ||
22525 | ||
22526 | ||
22527 | ulint space, | |
22528 | ulint page, | |
22529 | ||
22530 | ||
22531 | ||
22532 | ulint byte_offset, | |
22533 | ||
22534 | mtr_t* mtr); | |
22535 | ||
22536 | ||
22537 | ||
22538 | ib_page_t* | |
22539 | fseg_create_general( | |
22540 | ||
22541 | ||
22542 | ||
22543 | ||
22544 | ulint space, | |
22545 | ulint page, | |
22546 | ||
22547 | ||
22548 | ||
22549 | ulint byte_offset, | |
22550 | ||
22551 | ulint has_done_reservation, | |
22552 | ||
22553 | ||
22554 | ||
22555 | ||
22556 | ||
22557 | mtr_t* mtr); | |
22558 | ||
22559 | ||
22560 | ||
22561 | ||
22562 | ulint | |
22563 | fseg_n_reserved_pages( | |
22564 | ||
22565 | ||
22566 | fseg_header_t* header, | |
22567 | ulint* used, | |
22568 | mtr_t* mtr); | |
22569 | ||
22570 | ||
22571 | ||
22572 | ||
22573 | ||
22574 | ulint | |
22575 | fseg_alloc_free_page( | |
22576 | ||
22577 | ||
22578 | ||
22579 | fseg_header_t* seg_header, | |
22580 | ulint hint, | |
22581 | unsigned char direction, | |
22582 | ||
22583 | ||
22584 | ||
22585 | ||
22586 | mtr_t* mtr); | |
22587 | ||
22588 | ||
22589 | ||
22590 | ||
22591 | ||
22592 | ulint | |
22593 | fseg_alloc_free_page_general( | |
22594 | ||
22595 | ||
22596 | ||
22597 | fseg_header_t* seg_header, | |
22598 | ulint hint, | |
22599 | unsigned char direction, | |
22600 | ||
22601 | ||
22602 | ||
22603 | ||
22604 | ulint has_done_reservation, | |
22605 | ||
22606 | ||
22607 | ||
22608 | ||
22609 | mtr_t* mtr); | |
22610 | # 231 "./include/fsp0fsp.h" | |
22611 | ulint | |
22612 | fsp_reserve_free_extents( | |
22613 | ||
22614 | ||
22615 | ulint* n_reserved, | |
22616 | ||
22617 | ||
22618 | ulint space, | |
22619 | ulint n_ext, | |
22620 | ulint alloc_type, | |
22621 | mtr_t* mtr); | |
22622 | ||
22623 | ||
22624 | ||
22625 | ||
22626 | ||
22627 | ||
22628 | ullint | |
22629 | fsp_get_available_space_in_free_extents( | |
22630 | ||
22631 | ||
22632 | ulint space); | |
22633 | ||
22634 | ||
22635 | ||
22636 | void | |
22637 | fseg_free_page( | |
22638 | ||
22639 | fseg_header_t* seg_header, | |
22640 | ulint space, | |
22641 | ulint page, | |
22642 | mtr_t* mtr); | |
22643 | ||
22644 | ||
22645 | ||
22646 | ||
22647 | void | |
22648 | fseg_free( | |
22649 | ||
22650 | ulint space, | |
22651 | ulint page_no, | |
22652 | ||
22653 | ulint offset); | |
22654 | ||
22655 | ||
22656 | ||
22657 | ||
22658 | ||
22659 | ||
22660 | ||
22661 | ulint | |
22662 | fseg_free_step( | |
22663 | ||
22664 | ||
22665 | fseg_header_t* header, | |
22666 | ||
22667 | ||
22668 | ||
22669 | mtr_t* mtr); | |
22670 | ||
22671 | ||
22672 | ||
22673 | ||
22674 | ulint | |
22675 | fseg_free_step_not_header( | |
22676 | ||
22677 | ||
22678 | ||
22679 | fseg_header_t* header, | |
22680 | ||
22681 | mtr_t* mtr); | |
22682 | ||
22683 | ||
22684 | static inline | |
22685 | ulint | |
22686 | fsp_descr_page( | |
22687 | ||
22688 | ||
22689 | ulint page_no); | |
22690 | ||
22691 | ||
22692 | ||
22693 | unsigned char* | |
22694 | fsp_parse_init_file_page( | |
22695 | ||
22696 | ||
22697 | unsigned char* ptr, | |
22698 | unsigned char* end_ptr, | |
22699 | ib_page_t* page); | |
22700 | ||
22701 | ||
22702 | ||
22703 | ulint | |
22704 | fsp_validate( | |
22705 | ||
22706 | ||
22707 | ulint space); | |
22708 | ||
22709 | ||
22710 | ||
22711 | void | |
22712 | fsp_print( | |
22713 | ||
22714 | ulint space); | |
22715 | ||
22716 | ||
22717 | ||
22718 | ulint | |
22719 | fseg_validate( | |
22720 | ||
22721 | ||
22722 | fseg_header_t* header, | |
22723 | mtr_t* mtr2); | |
22724 | ||
22725 | ||
22726 | ||
22727 | void | |
22728 | fseg_print( | |
22729 | ||
22730 | fseg_header_t* header, | |
22731 | mtr_t* mtr); | |
22732 | # 384 "./include/fsp0fsp.h" | |
22733 | # 1 "./include/fsp0fsp.ic" 1 | |
22734 | # 11 "./include/fsp0fsp.ic" | |
22735 | static inline | |
22736 | ulint | |
22737 | fsp_descr_page( | |
22738 | ||
22739 | ||
22740 | ulint page_no) | |
22741 | { | |
22742 | if (page_no % (2 * 8192) == 0) { | |
22743 | ||
22744 | return((1)); | |
22745 | } | |
22746 | ||
22747 | return((0)); | |
22748 | } | |
22749 | # 385 "./include/fsp0fsp.h" 2 | |
22750 | # 25 "./include/trx0sys.h" 2 | |
22751 | # 1 "./include/read0types.h" 1 | |
22752 | # 12 "./include/read0types.h" | |
22753 | typedef struct read_view_struct read_view_t; | |
22754 | typedef struct cursor_view_struct cursor_view_t; | |
22755 | # 26 "./include/trx0sys.h" 2 | |
22756 | ||
22757 | ||
22758 | ||
22759 | ||
22760 | ||
22761 | ||
22762 | extern char trx_sys_mysql_master_log_name[]; | |
22763 | extern ib_longlong trx_sys_mysql_master_log_pos; | |
22764 | ||
22765 | ||
22766 | ||
22767 | ||
22768 | ||
22769 | ||
22770 | extern char trx_sys_mysql_bin_log_name[]; | |
22771 | extern ib_longlong trx_sys_mysql_bin_log_pos; | |
22772 | ||
22773 | ||
22774 | extern trx_sys_t* trx_sys; | |
22775 | ||
22776 | ||
22777 | extern trx_doublewrite_t* trx_doublewrite; | |
22778 | extern ulint trx_doublewrite_must_reset_space_ids; | |
22779 | extern ulint trx_sys_multiple_tablespace_format; | |
22780 | ||
22781 | ||
22782 | ||
22783 | ||
22784 | ||
22785 | void | |
22786 | trx_sys_create_doublewrite_buf(void); | |
22787 | # 66 "./include/trx0sys.h" | |
22788 | void | |
22789 | trx_sys_doublewrite_init_or_restore_pages( | |
22790 | ||
22791 | ulint restore_corrupt_pages); | |
22792 | ||
22793 | ||
22794 | ||
22795 | ||
22796 | void | |
22797 | trx_sys_mark_upgraded_to_multiple_tablespaces(void); | |
22798 | ||
22799 | ||
22800 | ||
22801 | ||
22802 | ulint | |
22803 | trx_doublewrite_page_inside( | |
22804 | ||
22805 | ||
22806 | ||
22807 | ulint page_no); | |
22808 | ||
22809 | ||
22810 | static inline | |
22811 | ulint | |
22812 | trx_sys_hdr_page( | |
22813 | ||
22814 | ||
22815 | ulint space, | |
22816 | ulint page_no); | |
22817 | ||
22818 | ||
22819 | ||
22820 | ||
22821 | void | |
22822 | trx_sys_init_at_db_start(void); | |
22823 | ||
22824 | ||
22825 | ||
22826 | ||
22827 | void | |
22828 | trx_sys_create(void); | |
22829 | ||
22830 | ||
22831 | ||
22832 | ||
22833 | void | |
22834 | trx_sys_create_extra_rseg( | |
22835 | ||
22836 | ulint num); | |
22837 | ||
22838 | ||
22839 | ||
22840 | ulint | |
22841 | trx_sysf_rseg_find_free( | |
22842 | ||
22843 | ||
22844 | ||
22845 | mtr_t* mtr); | |
22846 | ||
22847 | ||
22848 | static inline | |
22849 | trx_rseg_t* | |
22850 | trx_sys_get_nth_rseg( | |
22851 | ||
22852 | ||
22853 | ||
22854 | trx_sys_t* sys, | |
22855 | ulint n); | |
22856 | ||
22857 | ||
22858 | static inline | |
22859 | void | |
22860 | trx_sys_set_nth_rseg( | |
22861 | ||
22862 | trx_sys_t* sys, | |
22863 | ulint n, | |
22864 | trx_rseg_t* rseg); | |
22865 | ||
22866 | ||
22867 | ||
22868 | static inline | |
22869 | trx_sysf_t* | |
22870 | trx_sysf_get( | |
22871 | ||
22872 | ||
22873 | mtr_t* mtr); | |
22874 | ||
22875 | ||
22876 | ||
22877 | static inline | |
22878 | ulint | |
22879 | trx_sysf_rseg_get_space( | |
22880 | ||
22881 | ||
22882 | trx_sysf_t* sys_header, | |
22883 | ulint i, | |
22884 | mtr_t* mtr); | |
22885 | ||
22886 | ||
22887 | ||
22888 | static inline | |
22889 | ulint | |
22890 | trx_sysf_rseg_get_page_no( | |
22891 | ||
22892 | ||
22893 | ||
22894 | trx_sysf_t* sys_header, | |
22895 | ulint i, | |
22896 | mtr_t* mtr); | |
22897 | ||
22898 | ||
22899 | ||
22900 | static inline | |
22901 | void | |
22902 | trx_sysf_rseg_set_space( | |
22903 | ||
22904 | trx_sysf_t* sys_header, | |
22905 | ulint i, | |
22906 | ulint space, | |
22907 | mtr_t* mtr); | |
22908 | ||
22909 | ||
22910 | ||
22911 | static inline | |
22912 | void | |
22913 | trx_sysf_rseg_set_page_no( | |
22914 | ||
22915 | trx_sysf_t* sys_header, | |
22916 | ulint i, | |
22917 | ulint page_no, | |
22918 | ||
22919 | mtr_t* mtr); | |
22920 | ||
22921 | ||
22922 | static inline | |
22923 | dulint | |
22924 | trx_sys_get_new_trx_id(void); | |
22925 | ||
22926 | ||
22927 | ||
22928 | ||
22929 | static inline | |
22930 | dulint | |
22931 | trx_sys_get_new_trx_no(void); | |
22932 | ||
22933 | ||
22934 | ||
22935 | ||
22936 | ||
22937 | ||
22938 | static inline | |
22939 | void | |
22940 | trx_write_trx_id( | |
22941 | ||
22942 | unsigned char* ptr, | |
22943 | dulint id); | |
22944 | ||
22945 | ||
22946 | ||
22947 | ||
22948 | static inline | |
22949 | dulint | |
22950 | trx_read_trx_id( | |
22951 | ||
22952 | ||
22953 | unsigned char* ptr); | |
22954 | ||
22955 | ||
22956 | static inline | |
22957 | trx_t* | |
22958 | trx_get_on_id( | |
22959 | ||
22960 | ||
22961 | dulint trx_id); | |
22962 | ||
22963 | ||
22964 | ||
22965 | ||
22966 | ||
22967 | static inline | |
22968 | dulint | |
22969 | trx_list_get_min_trx_id(void); | |
22970 | ||
22971 | ||
22972 | ||
22973 | ||
22974 | ||
22975 | static inline | |
22976 | ulint | |
22977 | trx_is_active( | |
22978 | ||
22979 | ||
22980 | dulint trx_id); | |
22981 | ||
22982 | ||
22983 | ||
22984 | ulint | |
22985 | trx_in_trx_list( | |
22986 | ||
22987 | ||
22988 | trx_t* in_trx); | |
22989 | ||
22990 | ||
22991 | ||
22992 | ||
22993 | ||
22994 | ||
22995 | void | |
22996 | trx_sys_update_mysql_binlog_offset( | |
22997 | ||
22998 | const char* file_name, | |
22999 | ib_longlong offset, | |
23000 | ulint field, | |
23001 | ||
23002 | mtr_t* mtr); | |
23003 | ||
23004 | ||
23005 | ||
23006 | ||
23007 | void | |
23008 | trx_sys_print_mysql_binlog_offset(void); | |
23009 | # 303 "./include/trx0sys.h" | |
23010 | void | |
23011 | trx_sys_print_mysql_master_log_pos(void); | |
23012 | # 403 "./include/trx0sys.h" | |
23013 | struct trx_doublewrite_struct{ | |
23014 | ib_mutex_t mutex; | |
23015 | ||
23016 | ulint block1; | |
23017 | ||
23018 | ulint block2; | |
23019 | ulint first_free; | |
23020 | ||
23021 | unsigned char* write_buf; | |
23022 | ||
23023 | ||
23024 | ||
23025 | unsigned char* write_buf_unaligned; | |
23026 | buf_block_t** | |
23027 | buf_block_arr; | |
23028 | ||
23029 | }; | |
23030 | ||
23031 | ||
23032 | ||
23033 | struct trx_sys_struct{ | |
23034 | dulint max_trx_id; | |
23035 | ||
23036 | ||
23037 | struct { ulint count; trx_t * start; trx_t * end; } trx_list; | |
23038 | ||
23039 | ||
23040 | ||
23041 | struct { ulint count; trx_t * start; trx_t * end; } mysql_trx_list; | |
23042 | ||
23043 | ||
23044 | struct { ulint count; trx_rseg_t * start; trx_rseg_t * end; } rseg_list; | |
23045 | ||
23046 | trx_rseg_t* latest_rseg; | |
23047 | ||
23048 | ||
23049 | trx_rseg_t* rseg_array[256]; | |
23050 | ||
23051 | ||
23052 | ulint rseg_history_len; | |
23053 | ||
23054 | ||
23055 | ||
23056 | struct { ulint count; read_view_t * start; read_view_t * end; } view_list; | |
23057 | ||
23058 | ||
23059 | }; | |
23060 | ||
23061 | ||
23062 | ||
23063 | ||
23064 | ||
23065 | ||
23066 | ||
23067 | # 1 "./include/trx0sys.ic" 1 | |
23068 | # 9 "./include/trx0sys.ic" | |
23069 | # 1 "./include/srv0srv.h" 1 | |
23070 | # 19 "./include/srv0srv.h" | |
23071 | extern const char* srv_main_thread_op_info; | |
23072 | ||
23073 | ||
23074 | ||
23075 | extern os_event_t srv_lock_timeout_thread_event; | |
23076 | ||
23077 | ||
23078 | ||
23079 | ||
23080 | ||
23081 | ||
23082 | extern ulint srv_slow_log; | |
23083 | ||
23084 | ||
23085 | extern ulint srv_lower_case_table_names; | |
23086 | ||
23087 | ||
23088 | extern ib_mutex_t srv_monitor_file_mutex; | |
23089 | ||
23090 | extern FILE* srv_monitor_file; | |
23091 | ||
23092 | ||
23093 | ||
23094 | extern ib_mutex_t srv_dict_tmpfile_mutex; | |
23095 | ||
23096 | extern FILE* srv_dict_tmpfile; | |
23097 | ||
23098 | ||
23099 | ||
23100 | extern ib_mutex_t srv_misc_tmpfile_mutex; | |
23101 | ||
23102 | extern FILE* srv_misc_tmpfile; | |
23103 | ||
23104 | ||
23105 | ||
23106 | extern char* srv_data_home; | |
23107 | ||
23108 | ||
23109 | ||
23110 | ||
23111 | extern ulint srv_file_per_table; | |
23112 | extern ulint srv_locks_unsafe_for_binlog; | |
23113 | ||
23114 | extern ulint srv_n_data_files; | |
23115 | extern char** srv_data_file_names; | |
23116 | extern ulint* srv_data_file_sizes; | |
23117 | extern ulint* srv_data_file_is_raw_partition; | |
23118 | ||
23119 | extern ulint srv_auto_extend_last_data_file; | |
23120 | extern ulint srv_last_file_size_max; | |
23121 | extern ulong srv_auto_extend_increment; | |
23122 | ||
23123 | extern ulint srv_created_new_raw; | |
23124 | ||
23125 | ||
23126 | ||
23127 | ||
23128 | extern char** srv_log_group_home_dirs; | |
23129 | ||
23130 | extern ulint srv_n_log_groups; | |
23131 | extern ulint srv_n_log_files; | |
23132 | extern ulint srv_log_file_size; | |
23133 | extern ulint srv_log_buffer_size; | |
23134 | extern ulong srv_flush_log_at_trx_commit; | |
23135 | extern ulong srv_show_locks_held; | |
23136 | extern ulong srv_show_verbose_locks; | |
23137 | ||
23138 | extern unsigned char srv_latin1_ordering[256]; | |
23139 | ||
23140 | extern ulint srv_pool_size; | |
23141 | extern ulint srv_awe_window_size; | |
23142 | extern ulint srv_mem_pool_size; | |
23143 | extern ulint srv_lock_table_size; | |
23144 | ||
23145 | extern ulint srv_thread_concurrency_timer_based; | |
23146 | ||
23147 | extern ulint srv_n_file_io_threads; | |
23148 | extern ulint srv_n_read_io_threads; | |
23149 | extern ulint srv_n_write_io_threads; | |
23150 | ||
23151 | ||
23152 | ||
23153 | ||
23154 | ||
23155 | ||
23156 | ||
23157 | extern ulint srv_lock_wait_timeout; | |
23158 | ||
23159 | extern char* srv_file_flush_method_str; | |
23160 | extern ulint srv_unix_file_flush_method; | |
23161 | extern ulint srv_win_file_flush_method; | |
23162 | ||
23163 | extern ulint srv_max_n_open_files; | |
23164 | ||
23165 | extern ulint srv_max_dirty_pages_pct; | |
23166 | ||
23167 | extern ulint srv_force_recovery; | |
23168 | extern ulong srv_thread_concurrency; | |
23169 | extern ulong srv_commit_concurrency; | |
23170 | ||
23171 | extern ulint srv_max_n_threads; | |
23172 | ||
23173 | extern lint srv_conc_n_threads; | |
23174 | ||
23175 | extern ulint srv_fast_shutdown; | |
23176 | ||
23177 | ||
23178 | ||
23179 | ||
23180 | ||
23181 | ||
23182 | extern ulint srv_innodb_status; | |
23183 | ||
23184 | extern ulint srv_use_doublewrite_buf; | |
23185 | extern ulint srv_use_checksums; | |
23186 | ||
23187 | extern ulint srv_set_thread_priorities; | |
23188 | extern int srv_query_thread_priority; | |
23189 | ||
23190 | extern ulong srv_max_buf_pool_modified_pct; | |
23191 | extern ulong srv_max_purge_lag; | |
23192 | extern ulint srv_use_awe; | |
23193 | extern ulint srv_use_adaptive_hash_indexes; | |
23194 | ||
23195 | extern ulint srv_io_capacity; | |
23196 | extern long long srv_ibuf_max_size; | |
23197 | extern ulint srv_ibuf_active_contract; | |
23198 | extern ulint srv_ibuf_accel_rate; | |
23199 | extern ulint srv_flush_neighbor_pages; | |
23200 | extern ulint srv_enable_unsafe_group_commit; | |
23201 | extern uint srv_read_ahead; | |
23202 | extern ulint srv_adaptive_checkpoint; | |
23203 | ||
23204 | extern ulint srv_extra_rsegments; | |
23205 | ||
23206 | extern ulint srv_dict_size_limit; | |
23207 | ||
23208 | extern volatile ulint srv_io_pattern; | |
23209 | extern ulong srv_io_pattern_trace; | |
23210 | extern ulong srv_io_pattern_trace_running; | |
23211 | extern ulong srv_io_pattern_size_limit; | |
23212 | ||
23213 | ||
23214 | extern ulint srv_n_rows_inserted; | |
23215 | extern ulint srv_n_rows_updated; | |
23216 | extern ulint srv_n_rows_deleted; | |
23217 | extern ulint srv_n_rows_read; | |
23218 | ||
23219 | extern ulint srv_print_innodb_monitor; | |
23220 | extern ulint srv_print_innodb_lock_monitor; | |
23221 | extern ulint srv_print_innodb_tablespace_monitor; | |
23222 | extern ulint srv_print_verbose_log; | |
23223 | extern ulint srv_print_innodb_table_monitor; | |
23224 | ||
23225 | extern ulint srv_lock_timeout_and_monitor_active; | |
23226 | extern ulint srv_error_monitor_active; | |
23227 | ||
23228 | extern ulong srv_n_spin_wait_rounds; | |
23229 | extern ulong srv_n_free_tickets_to_enter; | |
23230 | extern ulong srv_thread_sleep_delay; | |
23231 | extern ulint srv_spin_wait_delay; | |
23232 | extern ulint srv_priority_boost; | |
23233 | ||
23234 | extern ulint srv_pool_size; | |
23235 | extern ulint srv_mem_pool_size; | |
23236 | extern ulint srv_lock_table_size; | |
23237 | ||
23238 | extern ulint srv_sim_disk_wait_pct; | |
23239 | extern ulint srv_sim_disk_wait_len; | |
23240 | extern ulint srv_sim_disk_wait_by_yield; | |
23241 | extern ulint srv_sim_disk_wait_by_wait; | |
23242 | ||
23243 | extern ulint srv_measure_contention; | |
23244 | extern ulint srv_measure_by_spin; | |
23245 | ||
23246 | extern ulint srv_print_thread_releases; | |
23247 | extern ulint srv_print_lock_waits; | |
23248 | extern ulint srv_print_buf_io; | |
23249 | extern ulint srv_print_log_io; | |
23250 | extern ulint srv_print_parsed_sql; | |
23251 | extern ulint srv_print_latch_waits; | |
23252 | ||
23253 | extern ulint srv_test_nocache; | |
23254 | extern ulint srv_test_cache_evict; | |
23255 | ||
23256 | extern ulint srv_test_extra_mutexes; | |
23257 | extern ulint srv_test_sync; | |
23258 | extern ulint srv_test_n_threads; | |
23259 | extern ulint srv_test_n_loops; | |
23260 | extern ulint srv_test_n_free_rnds; | |
23261 | extern ulint srv_test_n_reserved_rnds; | |
23262 | extern ulint srv_test_n_mutexes; | |
23263 | extern ulint srv_test_array_size; | |
23264 | ||
23265 | extern ulint srv_activity_count; | |
23266 | extern ulint srv_fatal_semaphore_wait_threshold; | |
23267 | extern ulint srv_dml_needed_delay; | |
23268 | ||
23269 | extern ib_mutex_t* kernel_mutex_temp; | |
23270 | # 227 "./include/srv0srv.h" | |
23271 | extern const char* srv_io_thread_op_info[]; | |
23272 | extern const char* srv_io_thread_function[]; | |
23273 | ||
23274 | ||
23275 | extern ulint srv_log_write_requests; | |
23276 | ||
23277 | ||
23278 | extern ulint srv_log_writes; | |
23279 | ||
23280 | ||
23281 | extern ulint srv_os_log_written; | |
23282 | ||
23283 | ||
23284 | extern ulint srv_os_log_pending_writes; | |
23285 | ||
23286 | ||
23287 | ||
23288 | extern ulint srv_log_waits; | |
23289 | ||
23290 | ||
23291 | extern ulint srv_data_read; | |
23292 | ||
23293 | ||
23294 | extern ulint srv_data_written; | |
23295 | ||
23296 | ||
23297 | ||
23298 | extern ulint srv_dblwr_writes; | |
23299 | ||
23300 | ||
23301 | ||
23302 | extern ulint srv_dblwr_pages_written; | |
23303 | ||
23304 | ||
23305 | extern ulint srv_buf_pool_write_requests; | |
23306 | ||
23307 | ||
23308 | ||
23309 | ||
23310 | extern ulint srv_buf_pool_wait_free; | |
23311 | ||
23312 | ||
23313 | ||
23314 | extern ulint srv_buf_pool_flushed; | |
23315 | ||
23316 | ||
23317 | ||
23318 | extern ulint srv_buf_pool_reads; | |
23319 | ||
23320 | ||
23321 | extern ulint srv_read_ahead_seq; | |
23322 | ||
23323 | ||
23324 | extern ulint srv_read_ahead_rnd; | |
23325 | ||
23326 | ||
23327 | ||
23328 | ||
23329 | ||
23330 | extern char srv_use_legacy_cardinality_algorithm; | |
23331 | ||
23332 | ||
23333 | typedef struct export_var_struct export_struc; | |
23334 | ||
23335 | extern export_struc export_vars; | |
23336 | ||
23337 | typedef struct srv_sys_struct srv_sys_t; | |
23338 | ||
23339 | ||
23340 | extern srv_sys_t* srv_sys; | |
23341 | # 338 "./include/srv0srv.h" | |
23342 | ulint | |
23343 | srv_boot(void); | |
23344 | ||
23345 | ||
23346 | ||
23347 | ||
23348 | ||
23349 | void | |
23350 | srv_init(void); | |
23351 | ||
23352 | ||
23353 | ||
23354 | ||
23355 | void | |
23356 | srv_free(void); | |
23357 | ||
23358 | ||
23359 | ||
23360 | ||
23361 | ||
23362 | void | |
23363 | srv_general_init(void); | |
23364 | ||
23365 | ||
23366 | ||
23367 | ||
23368 | ulint | |
23369 | srv_get_n_threads(void); | |
23370 | ||
23371 | ||
23372 | ||
23373 | ||
23374 | ulint | |
23375 | srv_get_thread_type(void); | |
23376 | ||
23377 | ||
23378 | ||
23379 | ||
23380 | ||
23381 | void | |
23382 | srv_set_io_thread_op_info( | |
23383 | ||
23384 | ulint i, | |
23385 | const char* str); | |
23386 | ||
23387 | ||
23388 | ||
23389 | ||
23390 | ||
23391 | ulint | |
23392 | srv_release_threads( | |
23393 | ||
23394 | ||
23395 | ||
23396 | ||
23397 | ulint type, | |
23398 | ulint n); | |
23399 | ||
23400 | ||
23401 | ||
23402 | ||
23403 | void* | |
23404 | ||
23405 | ||
23406 | ||
23407 | srv_master_thread( | |
23408 | ||
23409 | ||
23410 | void* arg); | |
23411 | # 415 "./include/srv0srv.h" | |
23412 | void | |
23413 | srv_active_wake_master_thread(void); | |
23414 | ||
23415 | ||
23416 | ||
23417 | ||
23418 | void | |
23419 | srv_wake_master_thread(void); | |
23420 | ||
23421 | ||
23422 | ||
23423 | ||
23424 | ||
23425 | void | |
23426 | srv_conc_enter_innodb( | |
23427 | ||
23428 | trx_t* trx); | |
23429 | ||
23430 | ||
23431 | ||
23432 | ||
23433 | ||
23434 | void | |
23435 | srv_conc_force_enter_innodb( | |
23436 | ||
23437 | trx_t* trx); | |
23438 | ||
23439 | ||
23440 | ||
23441 | ||
23442 | ||
23443 | void | |
23444 | srv_conc_force_exit_innodb( | |
23445 | ||
23446 | trx_t* trx); | |
23447 | ||
23448 | ||
23449 | ||
23450 | ||
23451 | void | |
23452 | srv_conc_exit_innodb( | |
23453 | ||
23454 | trx_t* trx); | |
23455 | # 466 "./include/srv0srv.h" | |
23456 | void | |
23457 | srv_suspend_mysql_thread( | |
23458 | ||
23459 | que_thr_t* thr); | |
23460 | ||
23461 | ||
23462 | ||
23463 | ||
23464 | ||
23465 | void | |
23466 | srv_release_mysql_thread_if_suspended( | |
23467 | ||
23468 | que_thr_t* thr); | |
23469 | ||
23470 | ||
23471 | ||
23472 | ||
23473 | ||
23474 | ||
23475 | void* | |
23476 | ||
23477 | ||
23478 | ||
23479 | srv_lock_timeout_and_monitor_thread( | |
23480 | ||
23481 | ||
23482 | void* arg); | |
23483 | ||
23484 | ||
23485 | ||
23486 | ||
23487 | ||
23488 | ||
23489 | void* | |
23490 | ||
23491 | ||
23492 | ||
23493 | srv_error_monitor_thread( | |
23494 | ||
23495 | ||
23496 | void* arg); | |
23497 | ||
23498 | ||
23499 | ||
23500 | ||
23501 | void | |
23502 | srv_printf_innodb_monitor( | |
23503 | ||
23504 | FILE* file, | |
23505 | ulint* trx_start, | |
23506 | ||
23507 | ulint* trx_end); | |
23508 | ||
23509 | ||
23510 | ||
23511 | ||
23512 | ||
23513 | void | |
23514 | srv_export_innodb_status(void); | |
23515 | # 546 "./include/srv0srv.h" | |
23516 | typedef struct srv_slot_struct srv_slot_t; | |
23517 | ||
23518 | ||
23519 | typedef srv_slot_t srv_table_t; | |
23520 | ||
23521 | ||
23522 | struct export_var_struct{ | |
23523 | ulint innodb_data_pending_reads; | |
23524 | ulint innodb_data_pending_writes; | |
23525 | ulint innodb_data_pending_fsyncs; | |
23526 | ulint innodb_data_fsyncs; | |
23527 | ulint innodb_data_read; | |
23528 | ulint innodb_data_writes; | |
23529 | ulint innodb_data_written; | |
23530 | ulint innodb_data_reads; | |
23531 | ulint innodb_dict_tables; | |
23532 | ulint innodb_buffer_pool_pages_total; | |
23533 | ulint innodb_buffer_pool_pages_data; | |
23534 | ulint innodb_buffer_pool_pages_dirty; | |
23535 | ulint innodb_buffer_pool_pages_misc; | |
23536 | ulint innodb_buffer_pool_pages_free; | |
23537 | ||
23538 | ||
23539 | ||
23540 | ulint innodb_buffer_pool_read_requests; | |
23541 | ulint innodb_buffer_pool_reads; | |
23542 | ulint innodb_buffer_pool_wait_free; | |
23543 | ulint innodb_buffer_pool_pages_flushed; | |
23544 | ulint innodb_buffer_pool_write_requests; | |
23545 | ulint innodb_buffer_pool_read_ahead_seq; | |
23546 | ulint innodb_buffer_pool_read_ahead_rnd; | |
23547 | ulint innodb_dblwr_pages_written; | |
23548 | ulint innodb_dblwr_writes; | |
23549 | ulint innodb_log_waits; | |
23550 | ulint innodb_log_write_requests; | |
23551 | ulint innodb_log_writes; | |
23552 | ulint innodb_os_log_written; | |
23553 | ulint innodb_os_log_fsyncs; | |
23554 | ulint innodb_os_log_pending_writes; | |
23555 | ulint innodb_os_log_pending_fsyncs; | |
23556 | ulint innodb_page_size; | |
23557 | ulint innodb_pages_created; | |
23558 | ulint innodb_pages_read; | |
23559 | ulint innodb_pages_written; | |
23560 | ulint innodb_row_lock_waits; | |
23561 | ulint innodb_row_lock_current_waits; | |
23562 | ib_longlong innodb_row_lock_time; | |
23563 | ulint innodb_row_lock_time_avg; | |
23564 | ulint innodb_row_lock_time_max; | |
23565 | ulint innodb_rows_read; | |
23566 | ulint innodb_rows_inserted; | |
23567 | ulint innodb_rows_updated; | |
23568 | ulint innodb_rows_deleted; | |
23569 | }; | |
23570 | ||
23571 | ||
23572 | struct srv_sys_struct{ | |
23573 | os_event_t operational; | |
23574 | ||
23575 | ||
23576 | srv_table_t* threads; | |
23577 | struct { ulint count; que_thr_t * start; que_thr_t * end; } | |
23578 | tasks; | |
23579 | dict_index_t* dummy_ind1; | |
23580 | ||
23581 | dict_index_t* dummy_ind2; | |
23582 | ||
23583 | }; | |
23584 | ||
23585 | extern ulint srv_n_threads_active[]; | |
23586 | # 10 "./include/trx0sys.ic" 2 | |
23587 | # 1 "./include/trx0trx.h" 1 | |
23588 | # 15 "./include/trx0trx.h" | |
23589 | # 1 "./include/usr0types.h" 1 | |
23590 | # 12 "./include/usr0types.h" | |
23591 | typedef struct sess_struct sess_t; | |
23592 | # 16 "./include/trx0trx.h" 2 | |
23593 | ||
23594 | ||
23595 | ||
23596 | ||
23597 | # 1 "./include/trx0xa.h" 1 | |
23598 | # 18 "./include/trx0xa.h" | |
23599 | struct xid_t { | |
23600 | long formatID; | |
23601 | long gtrid_length; | |
23602 | long bqual_length; | |
23603 | char data[128]; | |
23604 | }; | |
23605 | typedef struct xid_t XID; | |
23606 | # 21 "./include/trx0trx.h" 2 | |
23607 | ||
23608 | extern ulint trx_n_mysql_transactions; | |
23609 | ||
23610 | ||
23611 | ||
23612 | static inline | |
23613 | void | |
23614 | trx_reset_new_rec_lock_info( | |
23615 | ||
23616 | trx_t* trx); | |
23617 | ||
23618 | ||
23619 | ||
23620 | ||
23621 | static inline | |
23622 | void | |
23623 | trx_register_new_rec_lock( | |
23624 | ||
23625 | trx_t* trx, | |
23626 | dict_index_t* index); | |
23627 | ||
23628 | ||
23629 | ||
23630 | static inline | |
23631 | ulint | |
23632 | trx_new_rec_locks_contain( | |
23633 | ||
23634 | ||
23635 | ||
23636 | trx_t* trx, | |
23637 | dict_index_t* index); | |
23638 | ||
23639 | ||
23640 | ||
23641 | void | |
23642 | trx_search_latch_release_if_reserved( | |
23643 | ||
23644 | trx_t* trx); | |
23645 | ||
23646 | ||
23647 | void | |
23648 | trx_set_detailed_error( | |
23649 | ||
23650 | trx_t* trx, | |
23651 | const char* msg); | |
23652 | ||
23653 | ||
23654 | ||
23655 | ||
23656 | void | |
23657 | trx_set_detailed_error_from_file( | |
23658 | ||
23659 | trx_t* trx, | |
23660 | FILE* file); | |
23661 | ||
23662 | ||
23663 | ||
23664 | void* | |
23665 | trx_get_error_info( | |
23666 | ||
23667 | ||
23668 | trx_t* trx); | |
23669 | ||
23670 | ||
23671 | ||
23672 | trx_t* | |
23673 | trx_create( | |
23674 | ||
23675 | ||
23676 | sess_t* sess); | |
23677 | ||
23678 | ||
23679 | ||
23680 | trx_t* | |
23681 | trx_allocate_for_mysql(void); | |
23682 | ||
23683 | ||
23684 | ||
23685 | ||
23686 | ||
23687 | trx_t* | |
23688 | trx_allocate_for_background(void); | |
23689 | ||
23690 | ||
23691 | ||
23692 | ||
23693 | ||
23694 | void | |
23695 | trx_free( | |
23696 | ||
23697 | trx_t* trx); | |
23698 | ||
23699 | ||
23700 | ||
23701 | void | |
23702 | trx_free_for_mysql( | |
23703 | ||
23704 | trx_t* trx); | |
23705 | ||
23706 | ||
23707 | ||
23708 | void | |
23709 | trx_free_for_background( | |
23710 | ||
23711 | trx_t* trx); | |
23712 | ||
23713 | ||
23714 | ||
23715 | ||
23716 | ||
23717 | ||
23718 | ||
23719 | void | |
23720 | trx_lists_init_at_db_start(void); | |
23721 | ||
23722 | ||
23723 | ||
23724 | ||
23725 | ulint | |
23726 | trx_start( | |
23727 | ||
23728 | ||
23729 | ||
23730 | trx_t* trx, | |
23731 | ulint rseg_id); | |
23732 | ||
23733 | ||
23734 | ||
23735 | ||
23736 | ||
23737 | ulint | |
23738 | trx_start_low( | |
23739 | ||
23740 | ||
23741 | trx_t* trx, | |
23742 | ulint rseg_id); | |
23743 | ||
23744 | ||
23745 | ||
23746 | ||
23747 | static inline | |
23748 | void | |
23749 | trx_start_if_not_started( | |
23750 | ||
23751 | trx_t* trx); | |
23752 | ||
23753 | ||
23754 | ||
23755 | static inline | |
23756 | void | |
23757 | trx_start_if_not_started_low( | |
23758 | ||
23759 | trx_t* trx); | |
23760 | ||
23761 | ||
23762 | ||
23763 | void | |
23764 | trx_start_if_not_started_noninline( | |
23765 | ||
23766 | trx_t* trx); | |
23767 | ||
23768 | ||
23769 | ||
23770 | void | |
23771 | trx_commit_off_kernel( | |
23772 | ||
23773 | trx_t* trx); | |
23774 | ||
23775 | ||
23776 | ||
23777 | ||
23778 | ||
23779 | void | |
23780 | trx_cleanup_at_db_startup( | |
23781 | ||
23782 | trx_t* trx); | |
23783 | ||
23784 | ||
23785 | ||
23786 | ulint | |
23787 | trx_commit_for_mysql( | |
23788 | ||
23789 | ||
23790 | trx_t* trx); | |
23791 | ||
23792 | ||
23793 | ||
23794 | ulint | |
23795 | trx_prepare_for_mysql( | |
23796 | ||
23797 | ||
23798 | trx_t* trx); | |
23799 | ||
23800 | ||
23801 | ||
23802 | ||
23803 | int | |
23804 | trx_recover_for_mysql( | |
23805 | ||
23806 | ||
23807 | XID* xid_list, | |
23808 | ulint len); | |
23809 | ||
23810 | ||
23811 | ||
23812 | trx_t * | |
23813 | trx_get_trx_by_xid( | |
23814 | ||
23815 | ||
23816 | XID* xid); | |
23817 | ||
23818 | ||
23819 | ||
23820 | ||
23821 | ulint | |
23822 | trx_commit_complete_for_mysql( | |
23823 | ||
23824 | ||
23825 | trx_t* trx); | |
23826 | ||
23827 | ||
23828 | ||
23829 | void | |
23830 | trx_mark_sql_stat_end( | |
23831 | ||
23832 | trx_t* trx); | |
23833 | ||
23834 | ||
23835 | ||
23836 | ||
23837 | ||
23838 | read_view_t* | |
23839 | trx_assign_read_view( | |
23840 | ||
23841 | ||
23842 | trx_t* trx); | |
23843 | ||
23844 | ||
23845 | ||
23846 | ||
23847 | ||
23848 | void | |
23849 | trx_end_lock_wait( | |
23850 | ||
23851 | trx_t* trx); | |
23852 | ||
23853 | ||
23854 | ||
23855 | ulint | |
23856 | trx_sig_send( | |
23857 | ||
23858 | ||
23859 | ||
23860 | trx_t* trx, | |
23861 | ulint type, | |
23862 | ulint sender, | |
23863 | ||
23864 | que_thr_t* receiver_thr, | |
23865 | ||
23866 | ||
23867 | trx_savept_t* savept, | |
23868 | ||
23869 | que_thr_t** next_thr); | |
23870 | # 293 "./include/trx0trx.h" | |
23871 | void | |
23872 | trx_sig_reply( | |
23873 | ||
23874 | trx_sig_t* sig, | |
23875 | que_thr_t** next_thr); | |
23876 | ||
23877 | ||
23878 | ||
23879 | ||
23880 | ||
23881 | ||
23882 | ||
23883 | void | |
23884 | trx_sig_remove( | |
23885 | ||
23886 | trx_t* trx, | |
23887 | trx_sig_t* sig); | |
23888 | ||
23889 | ||
23890 | ||
23891 | void | |
23892 | trx_sig_start_handle( | |
23893 | ||
23894 | trx_t* trx, | |
23895 | que_thr_t** next_thr); | |
23896 | # 328 "./include/trx0trx.h" | |
23897 | void | |
23898 | trx_end_signal_handling( | |
23899 | ||
23900 | trx_t* trx); | |
23901 | ||
23902 | ||
23903 | ||
23904 | commit_node_t* | |
23905 | commit_node_create( | |
23906 | ||
23907 | ||
23908 | mem_heap_t* heap); | |
23909 | ||
23910 | ||
23911 | ||
23912 | que_thr_t* | |
23913 | trx_commit_step( | |
23914 | ||
23915 | ||
23916 | que_thr_t* thr); | |
23917 | ||
23918 | ||
23919 | ||
23920 | ||
23921 | ||
23922 | ||
23923 | ||
23924 | void | |
23925 | trx_print( | |
23926 | ||
23927 | FILE* f, | |
23928 | trx_t* trx, | |
23929 | uint max_query_len); | |
23930 | ||
23931 | ||
23932 | ||
23933 | ||
23934 | ||
23935 | ||
23936 | ulint | |
23937 | trx_is_interrupted( | |
23938 | ||
23939 | ||
23940 | trx_t* trx); | |
23941 | ||
23942 | ||
23943 | ||
23944 | ||
23945 | ||
23946 | ||
23947 | struct trx_sig_struct{ | |
23948 | ulint type; | |
23949 | ulint state; | |
23950 | ||
23951 | ulint sender; | |
23952 | ||
23953 | que_thr_t* receiver; | |
23954 | ||
23955 | ||
23956 | trx_savept_t savept; | |
23957 | struct { trx_sig_t * prev; trx_sig_t * next; } | |
23958 | signals; | |
23959 | ||
23960 | struct { trx_sig_t * prev; trx_sig_t * next; } | |
23961 | reply_signals; | |
23962 | ||
23963 | }; | |
23964 | ||
23965 | ||
23966 | ||
23967 | ||
23968 | ||
23969 | ||
23970 | ||
23971 | struct trx_struct{ | |
23972 | ulint magic_n; | |
23973 | ||
23974 | ||
23975 | const char* op_info; | |
23976 | ||
23977 | ||
23978 | ulint type; | |
23979 | ulint conc_state; | |
23980 | ||
23981 | ||
23982 | ||
23983 | time_t start_time; | |
23984 | ||
23985 | ||
23986 | ulint isolation_level; | |
23987 | ulint check_foreigns; | |
23988 | ||
23989 | ||
23990 | ||
23991 | ulint check_unique_secondary; | |
23992 | ||
23993 | ||
23994 | ||
23995 | ||
23996 | ||
23997 | ||
23998 | dulint id; | |
23999 | XID xid; | |
24000 | ||
24001 | ||
24002 | ulint support_xa; | |
24003 | ||
24004 | ||
24005 | ||
24006 | ||
24007 | dulint no; | |
24008 | ||
24009 | ||
24010 | ulint flush_log_later; | |
24011 | ||
24012 | ||
24013 | ||
24014 | ulint must_flush_log_later; | |
24015 | ||
24016 | ||
24017 | ||
24018 | ||
24019 | ||
24020 | dulint commit_lsn; | |
24021 | ulint dict_operation; | |
24022 | ||
24023 | ||
24024 | ||
24025 | ||
24026 | dulint table_id; | |
24027 | ||
24028 | ||
24029 | int active_trans; | |
24030 | ||
24031 | ||
24032 | void* mysql_thd; | |
24033 | ||
24034 | char** mysql_query_str; | |
24035 | ||
24036 | ||
24037 | const char* mysql_log_file_name; | |
24038 | ||
24039 | ||
24040 | ||
24041 | ||
24042 | ib_longlong mysql_log_offset; | |
24043 | ||
24044 | ||
24045 | const char* mysql_master_log_file_name; | |
24046 | ||
24047 | ||
24048 | ||
24049 | ||
24050 | ||
24051 | ||
24052 | ib_longlong mysql_master_log_pos; | |
24053 | ||
24054 | ||
24055 | ||
24056 | ||
24057 | ||
24058 | ||
24059 | char* repl_wait_binlog_name; | |
24060 | ||
24061 | ||
24062 | ||
24063 | ||
24064 | ||
24065 | ||
24066 | ||
24067 | ib_longlong repl_wait_binlog_pos; | |
24068 | ||
24069 | ||
24070 | os_thread_id_t mysql_thread_id; | |
24071 | ||
24072 | ulint mysql_process_no; | |
24073 | ||
24074 | ||
24075 | ||
24076 | ulint n_mysql_tables_in_use; | |
24077 | ||
24078 | ||
24079 | ulint mysql_n_tables_locked; | |
24080 | ||
24081 | ||
24082 | ||
24083 | ulint dict_operation_lock_mode; | |
24084 | ||
24085 | ||
24086 | ||
24087 | ulint has_search_latch; | |
24088 | ||
24089 | ||
24090 | ulint search_latch_timeout; | |
24091 | # 532 "./include/trx0trx.h" | |
24092 | ulint declared_to_be_inside_innodb; | |
24093 | ||
24094 | ||
24095 | ||
24096 | ||
24097 | ulint n_tickets_to_enter_innodb; | |
24098 | ||
24099 | ||
24100 | ||
24101 | ||
24102 | ||
24103 | ib_lock_t* auto_inc_lock; | |
24104 | ||
24105 | ||
24106 | dict_index_t* new_rec_locks[2]; | |
24107 | # 558 "./include/trx0trx.h" | |
24108 | struct { trx_t * prev; trx_t * next; } | |
24109 | trx_list; | |
24110 | struct { trx_t * prev; trx_t * next; } | |
24111 | mysql_trx_list; | |
24112 | ||
24113 | ||
24114 | ulint error_state; | |
24115 | ||
24116 | ||
24117 | ||
24118 | ||
24119 | void* error_info; | |
24120 | ||
24121 | ||
24122 | sess_t* sess; | |
24123 | ulint que_state; | |
24124 | ||
24125 | que_t* graph; | |
24126 | ||
24127 | ||
24128 | ||
24129 | ||
24130 | ||
24131 | ulint n_active_thrs; | |
24132 | ulint handling_signals; | |
24133 | ||
24134 | que_t* graph_before_signal_handling; | |
24135 | ||
24136 | ||
24137 | ||
24138 | ||
24139 | trx_sig_t sig; | |
24140 | ||
24141 | struct { ulint count; trx_sig_t * start; trx_sig_t * end; } | |
24142 | signals; | |
24143 | ||
24144 | struct { ulint count; trx_sig_t * start; trx_sig_t * end; } | |
24145 | reply_signals; | |
24146 | ||
24147 | ||
24148 | ||
24149 | ||
24150 | ||
24151 | ib_lock_t* wait_lock; | |
24152 | ||
24153 | ||
24154 | ||
24155 | ulint was_chosen_as_deadlock_victim; | |
24156 | ||
24157 | ||
24158 | ||
24159 | ||
24160 | ||
24161 | time_t wait_started; | |
24162 | struct { ulint count; que_thr_t * start; que_thr_t * end; } | |
24163 | wait_thrs; | |
24164 | ||
24165 | ||
24166 | ulint deadlock_mark; | |
24167 | ||
24168 | ||
24169 | mem_heap_t* lock_heap; | |
24170 | ||
24171 | struct { ulint count; ib_lock_t * start; ib_lock_t * end; } | |
24172 | trx_locks; | |
24173 | ||
24174 | mem_heap_t* global_read_view_heap; | |
24175 | ||
24176 | ||
24177 | read_view_t* global_read_view; | |
24178 | ||
24179 | ||
24180 | read_view_t* read_view; | |
24181 | ||
24182 | ||
24183 | ||
24184 | ||
24185 | ||
24186 | ||
24187 | struct { ulint count; trx_named_savept_t * start; trx_named_savept_t * end; } | |
24188 | trx_savepoints; | |
24189 | ||
24190 | ||
24191 | ib_mutex_t undo_mutex; | |
24192 | ||
24193 | ||
24194 | ||
24195 | ||
24196 | ||
24197 | dulint undo_no; | |
24198 | ||
24199 | trx_savept_t last_sql_stat_start; | |
24200 | ||
24201 | ||
24202 | ||
24203 | ||
24204 | trx_rseg_t* rseg; | |
24205 | ||
24206 | ||
24207 | trx_undo_t* insert_undo; | |
24208 | ||
24209 | trx_undo_t* update_undo; | |
24210 | ||
24211 | dulint roll_limit; | |
24212 | ||
24213 | ulint pages_undone; | |
24214 | ||
24215 | trx_undo_arr_t* undo_no_arr; | |
24216 | ||
24217 | ||
24218 | ||
24219 | char detailed_error[256]; | |
24220 | ||
24221 | ||
24222 | ulint io_reads; | |
24223 | ib_longlong io_read; | |
24224 | ulint io_reads_wait_timer; | |
24225 | ib_longlong lock_que_wait_ustarted; | |
24226 | ulint lock_que_wait_timer; | |
24227 | ulint innodb_que_wait_timer; | |
24228 | ulint distinct_page_access; | |
24229 | ||
24230 | unsigned char* distinct_page_access_hash; | |
24231 | ulint take_stats; | |
24232 | }; | |
24233 | # 759 "./include/trx0trx.h" | |
24234 | struct commit_node_struct{ | |
24235 | que_common_t common; | |
24236 | ulint state; | |
24237 | }; | |
24238 | ||
24239 | ||
24240 | ||
24241 | ||
24242 | ||
24243 | ||
24244 | ||
24245 | # 1 "./include/trx0trx.ic" 1 | |
24246 | # 11 "./include/trx0trx.ic" | |
24247 | static inline | |
24248 | void | |
24249 | trx_start_if_not_started( | |
24250 | ||
24251 | trx_t* trx) | |
24252 | { | |
24253 | ; | |
24254 | ||
24255 | if (trx->conc_state == 1) { | |
24256 | ||
24257 | trx_start(trx, ((ulint)(-1))); | |
24258 | } | |
24259 | } | |
24260 | ||
24261 | ||
24262 | ||
24263 | ||
24264 | static inline | |
24265 | void | |
24266 | trx_start_if_not_started_low( | |
24267 | ||
24268 | trx_t* trx) | |
24269 | { | |
24270 | ; | |
24271 | ||
24272 | if (trx->conc_state == 1) { | |
24273 | ||
24274 | trx_start_low(trx, ((ulint)(-1))); | |
24275 | } | |
24276 | } | |
24277 | ||
24278 | ||
24279 | ||
24280 | static inline | |
24281 | void | |
24282 | trx_reset_new_rec_lock_info( | |
24283 | ||
24284 | trx_t* trx) | |
24285 | { | |
24286 | trx->new_rec_locks[0] = ((void *)0); | |
24287 | trx->new_rec_locks[1] = ((void *)0); | |
24288 | } | |
24289 | ||
24290 | ||
24291 | ||
24292 | ||
24293 | ||
24294 | static inline | |
24295 | void | |
24296 | trx_register_new_rec_lock( | |
24297 | ||
24298 | trx_t* trx, | |
24299 | dict_index_t* index) | |
24300 | ||
24301 | { | |
24302 | if (trx->new_rec_locks[0] == ((void *)0)) { | |
24303 | trx->new_rec_locks[0] = index; | |
24304 | ||
24305 | return; | |
24306 | } | |
24307 | ||
24308 | if (trx->new_rec_locks[0] == index) { | |
24309 | ||
24310 | return; | |
24311 | } | |
24312 | ||
24313 | if (trx->new_rec_locks[1] != ((void *)0)) { | |
24314 | ||
24315 | return; | |
24316 | } | |
24317 | ||
24318 | trx->new_rec_locks[1] = index; | |
24319 | } | |
24320 | ||
24321 | ||
24322 | ||
24323 | static inline | |
24324 | ulint | |
24325 | trx_new_rec_locks_contain( | |
24326 | ||
24327 | ||
24328 | ||
24329 | trx_t* trx, | |
24330 | dict_index_t* index) | |
24331 | { | |
24332 | return(trx->new_rec_locks[0] == index | |
24333 | || trx->new_rec_locks[1] == index); | |
24334 | } | |
24335 | # 771 "./include/trx0trx.h" 2 | |
24336 | # 11 "./include/trx0sys.ic" 2 | |
24337 | ||
24338 | ||
24339 | ||
24340 | typedef unsigned char trx_sysf_rseg_t; | |
24341 | # 30 "./include/trx0sys.ic" | |
24342 | void | |
24343 | trx_sys_flush_max_trx_id(void); | |
24344 | ||
24345 | ||
24346 | ||
24347 | ||
24348 | static inline | |
24349 | ulint | |
24350 | trx_sys_hdr_page( | |
24351 | ||
24352 | ||
24353 | ulint space, | |
24354 | ulint page_no) | |
24355 | { | |
24356 | if ((space == 0) && (page_no == 5)) { | |
24357 | ||
24358 | return((1)); | |
24359 | } | |
24360 | ||
24361 | return((0)); | |
24362 | } | |
24363 | ||
24364 | ||
24365 | ||
24366 | static inline | |
24367 | trx_rseg_t* | |
24368 | trx_sys_get_nth_rseg( | |
24369 | ||
24370 | ||
24371 | ||
24372 | trx_sys_t* sys, | |
24373 | ulint n) | |
24374 | { | |
24375 | ||
24376 | ||
24377 | ||
24378 | ; | |
24379 | ||
24380 | return(sys->rseg_array[n]); | |
24381 | } | |
24382 | ||
24383 | ||
24384 | ||
24385 | static inline | |
24386 | void | |
24387 | trx_sys_set_nth_rseg( | |
24388 | ||
24389 | trx_sys_t* sys, | |
24390 | ulint n, | |
24391 | trx_rseg_t* rseg) | |
24392 | ||
24393 | { | |
24394 | ; | |
24395 | ||
24396 | sys->rseg_array[n] = rseg; | |
24397 | } | |
24398 | ||
24399 | ||
24400 | ||
24401 | static inline | |
24402 | trx_sysf_t* | |
24403 | trx_sysf_get( | |
24404 | ||
24405 | ||
24406 | mtr_t* mtr) | |
24407 | { | |
24408 | trx_sysf_t* header; | |
24409 | ||
24410 | ; | |
24411 | ||
24412 | header = 38 + buf_page_get_gen( 0, 5, 2, ((void *)0), 10, "./include/trx0sys.ic", 101, mtr); | |
24413 | ||
24414 | ||
24415 | ||
24416 | ||
24417 | ||
24418 | ||
24419 | return(header); | |
24420 | } | |
24421 | ||
24422 | ||
24423 | ||
24424 | ||
24425 | static inline | |
24426 | ulint | |
24427 | trx_sysf_rseg_get_space( | |
24428 | ||
24429 | ||
24430 | trx_sysf_t* sys_header, | |
24431 | ulint i, | |
24432 | mtr_t* mtr) | |
24433 | { | |
24434 | ||
24435 | ||
24436 | ||
24437 | ; | |
24438 | ; | |
24439 | ||
24440 | return(mtr_read_ulint(sys_header + (8 + 10) | |
24441 | + i * 8 | |
24442 | + 0, ((unsigned char)4), mtr)); | |
24443 | } | |
24444 | ||
24445 | ||
24446 | ||
24447 | ||
24448 | static inline | |
24449 | ulint | |
24450 | trx_sysf_rseg_get_page_no( | |
24451 | ||
24452 | ||
24453 | ||
24454 | trx_sysf_t* sys_header, | |
24455 | ulint i, | |
24456 | mtr_t* mtr) | |
24457 | { | |
24458 | ; | |
24459 | ||
24460 | ||
24461 | ||
24462 | ; | |
24463 | ||
24464 | return(mtr_read_ulint(sys_header + (8 + 10) | |
24465 | + i * 8 | |
24466 | + 4, ((unsigned char)4), mtr)); | |
24467 | } | |
24468 | ||
24469 | ||
24470 | ||
24471 | ||
24472 | static inline | |
24473 | void | |
24474 | trx_sysf_rseg_set_space( | |
24475 | ||
24476 | trx_sysf_t* sys_header, | |
24477 | ulint i, | |
24478 | ulint space, | |
24479 | mtr_t* mtr) | |
24480 | { | |
24481 | ||
24482 | ||
24483 | ||
24484 | ; | |
24485 | ; | |
24486 | ||
24487 | mlog_write_ulint(sys_header + (8 + 10) | |
24488 | + i * 8 | |
24489 | + 0, | |
24490 | space, | |
24491 | ((unsigned char)4), mtr); | |
24492 | } | |
24493 | ||
24494 | ||
24495 | ||
24496 | ||
24497 | static inline | |
24498 | void | |
24499 | trx_sysf_rseg_set_page_no( | |
24500 | ||
24501 | trx_sysf_t* sys_header, | |
24502 | ulint i, | |
24503 | ulint page_no, | |
24504 | ||
24505 | mtr_t* mtr) | |
24506 | { | |
24507 | ||
24508 | ||
24509 | ||
24510 | ; | |
24511 | ; | |
24512 | ||
24513 | mlog_write_ulint(sys_header + (8 + 10) | |
24514 | + i * 8 | |
24515 | + 4, | |
24516 | page_no, | |
24517 | ((unsigned char)4), mtr); | |
24518 | } | |
24519 | ||
24520 | ||
24521 | ||
24522 | ||
24523 | ||
24524 | static inline | |
24525 | void | |
24526 | trx_write_trx_id( | |
24527 | ||
24528 | unsigned char* ptr, | |
24529 | dulint id) | |
24530 | { | |
24531 | ; | |
24532 | ||
24533 | mach_write_to_6(ptr, id); | |
24534 | } | |
24535 | ||
24536 | ||
24537 | ||
24538 | ||
24539 | ||
24540 | static inline | |
24541 | dulint | |
24542 | trx_read_trx_id( | |
24543 | ||
24544 | ||
24545 | unsigned char* ptr) | |
24546 | { | |
24547 | ; | |
24548 | ||
24549 | return(mach_read_from_6(ptr)); | |
24550 | } | |
24551 | ||
24552 | ||
24553 | ||
24554 | static inline | |
24555 | trx_t* | |
24556 | trx_get_on_id( | |
24557 | ||
24558 | ||
24559 | dulint trx_id) | |
24560 | { | |
24561 | trx_t* trx; | |
24562 | ||
24563 | ||
24564 | ||
24565 | ||
24566 | ||
24567 | trx = (trx_sys->trx_list).start; | |
24568 | ||
24569 | while (trx != ((void *)0)) { | |
24570 | if (0 == ut_dulint_cmp(trx_id, trx->id)) { | |
24571 | ||
24572 | return(trx); | |
24573 | } | |
24574 | ||
24575 | trx = (((trx)->trx_list).next); | |
24576 | } | |
24577 | ||
24578 | return(((void *)0)); | |
24579 | } | |
24580 | ||
24581 | ||
24582 | ||
24583 | ||
24584 | ||
24585 | ||
24586 | static inline | |
24587 | dulint | |
24588 | trx_list_get_min_trx_id(void) | |
24589 | ||
24590 | ||
24591 | ||
24592 | { | |
24593 | trx_t* trx; | |
24594 | ||
24595 | ||
24596 | ||
24597 | ||
24598 | ||
24599 | trx = (trx_sys->trx_list).end; | |
24600 | ||
24601 | if (trx == ((void *)0)) { | |
24602 | ||
24603 | return(trx_sys->max_trx_id); | |
24604 | } | |
24605 | ||
24606 | return(trx->id); | |
24607 | } | |
24608 | ||
24609 | ||
24610 | ||
24611 | static inline | |
24612 | ulint | |
24613 | trx_is_active( | |
24614 | ||
24615 | ||
24616 | dulint trx_id) | |
24617 | { | |
24618 | trx_t* trx; | |
24619 | ||
24620 | ||
24621 | ||
24622 | ||
24623 | ||
24624 | if (ut_dulint_cmp(trx_id, trx_list_get_min_trx_id()) < 0) { | |
24625 | ||
24626 | return((0)); | |
24627 | } | |
24628 | ||
24629 | if (ut_dulint_cmp(trx_id, trx_sys->max_trx_id) >= 0) { | |
24630 | ||
24631 | ||
24632 | ||
24633 | ||
24634 | ||
24635 | ||
24636 | return((1)); | |
24637 | } | |
24638 | ||
24639 | trx = trx_get_on_id(trx_id); | |
24640 | if (trx && (trx->conc_state == 2 || | |
24641 | trx->conc_state == 4)) { | |
24642 | ||
24643 | return((1)); | |
24644 | } | |
24645 | ||
24646 | return((0)); | |
24647 | } | |
24648 | ||
24649 | ||
24650 | ||
24651 | static inline | |
24652 | dulint | |
24653 | trx_sys_get_new_trx_id(void) | |
24654 | ||
24655 | ||
24656 | { | |
24657 | dulint id; | |
24658 | # 358 "./include/trx0sys.ic" | |
24659 | if (ut_dulint_get_low(trx_sys->max_trx_id) | |
24660 | % 256 == 0) { | |
24661 | ||
24662 | trx_sys_flush_max_trx_id(); | |
24663 | } | |
24664 | ||
24665 | id = trx_sys->max_trx_id; | |
24666 | ||
24667 | { if ((trx_sys->max_trx_id).low == 0xFFFFFFFFUL) { (trx_sys->max_trx_id).high = (trx_sys->max_trx_id).high + 1; (trx_sys->max_trx_id).low = 0; } else { (trx_sys->max_trx_id).low = (trx_sys->max_trx_id).low + 1; }}; | |
24668 | ||
24669 | return(id); | |
24670 | } | |
24671 | ||
24672 | ||
24673 | ||
24674 | static inline | |
24675 | dulint | |
24676 | trx_sys_get_new_trx_no(void) | |
24677 | ||
24678 | ||
24679 | { | |
24680 | ||
24681 | ||
24682 | ||
24683 | ||
24684 | return(trx_sys_get_new_trx_id()); | |
24685 | } | |
24686 | # 458 "./include/trx0sys.h" 2 | |
24687 | # 16 "./include/trx0undo.h" 2 | |
24688 | ||
24689 | ||
24690 | ||
24691 | ||
24692 | ||
24693 | static inline | |
24694 | dulint | |
24695 | trx_undo_build_roll_ptr( | |
24696 | ||
24697 | ||
24698 | ulint is_insert, | |
24699 | ulint rseg_id, | |
24700 | ulint page_no, | |
24701 | ulint offset); | |
24702 | ||
24703 | ||
24704 | static inline | |
24705 | void | |
24706 | trx_undo_decode_roll_ptr( | |
24707 | ||
24708 | dulint roll_ptr, | |
24709 | ulint* is_insert, | |
24710 | ulint* rseg_id, | |
24711 | ulint* page_no, | |
24712 | ulint* offset); | |
24713 | ||
24714 | ||
24715 | static inline | |
24716 | ulint | |
24717 | trx_undo_roll_ptr_is_insert( | |
24718 | ||
24719 | ||
24720 | dulint roll_ptr); | |
24721 | ||
24722 | ||
24723 | ||
24724 | ||
24725 | static inline | |
24726 | void | |
24727 | trx_write_roll_ptr( | |
24728 | ||
24729 | unsigned char* ptr, | |
24730 | dulint roll_ptr); | |
24731 | ||
24732 | ||
24733 | ||
24734 | ||
24735 | static inline | |
24736 | dulint | |
24737 | trx_read_roll_ptr( | |
24738 | ||
24739 | ||
24740 | unsigned char* ptr); | |
24741 | ||
24742 | ||
24743 | static inline | |
24744 | ib_page_t* | |
24745 | trx_undo_page_get( | |
24746 | ||
24747 | ||
24748 | ulint space, | |
24749 | ulint page_no, | |
24750 | mtr_t* mtr); | |
24751 | ||
24752 | ||
24753 | static inline | |
24754 | ib_page_t* | |
24755 | trx_undo_page_get_s_latched( | |
24756 | ||
24757 | ||
24758 | ulint space, | |
24759 | ulint page_no, | |
24760 | mtr_t* mtr); | |
24761 | ||
24762 | ||
24763 | ||
24764 | static inline | |
24765 | trx_undo_rec_t* | |
24766 | trx_undo_page_get_prev_rec( | |
24767 | ||
24768 | ||
24769 | trx_undo_rec_t* rec, | |
24770 | ulint page_no, | |
24771 | ulint offset); | |
24772 | ||
24773 | ||
24774 | ||
24775 | static inline | |
24776 | trx_undo_rec_t* | |
24777 | trx_undo_page_get_next_rec( | |
24778 | ||
24779 | ||
24780 | trx_undo_rec_t* rec, | |
24781 | ulint page_no, | |
24782 | ulint offset); | |
24783 | ||
24784 | ||
24785 | ||
24786 | static inline | |
24787 | trx_undo_rec_t* | |
24788 | trx_undo_page_get_last_rec( | |
24789 | ||
24790 | ||
24791 | ib_page_t* undo_page, | |
24792 | ulint page_no, | |
24793 | ulint offset); | |
24794 | ||
24795 | ||
24796 | ||
24797 | static inline | |
24798 | trx_undo_rec_t* | |
24799 | trx_undo_page_get_first_rec( | |
24800 | ||
24801 | ||
24802 | ib_page_t* undo_page, | |
24803 | ulint page_no, | |
24804 | ulint offset); | |
24805 | ||
24806 | ||
24807 | ||
24808 | trx_undo_rec_t* | |
24809 | trx_undo_get_prev_rec( | |
24810 | ||
24811 | ||
24812 | ||
24813 | trx_undo_rec_t* rec, | |
24814 | ulint page_no, | |
24815 | ulint offset, | |
24816 | mtr_t* mtr); | |
24817 | ||
24818 | ||
24819 | ||
24820 | trx_undo_rec_t* | |
24821 | trx_undo_get_next_rec( | |
24822 | ||
24823 | ||
24824 | ||
24825 | trx_undo_rec_t* rec, | |
24826 | ulint page_no, | |
24827 | ulint offset, | |
24828 | mtr_t* mtr); | |
24829 | ||
24830 | ||
24831 | ||
24832 | trx_undo_rec_t* | |
24833 | trx_undo_get_first_rec( | |
24834 | ||
24835 | ||
24836 | ||
24837 | ulint space, | |
24838 | ulint page_no, | |
24839 | ulint offset, | |
24840 | ulint mode, | |
24841 | mtr_t* mtr); | |
24842 | ||
24843 | ||
24844 | ||
24845 | ulint | |
24846 | trx_undo_add_page( | |
24847 | ||
24848 | ||
24849 | ||
24850 | trx_t* trx, | |
24851 | trx_undo_t* undo, | |
24852 | mtr_t* mtr); | |
24853 | ||
24854 | ||
24855 | ||
24856 | ||
24857 | ||
24858 | ||
24859 | void | |
24860 | trx_undo_truncate_end( | |
24861 | ||
24862 | trx_t* trx, | |
24863 | trx_undo_t* undo, | |
24864 | dulint limit); | |
24865 | ||
24866 | ||
24867 | ||
24868 | ||
24869 | ||
24870 | void | |
24871 | trx_undo_truncate_start( | |
24872 | ||
24873 | trx_rseg_t* rseg, | |
24874 | ulint space, | |
24875 | ulint hdr_page_no, | |
24876 | ulint hdr_offset, | |
24877 | dulint limit); | |
24878 | # 215 "./include/trx0undo.h" | |
24879 | ulint | |
24880 | trx_undo_lists_init( | |
24881 | ||
24882 | ||
24883 | ||
24884 | trx_rseg_t* rseg); | |
24885 | ||
24886 | ||
24887 | ||
24888 | ||
24889 | ulint | |
24890 | trx_undo_assign_undo( | |
24891 | ||
24892 | ||
24893 | ||
24894 | ||
24895 | ||
24896 | ||
24897 | trx_t* trx, | |
24898 | ulint type); | |
24899 | ||
24900 | ||
24901 | ||
24902 | ib_page_t* | |
24903 | trx_undo_set_state_at_finish( | |
24904 | ||
24905 | ||
24906 | ||
24907 | trx_rseg_t* rseg, | |
24908 | trx_t* trx, | |
24909 | trx_undo_t* undo, | |
24910 | mtr_t* mtr); | |
24911 | ||
24912 | ||
24913 | ||
24914 | ib_page_t* | |
24915 | trx_undo_set_state_at_prepare( | |
24916 | ||
24917 | ||
24918 | ||
24919 | trx_t* trx, | |
24920 | trx_undo_t* undo, | |
24921 | mtr_t* mtr); | |
24922 | ||
24923 | ||
24924 | ||
24925 | ||
24926 | ||
24927 | ||
24928 | void | |
24929 | trx_undo_update_cleanup( | |
24930 | ||
24931 | trx_t* trx, | |
24932 | ib_page_t* undo_page, | |
24933 | ||
24934 | mtr_t* mtr); | |
24935 | ||
24936 | ||
24937 | ||
24938 | ||
24939 | ||
24940 | void | |
24941 | trx_undo_insert_cleanup( | |
24942 | ||
24943 | trx_t* trx); | |
24944 | ||
24945 | ||
24946 | ||
24947 | unsigned char* | |
24948 | trx_undo_parse_page_init( | |
24949 | ||
24950 | ||
24951 | unsigned char* ptr, | |
24952 | unsigned char* end_ptr, | |
24953 | ib_page_t* page, | |
24954 | mtr_t* mtr); | |
24955 | ||
24956 | ||
24957 | ||
24958 | unsigned char* | |
24959 | trx_undo_parse_page_header( | |
24960 | ||
24961 | ||
24962 | ulint type, | |
24963 | unsigned char* ptr, | |
24964 | unsigned char* end_ptr, | |
24965 | ib_page_t* page, | |
24966 | mtr_t* mtr); | |
24967 | ||
24968 | ||
24969 | ||
24970 | unsigned char* | |
24971 | trx_undo_parse_discard_latest( | |
24972 | ||
24973 | ||
24974 | unsigned char* ptr, | |
24975 | unsigned char* end_ptr, | |
24976 | ib_page_t* page, | |
24977 | mtr_t* mtr); | |
24978 | # 335 "./include/trx0undo.h" | |
24979 | struct trx_undo_struct{ | |
24980 | ||
24981 | ulint id; | |
24982 | ||
24983 | ulint type; | |
24984 | ||
24985 | ulint state; | |
24986 | ||
24987 | ulint del_marks; | |
24988 | ||
24989 | ||
24990 | ||
24991 | ||
24992 | ||
24993 | ||
24994 | ||
24995 | dulint trx_id; | |
24996 | ||
24997 | XID xid; | |
24998 | ||
24999 | ulint dict_operation; | |
25000 | dulint table_id; | |
25001 | ||
25002 | trx_rseg_t* rseg; | |
25003 | ||
25004 | ulint space; | |
25005 | ||
25006 | ulint hdr_page_no; | |
25007 | ||
25008 | ulint hdr_offset; | |
25009 | ||
25010 | ulint last_page_no; | |
25011 | ||
25012 | ||
25013 | ulint size; | |
25014 | ||
25015 | ulint empty; | |
25016 | ||
25017 | ulint top_page_no; | |
25018 | ||
25019 | ||
25020 | ||
25021 | ulint top_offset; | |
25022 | ||
25023 | ||
25024 | dulint top_undo_no; | |
25025 | ib_page_t* guess_page; | |
25026 | ||
25027 | ||
25028 | struct { trx_undo_t * prev; trx_undo_t * next; } undo_list; | |
25029 | ||
25030 | ||
25031 | }; | |
25032 | # 500 "./include/trx0undo.h" | |
25033 | # 1 "./include/trx0undo.ic" 1 | |
25034 | # 13 "./include/trx0undo.ic" | |
25035 | static inline | |
25036 | dulint | |
25037 | trx_undo_build_roll_ptr( | |
25038 | ||
25039 | ||
25040 | ulint is_insert, | |
25041 | ulint rseg_id, | |
25042 | ulint page_no, | |
25043 | ulint offset) | |
25044 | { | |
25045 | ; | |
25046 | ; | |
25047 | ||
25048 | return(ut_dulint_create(is_insert * 128 * 256 * 256 | |
25049 | + rseg_id * 256 * 256 | |
25050 | + (page_no / 256) / 256, | |
25051 | (page_no % (256 * 256)) * 256 * 256 | |
25052 | + offset)); | |
25053 | } | |
25054 | ||
25055 | ||
25056 | ||
25057 | static inline | |
25058 | void | |
25059 | trx_undo_decode_roll_ptr( | |
25060 | ||
25061 | dulint roll_ptr, | |
25062 | ulint* is_insert, | |
25063 | ulint* rseg_id, | |
25064 | ulint* page_no, | |
25065 | ulint* offset) | |
25066 | { | |
25067 | ulint low; | |
25068 | ulint high; | |
25069 | ||
25070 | ; | |
25071 | ; | |
25072 | ||
25073 | high = ut_dulint_get_high(roll_ptr); | |
25074 | low = ut_dulint_get_low(roll_ptr); | |
25075 | ||
25076 | *offset = low % (256 * 256); | |
25077 | ||
25078 | *is_insert = high / (256 * 256 * 128); | |
25079 | *rseg_id = (high / (256 * 256)) % 128; | |
25080 | ||
25081 | *page_no = (high % (256 * 256)) * 256 * 256 | |
25082 | + (low / 256) / 256; | |
25083 | } | |
25084 | ||
25085 | ||
25086 | ||
25087 | static inline | |
25088 | ulint | |
25089 | trx_undo_roll_ptr_is_insert( | |
25090 | ||
25091 | ||
25092 | dulint roll_ptr) | |
25093 | { | |
25094 | ulint high; | |
25095 | ||
25096 | ; | |
25097 | ; | |
25098 | ||
25099 | high = ut_dulint_get_high(roll_ptr); | |
25100 | ||
25101 | return(high / (256 * 256 * 128)); | |
25102 | } | |
25103 | ||
25104 | ||
25105 | ||
25106 | ||
25107 | ||
25108 | static inline | |
25109 | void | |
25110 | trx_write_roll_ptr( | |
25111 | ||
25112 | unsigned char* ptr, | |
25113 | dulint roll_ptr) | |
25114 | { | |
25115 | ; | |
25116 | ||
25117 | mach_write_to_7(ptr, roll_ptr); | |
25118 | } | |
25119 | ||
25120 | ||
25121 | ||
25122 | ||
25123 | ||
25124 | static inline | |
25125 | dulint | |
25126 | trx_read_roll_ptr( | |
25127 | ||
25128 | ||
25129 | unsigned char* ptr) | |
25130 | { | |
25131 | ; | |
25132 | ||
25133 | return(mach_read_from_7(ptr)); | |
25134 | } | |
25135 | ||
25136 | ||
25137 | ||
25138 | static inline | |
25139 | ib_page_t* | |
25140 | trx_undo_page_get( | |
25141 | ||
25142 | ||
25143 | ulint space, | |
25144 | ulint page_no, | |
25145 | mtr_t* mtr) | |
25146 | { | |
25147 | ib_page_t* page; | |
25148 | ||
25149 | page = buf_page_get_gen( space, page_no, 2, ((void *)0), 10, "./include/trx0undo.ic", 127, mtr); | |
25150 | ||
25151 | ||
25152 | ||
25153 | ||
25154 | ||
25155 | return(page); | |
25156 | } | |
25157 | ||
25158 | ||
25159 | ||
25160 | static inline | |
25161 | ib_page_t* | |
25162 | trx_undo_page_get_s_latched( | |
25163 | ||
25164 | ||
25165 | ulint space, | |
25166 | ulint page_no, | |
25167 | mtr_t* mtr) | |
25168 | { | |
25169 | ib_page_t* page; | |
25170 | ||
25171 | page = buf_page_get_gen( space, page_no, 1, ((void *)0), 10, "./include/trx0undo.ic", 149, mtr); | |
25172 | ||
25173 | ||
25174 | ||
25175 | ||
25176 | ||
25177 | return(page); | |
25178 | } | |
25179 | ||
25180 | ||
25181 | ||
25182 | ||
25183 | static inline | |
25184 | ulint | |
25185 | trx_undo_page_get_start( | |
25186 | ||
25187 | ||
25188 | ib_page_t* undo_page, | |
25189 | ulint page_no, | |
25190 | ulint offset) | |
25191 | { | |
25192 | ulint start; | |
25193 | ||
25194 | if (page_no == buf_frame_get_page_no(undo_page)) { | |
25195 | ||
25196 | start = mach_read_from_2(offset + undo_page | |
25197 | + 18); | |
25198 | } else { | |
25199 | start = 38 + (6 + (2 * 6)); | |
25200 | } | |
25201 | ||
25202 | return(start); | |
25203 | } | |
25204 | ||
25205 | ||
25206 | ||
25207 | ||
25208 | static inline | |
25209 | ulint | |
25210 | trx_undo_page_get_end( | |
25211 | ||
25212 | ||
25213 | ib_page_t* undo_page, | |
25214 | ulint page_no, | |
25215 | ulint offset) | |
25216 | { | |
25217 | trx_ulogf_t* log_hdr; | |
25218 | ulint end; | |
25219 | ||
25220 | if (page_no == buf_frame_get_page_no(undo_page)) { | |
25221 | ||
25222 | log_hdr = undo_page + offset; | |
25223 | ||
25224 | end = mach_read_from_2(log_hdr + 30); | |
25225 | ||
25226 | if (end == 0) { | |
25227 | end = mach_read_from_2(undo_page + 38 | |
25228 | + 4); | |
25229 | } | |
25230 | } else { | |
25231 | end = mach_read_from_2(undo_page + 38 | |
25232 | + 4); | |
25233 | } | |
25234 | ||
25235 | return(end); | |
25236 | } | |
25237 | ||
25238 | ||
25239 | ||
25240 | ||
25241 | static inline | |
25242 | trx_undo_rec_t* | |
25243 | trx_undo_page_get_prev_rec( | |
25244 | ||
25245 | ||
25246 | trx_undo_rec_t* rec, | |
25247 | ulint page_no, | |
25248 | ulint offset) | |
25249 | { | |
25250 | ib_page_t* undo_page; | |
25251 | ulint start; | |
25252 | ||
25253 | undo_page = buf_frame_align(rec); | |
25254 | ||
25255 | start = trx_undo_page_get_start(undo_page, page_no, offset); | |
25256 | ||
25257 | if (start + undo_page == rec) { | |
25258 | ||
25259 | return(((void *)0)); | |
25260 | } | |
25261 | ||
25262 | return(undo_page + mach_read_from_2(rec - 2)); | |
25263 | } | |
25264 | ||
25265 | ||
25266 | ||
25267 | ||
25268 | static inline | |
25269 | trx_undo_rec_t* | |
25270 | trx_undo_page_get_next_rec( | |
25271 | ||
25272 | ||
25273 | trx_undo_rec_t* rec, | |
25274 | ulint page_no, | |
25275 | ulint offset) | |
25276 | { | |
25277 | ib_page_t* undo_page; | |
25278 | ulint end; | |
25279 | ulint next; | |
25280 | ||
25281 | undo_page = buf_frame_align(rec); | |
25282 | ||
25283 | end = trx_undo_page_get_end(undo_page, page_no, offset); | |
25284 | ||
25285 | next = mach_read_from_2(rec); | |
25286 | ||
25287 | if (next == end) { | |
25288 | ||
25289 | return(((void *)0)); | |
25290 | } | |
25291 | ||
25292 | return(undo_page + next); | |
25293 | } | |
25294 | ||
25295 | ||
25296 | ||
25297 | ||
25298 | static inline | |
25299 | trx_undo_rec_t* | |
25300 | trx_undo_page_get_last_rec( | |
25301 | ||
25302 | ||
25303 | ib_page_t* undo_page, | |
25304 | ulint page_no, | |
25305 | ulint offset) | |
25306 | { | |
25307 | ulint start; | |
25308 | ulint end; | |
25309 | ||
25310 | start = trx_undo_page_get_start(undo_page, page_no, offset); | |
25311 | end = trx_undo_page_get_end(undo_page, page_no, offset); | |
25312 | ||
25313 | if (start == end) { | |
25314 | ||
25315 | return(((void *)0)); | |
25316 | } | |
25317 | ||
25318 | return(undo_page + mach_read_from_2(undo_page + end - 2)); | |
25319 | } | |
25320 | ||
25321 | ||
25322 | ||
25323 | ||
25324 | static inline | |
25325 | trx_undo_rec_t* | |
25326 | trx_undo_page_get_first_rec( | |
25327 | ||
25328 | ||
25329 | ib_page_t* undo_page, | |
25330 | ulint page_no, | |
25331 | ulint offset) | |
25332 | { | |
25333 | ulint start; | |
25334 | ulint end; | |
25335 | ||
25336 | start = trx_undo_page_get_start(undo_page, page_no, offset); | |
25337 | end = trx_undo_page_get_end(undo_page, page_no, offset); | |
25338 | ||
25339 | if (start == end) { | |
25340 | ||
25341 | return(((void *)0)); | |
25342 | } | |
25343 | ||
25344 | return(undo_page + start); | |
25345 | } | |
25346 | # 501 "./include/trx0undo.h" 2 | |
25347 | # 11 "./include/dict0dict.ic" 2 | |
25348 | ||
25349 | ||
25350 | ||
25351 | ||
25352 | static inline | |
25353 | dtype_t* | |
25354 | dict_col_get_type( | |
25355 | ||
25356 | dict_col_t* col) | |
25357 | { | |
25358 | ; | |
25359 | ||
25360 | return(&col->type); | |
25361 | } | |
25362 | # 52 "./include/dict0dict.ic" | |
25363 | static inline | |
25364 | ulint | |
25365 | dict_col_get_no( | |
25366 | ||
25367 | dict_col_t* col) | |
25368 | { | |
25369 | ; | |
25370 | ||
25371 | return(col->ind); | |
25372 | } | |
25373 | ||
25374 | ||
25375 | ||
25376 | static inline | |
25377 | ulint | |
25378 | dict_col_get_clust_pos( | |
25379 | ||
25380 | dict_col_t* col) | |
25381 | { | |
25382 | ; | |
25383 | ||
25384 | return(col->clust_pos); | |
25385 | } | |
25386 | ||
25387 | ||
25388 | ||
25389 | static inline | |
25390 | dict_index_t* | |
25391 | dict_table_get_first_index( | |
25392 | ||
25393 | ||
25394 | dict_table_t* table) | |
25395 | { | |
25396 | ; | |
25397 | ; | |
25398 | ||
25399 | return((table->indexes).start); | |
25400 | } | |
25401 | ||
25402 | ||
25403 | ||
25404 | static inline | |
25405 | dict_index_t* | |
25406 | dict_table_get_next_index( | |
25407 | ||
25408 | ||
25409 | dict_index_t* index) | |
25410 | { | |
25411 | ; | |
25412 | ; | |
25413 | ||
25414 | return((((index)->indexes).next)); | |
25415 | } | |
25416 | ||
25417 | ||
25418 | ||
25419 | ||
25420 | static inline | |
25421 | ulint | |
25422 | dict_table_get_n_user_cols( | |
25423 | ||
25424 | ||
25425 | ||
25426 | dict_table_t* table) | |
25427 | { | |
25428 | ; | |
25429 | ; | |
25430 | ||
25431 | return(table->n_cols - 4); | |
25432 | } | |
25433 | ||
25434 | ||
25435 | ||
25436 | static inline | |
25437 | ulint | |
25438 | dict_table_get_n_sys_cols( | |
25439 | ||
25440 | ||
25441 | ||
25442 | dict_table_t* table __attribute__((unused))) | |
25443 | { | |
25444 | ; | |
25445 | ; | |
25446 | ; | |
25447 | ||
25448 | return(4); | |
25449 | } | |
25450 | ||
25451 | ||
25452 | ||
25453 | ||
25454 | static inline | |
25455 | ulint | |
25456 | dict_table_get_n_cols( | |
25457 | ||
25458 | ||
25459 | dict_table_t* table) | |
25460 | { | |
25461 | ; | |
25462 | ; | |
25463 | ||
25464 | return(table->n_cols); | |
25465 | } | |
25466 | ||
25467 | ||
25468 | ||
25469 | static inline | |
25470 | dict_col_t* | |
25471 | dict_table_get_nth_col( | |
25472 | ||
25473 | ||
25474 | dict_table_t* table, | |
25475 | ulint pos) | |
25476 | { | |
25477 | ; | |
25478 | ; | |
25479 | ; | |
25480 | ||
25481 | return((table->cols) + pos); | |
25482 | } | |
25483 | ||
25484 | ||
25485 | ||
25486 | static inline | |
25487 | dict_col_t* | |
25488 | dict_table_get_sys_col( | |
25489 | ||
25490 | ||
25491 | dict_table_t* table, | |
25492 | ulint sys) | |
25493 | { | |
25494 | dict_col_t* col; | |
25495 | ||
25496 | ; | |
25497 | ; | |
25498 | ; | |
25499 | ||
25500 | col = dict_table_get_nth_col(table, table->n_cols | |
25501 | - 4 + sys); | |
25502 | ; | |
25503 | ; | |
25504 | ||
25505 | return(col); | |
25506 | } | |
25507 | ||
25508 | ||
25509 | ||
25510 | static inline | |
25511 | ulint | |
25512 | dict_table_get_sys_col_no( | |
25513 | ||
25514 | ||
25515 | dict_table_t* table, | |
25516 | ulint sys) | |
25517 | { | |
25518 | ; | |
25519 | ; | |
25520 | ; | |
25521 | ||
25522 | return(table->n_cols - 4 + sys); | |
25523 | } | |
25524 | ||
25525 | ||
25526 | ||
25527 | ||
25528 | static inline | |
25529 | ulint | |
25530 | dict_index_get_n_fields( | |
25531 | ||
25532 | ||
25533 | dict_index_t* index) | |
25534 | ||
25535 | { | |
25536 | ; | |
25537 | ; | |
25538 | ||
25539 | return(index->n_fields); | |
25540 | } | |
25541 | ||
25542 | ||
25543 | ||
25544 | ||
25545 | ||
25546 | ||
25547 | static inline | |
25548 | ulint | |
25549 | dict_index_get_n_unique( | |
25550 | ||
25551 | ||
25552 | dict_index_t* index) | |
25553 | ||
25554 | { | |
25555 | ; | |
25556 | ; | |
25557 | ; | |
25558 | ||
25559 | return(index->n_uniq); | |
25560 | } | |
25561 | ||
25562 | ||
25563 | ||
25564 | ||
25565 | ||
25566 | static inline | |
25567 | ulint | |
25568 | dict_index_get_n_unique_in_tree( | |
25569 | ||
25570 | ||
25571 | dict_index_t* index) | |
25572 | ||
25573 | { | |
25574 | ; | |
25575 | ; | |
25576 | ; | |
25577 | ||
25578 | if (index->type & 1) { | |
25579 | ||
25580 | return(dict_index_get_n_unique(index)); | |
25581 | } | |
25582 | ||
25583 | return(dict_index_get_n_fields(index)); | |
25584 | } | |
25585 | ||
25586 | ||
25587 | ||
25588 | ||
25589 | ||
25590 | ||
25591 | static inline | |
25592 | ulint | |
25593 | dict_index_get_n_ordering_defined_by_user( | |
25594 | ||
25595 | ||
25596 | dict_index_t* index) | |
25597 | ||
25598 | { | |
25599 | return(index->n_user_defined_cols); | |
25600 | } | |
25601 | ||
25602 | ||
25603 | ||
25604 | static inline | |
25605 | dict_field_t* | |
25606 | dict_index_get_nth_field( | |
25607 | ||
25608 | ||
25609 | dict_index_t* index, | |
25610 | ulint pos) | |
25611 | { | |
25612 | ; | |
25613 | ; | |
25614 | ; | |
25615 | ||
25616 | return((index->fields) + pos); | |
25617 | } | |
25618 | ||
25619 | ||
25620 | ||
25621 | static inline | |
25622 | ulint | |
25623 | dict_index_get_sys_col_pos( | |
25624 | ||
25625 | ||
25626 | ||
25627 | dict_index_t* index, | |
25628 | ulint type) | |
25629 | { | |
25630 | dict_col_t* col; | |
25631 | ||
25632 | ; | |
25633 | ; | |
25634 | ; | |
25635 | ||
25636 | col = dict_table_get_sys_col(index->table, type); | |
25637 | ||
25638 | if (index->type & 1) { | |
25639 | ||
25640 | return(col->clust_pos); | |
25641 | } | |
25642 | ||
25643 | return(dict_index_get_nth_col_pos(index, | |
25644 | dict_table_get_sys_col_no(index->table, type))); | |
25645 | } | |
25646 | ||
25647 | ||
25648 | ||
25649 | static inline | |
25650 | dict_tree_t* | |
25651 | dict_index_get_tree( | |
25652 | ||
25653 | ||
25654 | dict_index_t* index) | |
25655 | { | |
25656 | ; | |
25657 | ; | |
25658 | ||
25659 | return(index->tree); | |
25660 | } | |
25661 | ||
25662 | ||
25663 | ||
25664 | static inline | |
25665 | ulint | |
25666 | dict_field_get_order( | |
25667 | ||
25668 | dict_field_t* field) | |
25669 | { | |
25670 | ; | |
25671 | ||
25672 | return(field->order); | |
25673 | } | |
25674 | ||
25675 | ||
25676 | ||
25677 | static inline | |
25678 | dict_col_t* | |
25679 | dict_field_get_col( | |
25680 | ||
25681 | dict_field_t* field) | |
25682 | { | |
25683 | ; | |
25684 | ||
25685 | return(field->col); | |
25686 | } | |
25687 | ||
25688 | ||
25689 | ||
25690 | static inline | |
25691 | dtype_t* | |
25692 | dict_index_get_nth_type( | |
25693 | ||
25694 | ||
25695 | dict_index_t* index, | |
25696 | ulint pos) | |
25697 | { | |
25698 | return(dict_col_get_type(dict_field_get_col( | |
25699 | dict_index_get_nth_field(index, pos)))); | |
25700 | } | |
25701 | ||
25702 | ||
25703 | ||
25704 | static inline | |
25705 | ulint | |
25706 | dict_index_get_nth_col_no( | |
25707 | ||
25708 | ||
25709 | dict_index_t* index, | |
25710 | ulint pos) | |
25711 | { | |
25712 | return(dict_col_get_no(dict_field_get_col( | |
25713 | dict_index_get_nth_field(index, pos)))); | |
25714 | } | |
25715 | ||
25716 | ||
25717 | ||
25718 | static inline | |
25719 | ulint | |
25720 | dict_tree_get_space( | |
25721 | ||
25722 | ||
25723 | dict_tree_t* tree) | |
25724 | { | |
25725 | ; | |
25726 | ; | |
25727 | ||
25728 | return(tree->space); | |
25729 | } | |
25730 | ||
25731 | ||
25732 | ||
25733 | static inline | |
25734 | void | |
25735 | dict_tree_set_space( | |
25736 | ||
25737 | dict_tree_t* tree, | |
25738 | ulint space) | |
25739 | { | |
25740 | ; | |
25741 | ; | |
25742 | ||
25743 | tree->space = space; | |
25744 | } | |
25745 | ||
25746 | ||
25747 | ||
25748 | static inline | |
25749 | ulint | |
25750 | dict_tree_get_page( | |
25751 | ||
25752 | ||
25753 | dict_tree_t* tree) | |
25754 | { | |
25755 | ; | |
25756 | ; | |
25757 | ||
25758 | return(tree->page); | |
25759 | } | |
25760 | ||
25761 | ||
25762 | ||
25763 | static inline | |
25764 | void | |
25765 | dict_tree_set_page( | |
25766 | ||
25767 | dict_tree_t* tree, | |
25768 | ulint page) | |
25769 | { | |
25770 | ; | |
25771 | ; | |
25772 | ||
25773 | tree->page = page; | |
25774 | } | |
25775 | ||
25776 | ||
25777 | ||
25778 | static inline | |
25779 | ulint | |
25780 | dict_tree_get_type( | |
25781 | ||
25782 | ||
25783 | dict_tree_t* tree) | |
25784 | { | |
25785 | ; | |
25786 | ; | |
25787 | ||
25788 | return(tree->type); | |
25789 | } | |
25790 | ||
25791 | ||
25792 | ||
25793 | static inline | |
25794 | rw_lock_t* | |
25795 | dict_tree_get_lock( | |
25796 | ||
25797 | ||
25798 | dict_tree_t* tree) | |
25799 | { | |
25800 | ; | |
25801 | ; | |
25802 | ||
25803 | return(&(tree->lock)); | |
25804 | } | |
25805 | ||
25806 | ||
25807 | ||
25808 | ||
25809 | ||
25810 | static inline | |
25811 | ulint | |
25812 | dict_tree_get_space_reserve( | |
25813 | ||
25814 | ||
25815 | ||
25816 | dict_tree_t* tree) | |
25817 | { | |
25818 | ; | |
25819 | ||
25820 | tree = tree; | |
25821 | ||
25822 | return((2 * 8192) / 16); | |
25823 | } | |
25824 | ||
25825 | ||
25826 | ||
25827 | static inline | |
25828 | dict_table_t* | |
25829 | dict_table_check_if_in_cache_low( | |
25830 | ||
25831 | ||
25832 | const char* table_name) | |
25833 | { | |
25834 | dict_table_t* table; | |
25835 | ulint table_fold; | |
25836 | ||
25837 | ; | |
25838 | ||
25839 | ||
25840 | ||
25841 | ||
25842 | ||
25843 | table_fold = ut_fold_string(table_name); | |
25844 | ||
25845 | { (table) = (hash_get_nth_cell(dict_sys->table_hash, hash_calc_hash(table_fold, dict_sys->table_hash))->node); while ((table) != ((void *)0)) { if (ut_strcmp(table->name, table_name) == 0) { break; } else { (table) = ((table)->name_hash); } }}; | |
25846 | ||
25847 | ||
25848 | ||
25849 | if (table) { | |
25850 | { ; do { if (__builtin_expect(!((ulint)((dict_sys->table_LRU).count > 0)), (0))) { ut_dbg_assertion_failed("(dict_sys->table_LRU).count > 0", "./include/dict0dict.ic", (ulint) 539); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dict0dict.ic", (ulint) 539); } while (0); } while (0); ((dict_sys->table_LRU).count)--; if (((table)->table_LRU).next != ((void *)0)) { ((((table)->table_LRU).next)->table_LRU).prev = ((table)->table_LRU).prev; } else { (dict_sys->table_LRU).end = ((table)->table_LRU).prev; } if (((table)->table_LRU).prev != ((void *)0)) { ((((table)->table_LRU).prev)->table_LRU).next = ((table)->table_LRU).next; } else { (dict_sys->table_LRU).start = ((table)->table_LRU).next; }}; | |
25851 | { ; ((dict_sys->table_LRU).count)++; ((table)->table_LRU).next = (dict_sys->table_LRU).start; ((table)->table_LRU).prev = ((void *)0); if ((dict_sys->table_LRU).start != ((void *)0)) { (((dict_sys->table_LRU).start)->table_LRU).prev = (table); } (dict_sys->table_LRU).start = (table); if ((dict_sys->table_LRU).end == ((void *)0)) { (dict_sys->table_LRU).end = (table); }}; | |
25852 | } | |
25853 | ||
25854 | return(table); | |
25855 | } | |
25856 | ||
25857 | ||
25858 | ||
25859 | ||
25860 | static inline | |
25861 | dict_table_t* | |
25862 | dict_table_get_low( | |
25863 | ||
25864 | ||
25865 | const char* table_name) | |
25866 | { | |
25867 | dict_table_t* table; | |
25868 | ||
25869 | ; | |
25870 | ||
25871 | ||
25872 | ||
25873 | ||
25874 | table = dict_table_check_if_in_cache_low(table_name); | |
25875 | ||
25876 | if (table == ((void *)0)) { | |
25877 | table = dict_load_table(table_name); | |
25878 | } | |
25879 | ||
25880 | return(table); | |
25881 | } | |
25882 | ||
25883 | ||
25884 | ||
25885 | static inline | |
25886 | dict_table_t* | |
25887 | dict_table_get_on_id_low( | |
25888 | ||
25889 | ||
25890 | dulint table_id, | |
25891 | trx_t* trx) | |
25892 | { | |
25893 | dict_table_t* table; | |
25894 | ulint fold; | |
25895 | ||
25896 | ||
25897 | ||
25898 | ||
25899 | trx = trx; | |
25900 | ||
25901 | ||
25902 | fold = ut_fold_dulint(table_id); | |
25903 | ||
25904 | { (table) = (hash_get_nth_cell(dict_sys->table_id_hash, hash_calc_hash(fold, dict_sys->table_id_hash))->node); while ((table) != ((void *)0)) { if (ut_dulint_cmp(table->id, table_id) == 0) { break; } else { (table) = ((table)->id_hash); } }}; | |
25905 | ||
25906 | if (table == ((void *)0)) { | |
25907 | table = dict_load_table_on_id(table_id); | |
25908 | } | |
25909 | ||
25910 | if (table != ((void *)0)) { | |
25911 | table->mem_fix++; | |
25912 | ||
25913 | ||
25914 | { ; do { if (__builtin_expect(!((ulint)((dict_sys->table_LRU).count > 0)), (0))) { ut_dbg_assertion_failed("(dict_sys->table_LRU).count > 0", "./include/dict0dict.ic", (ulint) 603); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dict0dict.ic", (ulint) 603); } while (0); } while (0); ((dict_sys->table_LRU).count)--; if (((table)->table_LRU).next != ((void *)0)) { ((((table)->table_LRU).next)->table_LRU).prev = ((table)->table_LRU).prev; } else { (dict_sys->table_LRU).end = ((table)->table_LRU).prev; } if (((table)->table_LRU).prev != ((void *)0)) { ((((table)->table_LRU).prev)->table_LRU).next = ((table)->table_LRU).next; } else { (dict_sys->table_LRU).start = ((table)->table_LRU).next; }}; | |
25915 | { ; ((dict_sys->table_LRU).count)++; ((table)->table_LRU).next = (dict_sys->table_LRU).start; ((table)->table_LRU).prev = ((void *)0); if ((dict_sys->table_LRU).start != ((void *)0)) { (((dict_sys->table_LRU).start)->table_LRU).prev = (table); } (dict_sys->table_LRU).start = (table); if ((dict_sys->table_LRU).end == ((void *)0)) { (dict_sys->table_LRU).end = (table); }}; | |
25916 | ||
25917 | ||
25918 | } | |
25919 | ||
25920 | ||
25921 | ||
25922 | return(table); | |
25923 | } | |
25924 | ||
25925 | ||
25926 | ||
25927 | static inline | |
25928 | void | |
25929 | dict_table_release( | |
25930 | ||
25931 | dict_table_t* table) | |
25932 | { | |
25933 | mutex_enter_func((&(dict_sys->mutex)), "./include/dict0dict.ic", 622); | |
25934 | ||
25935 | table->mem_fix--; | |
25936 | ||
25937 | mutex_exit(&(dict_sys->mutex)); | |
25938 | } | |
25939 | ||
25940 | ||
25941 | ||
25942 | static inline | |
25943 | dict_index_t* | |
25944 | dict_table_get_index( | |
25945 | ||
25946 | ||
25947 | dict_table_t* table, | |
25948 | const char* name) | |
25949 | { | |
25950 | dict_index_t* index = ((void *)0); | |
25951 | ||
25952 | index = dict_table_get_first_index(table); | |
25953 | ||
25954 | while (index != ((void *)0)) { | |
25955 | if (ut_strcmp(name, index->name) == 0) { | |
25956 | ||
25957 | break; | |
25958 | } | |
25959 | ||
25960 | index = dict_table_get_next_index(index); | |
25961 | } | |
25962 | ||
25963 | return(index); | |
25964 | } | |
25965 | # 987 "./include/dict0dict.h" 2 | |
25966 | # 15 "./include/btr0btr.h" 2 | |
25967 | ||
25968 | # 1 "./include/page0cur.h" 1 | |
25969 | # 15 "./include/page0cur.h" | |
25970 | # 1 "./include/page0page.h" 1 | |
25971 | # 19 "./include/page0page.h" | |
25972 | # 1 "./include/rem0rec.h" 1 | |
25973 | # 47 "./include/rem0rec.h" | |
25974 | static inline | |
25975 | ulint | |
25976 | rec_get_next_offs( | |
25977 | ||
25978 | ||
25979 | ||
25980 | rec_t* rec, | |
25981 | ulint comp); | |
25982 | ||
25983 | ||
25984 | ||
25985 | static inline | |
25986 | void | |
25987 | rec_set_next_offs( | |
25988 | ||
25989 | rec_t* rec, | |
25990 | ulint comp, | |
25991 | ulint next); | |
25992 | ||
25993 | ||
25994 | ||
25995 | static inline | |
25996 | ulint | |
25997 | rec_get_n_fields_old( | |
25998 | ||
25999 | ||
26000 | rec_t* rec); | |
26001 | ||
26002 | ||
26003 | ||
26004 | static inline | |
26005 | ulint | |
26006 | rec_get_n_fields( | |
26007 | ||
26008 | ||
26009 | rec_t* rec, | |
26010 | dict_index_t* index); | |
26011 | ||
26012 | ||
26013 | ||
26014 | static inline | |
26015 | ulint | |
26016 | rec_get_n_owned( | |
26017 | ||
26018 | ||
26019 | rec_t* rec, | |
26020 | ulint comp); | |
26021 | ||
26022 | ||
26023 | ||
26024 | static inline | |
26025 | void | |
26026 | rec_set_n_owned( | |
26027 | ||
26028 | rec_t* rec, | |
26029 | ulint comp, | |
26030 | ulint n_owned); | |
26031 | ||
26032 | ||
26033 | ||
26034 | static inline | |
26035 | ulint | |
26036 | rec_get_info_bits( | |
26037 | ||
26038 | ||
26039 | rec_t* rec, | |
26040 | ulint comp); | |
26041 | ||
26042 | ||
26043 | static inline | |
26044 | void | |
26045 | rec_set_info_bits( | |
26046 | ||
26047 | rec_t* rec, | |
26048 | ulint comp, | |
26049 | ulint bits); | |
26050 | ||
26051 | ||
26052 | static inline | |
26053 | ulint | |
26054 | rec_get_status( | |
26055 | ||
26056 | ||
26057 | rec_t* rec); | |
26058 | ||
26059 | ||
26060 | ||
26061 | static inline | |
26062 | void | |
26063 | rec_set_status( | |
26064 | ||
26065 | rec_t* rec, | |
26066 | ulint bits); | |
26067 | ||
26068 | ||
26069 | ||
26070 | ||
26071 | static inline | |
26072 | ulint | |
26073 | rec_get_info_and_status_bits( | |
26074 | ||
26075 | ||
26076 | rec_t* rec, | |
26077 | ulint comp); | |
26078 | ||
26079 | ||
26080 | ||
26081 | static inline | |
26082 | void | |
26083 | rec_set_info_and_status_bits( | |
26084 | ||
26085 | rec_t* rec, | |
26086 | ulint comp, | |
26087 | ulint bits); | |
26088 | ||
26089 | ||
26090 | ||
26091 | static inline | |
26092 | ulint | |
26093 | rec_get_deleted_flag( | |
26094 | ||
26095 | ||
26096 | rec_t* rec, | |
26097 | ulint comp); | |
26098 | ||
26099 | ||
26100 | static inline | |
26101 | void | |
26102 | rec_set_deleted_flag( | |
26103 | ||
26104 | rec_t* rec, | |
26105 | ulint comp, | |
26106 | ulint flag); | |
26107 | ||
26108 | ||
26109 | static inline | |
26110 | ulint | |
26111 | rec_get_node_ptr_flag( | |
26112 | ||
26113 | ||
26114 | rec_t* rec); | |
26115 | ||
26116 | ||
26117 | ||
26118 | static inline | |
26119 | ulint | |
26120 | rec_get_heap_no( | |
26121 | ||
26122 | ||
26123 | rec_t* rec, | |
26124 | ulint comp); | |
26125 | ||
26126 | ||
26127 | ||
26128 | static inline | |
26129 | void | |
26130 | rec_set_heap_no( | |
26131 | ||
26132 | rec_t* rec, | |
26133 | ulint comp, | |
26134 | ulint heap_no); | |
26135 | ||
26136 | ||
26137 | ||
26138 | static inline | |
26139 | ulint | |
26140 | rec_get_1byte_offs_flag( | |
26141 | ||
26142 | ||
26143 | rec_t* rec); | |
26144 | ||
26145 | ||
26146 | ||
26147 | ||
26148 | ulint* | |
26149 | rec_get_offsets_func( | |
26150 | ||
26151 | ||
26152 | rec_t* rec, | |
26153 | dict_index_t* index, | |
26154 | ulint* offsets, | |
26155 | ||
26156 | ||
26157 | ulint n_fields, | |
26158 | ||
26159 | mem_heap_t** heap, | |
26160 | const char* file, | |
26161 | ulint line); | |
26162 | ||
26163 | ||
26164 | ||
26165 | ||
26166 | ||
26167 | ||
26168 | static inline | |
26169 | ulint | |
26170 | rec_offs_validate( | |
26171 | ||
26172 | ||
26173 | rec_t* rec, | |
26174 | dict_index_t* index, | |
26175 | const ulint* offsets); | |
26176 | ||
26177 | ||
26178 | ||
26179 | static inline | |
26180 | void | |
26181 | rec_offs_make_valid( | |
26182 | ||
26183 | rec_t* rec, | |
26184 | dict_index_t* index, | |
26185 | ulint* offsets); | |
26186 | ||
26187 | ||
26188 | ||
26189 | ||
26190 | ||
26191 | unsigned char* | |
26192 | rec_get_nth_field_old( | |
26193 | ||
26194 | ||
26195 | rec_t* rec, | |
26196 | ulint n, | |
26197 | ulint* len); | |
26198 | ||
26199 | ||
26200 | ||
26201 | ||
26202 | ||
26203 | static inline | |
26204 | ulint | |
26205 | rec_get_nth_field_size( | |
26206 | ||
26207 | ||
26208 | rec_t* rec, | |
26209 | ulint n); | |
26210 | ||
26211 | ||
26212 | ||
26213 | static inline | |
26214 | unsigned char* | |
26215 | rec_get_nth_field( | |
26216 | ||
26217 | ||
26218 | rec_t* rec, | |
26219 | const ulint* offsets, | |
26220 | ulint n, | |
26221 | ulint* len); | |
26222 | ||
26223 | ||
26224 | ||
26225 | ||
26226 | static inline | |
26227 | ulint | |
26228 | rec_offs_comp( | |
26229 | ||
26230 | ||
26231 | const ulint* offsets); | |
26232 | ||
26233 | ||
26234 | static inline | |
26235 | ulint | |
26236 | rec_offs_nth_extern( | |
26237 | ||
26238 | ||
26239 | const ulint* offsets, | |
26240 | ulint n); | |
26241 | ||
26242 | ||
26243 | static inline | |
26244 | ulint | |
26245 | rec_offs_nth_sql_null( | |
26246 | ||
26247 | ||
26248 | const ulint* offsets, | |
26249 | ulint n); | |
26250 | ||
26251 | ||
26252 | static inline | |
26253 | ulint | |
26254 | rec_offs_nth_size( | |
26255 | ||
26256 | ||
26257 | const ulint* offsets, | |
26258 | ulint n); | |
26259 | ||
26260 | ||
26261 | ||
26262 | ||
26263 | static inline | |
26264 | ulint | |
26265 | rec_offs_any_extern( | |
26266 | ||
26267 | ||
26268 | const ulint* offsets); | |
26269 | ||
26270 | ||
26271 | static inline | |
26272 | void | |
26273 | rec_set_nth_field_extern_bit( | |
26274 | ||
26275 | rec_t* rec, | |
26276 | dict_index_t* index, | |
26277 | ulint i, | |
26278 | ulint val, | |
26279 | mtr_t* mtr); | |
26280 | ||
26281 | ||
26282 | ||
26283 | ||
26284 | ||
26285 | void | |
26286 | rec_set_field_extern_bits( | |
26287 | ||
26288 | rec_t* rec, | |
26289 | dict_index_t* index, | |
26290 | const ulint* vec, | |
26291 | ulint n_fields, | |
26292 | mtr_t* mtr); | |
26293 | # 374 "./include/rem0rec.h" | |
26294 | static inline | |
26295 | void | |
26296 | rec_set_nth_field( | |
26297 | ||
26298 | rec_t* rec, | |
26299 | const ulint* offsets, | |
26300 | ulint n, | |
26301 | const void* data, | |
26302 | ulint len); | |
26303 | ||
26304 | ||
26305 | ||
26306 | ||
26307 | ||
26308 | static inline | |
26309 | ulint | |
26310 | rec_get_data_size_old( | |
26311 | ||
26312 | ||
26313 | rec_t* rec); | |
26314 | ||
26315 | ||
26316 | static inline | |
26317 | ulint | |
26318 | rec_offs_n_fields( | |
26319 | ||
26320 | ||
26321 | const ulint* offsets); | |
26322 | ||
26323 | ||
26324 | ||
26325 | ||
26326 | ||
26327 | static inline | |
26328 | ulint | |
26329 | rec_offs_data_size( | |
26330 | ||
26331 | ||
26332 | const ulint* offsets); | |
26333 | ||
26334 | ||
26335 | ||
26336 | ||
26337 | static inline | |
26338 | ulint | |
26339 | rec_offs_extra_size( | |
26340 | ||
26341 | ||
26342 | const ulint* offsets); | |
26343 | ||
26344 | ||
26345 | static inline | |
26346 | ulint | |
26347 | rec_offs_size( | |
26348 | ||
26349 | ||
26350 | const ulint* offsets); | |
26351 | ||
26352 | ||
26353 | static inline | |
26354 | unsigned char* | |
26355 | rec_get_start( | |
26356 | ||
26357 | ||
26358 | rec_t* rec, | |
26359 | const ulint* offsets); | |
26360 | ||
26361 | ||
26362 | static inline | |
26363 | unsigned char* | |
26364 | rec_get_end( | |
26365 | ||
26366 | ||
26367 | rec_t* rec, | |
26368 | const ulint* offsets); | |
26369 | ||
26370 | ||
26371 | static inline | |
26372 | rec_t* | |
26373 | rec_copy( | |
26374 | ||
26375 | ||
26376 | void* buf, | |
26377 | const rec_t* rec, | |
26378 | const ulint* offsets); | |
26379 | ||
26380 | ||
26381 | ||
26382 | ||
26383 | rec_t* | |
26384 | rec_copy_prefix_to_buf( | |
26385 | ||
26386 | ||
26387 | rec_t* rec, | |
26388 | dict_index_t* index, | |
26389 | ulint n_fields, | |
26390 | unsigned char** buf, | |
26391 | ||
26392 | ulint* buf_size); | |
26393 | ||
26394 | ||
26395 | static inline | |
26396 | ulint | |
26397 | rec_fold( | |
26398 | ||
26399 | ||
26400 | rec_t* rec, | |
26401 | const ulint* offsets, | |
26402 | ||
26403 | ulint n_fields, | |
26404 | ||
26405 | ulint n_bytes, | |
26406 | ||
26407 | dulint tree_id); | |
26408 | ||
26409 | ||
26410 | ||
26411 | ||
26412 | rec_t* | |
26413 | rec_convert_dtuple_to_rec( | |
26414 | ||
26415 | ||
26416 | ||
26417 | unsigned char* buf, | |
26418 | ||
26419 | dict_index_t* index, | |
26420 | dtuple_t* dtuple); | |
26421 | ||
26422 | ||
26423 | ||
26424 | static inline | |
26425 | ulint | |
26426 | rec_get_converted_extra_size( | |
26427 | ||
26428 | ||
26429 | ulint data_size, | |
26430 | ulint n_fields) | |
26431 | __attribute__((const)); | |
26432 | ||
26433 | ||
26434 | ||
26435 | static inline | |
26436 | ulint | |
26437 | rec_get_converted_size( | |
26438 | ||
26439 | ||
26440 | dict_index_t* index, | |
26441 | dtuple_t* dtuple); | |
26442 | ||
26443 | ||
26444 | ||
26445 | ||
26446 | void | |
26447 | rec_copy_prefix_to_dtuple( | |
26448 | ||
26449 | dtuple_t* tuple, | |
26450 | rec_t* rec, | |
26451 | dict_index_t* index, | |
26452 | ulint n_fields, | |
26453 | mem_heap_t* heap); | |
26454 | ||
26455 | ||
26456 | ||
26457 | ulint | |
26458 | rec_validate( | |
26459 | ||
26460 | ||
26461 | rec_t* rec, | |
26462 | const ulint* offsets); | |
26463 | ||
26464 | ||
26465 | ||
26466 | void | |
26467 | rec_print_old( | |
26468 | ||
26469 | FILE* file, | |
26470 | rec_t* rec); | |
26471 | ||
26472 | ||
26473 | ||
26474 | void | |
26475 | rec_print_new( | |
26476 | ||
26477 | FILE* file, | |
26478 | rec_t* rec, | |
26479 | const ulint* offsets); | |
26480 | ||
26481 | ||
26482 | ||
26483 | void | |
26484 | rec_print( | |
26485 | ||
26486 | FILE* file, | |
26487 | rec_t* rec, | |
26488 | dict_index_t* index); | |
26489 | # 582 "./include/rem0rec.h" | |
26490 | # 1 "./include/rem0rec.ic" 1 | |
26491 | # 134 "./include/rem0rec.ic" | |
26492 | void | |
26493 | rec_set_nth_field_null_bit( | |
26494 | ||
26495 | rec_t* rec, | |
26496 | ulint i, | |
26497 | ulint val); | |
26498 | ||
26499 | ||
26500 | ||
26501 | ||
26502 | void | |
26503 | rec_set_nth_field_sql_null( | |
26504 | ||
26505 | rec_t* rec, | |
26506 | ulint n); | |
26507 | ||
26508 | ||
26509 | ||
26510 | ||
26511 | void | |
26512 | rec_set_nth_field_extern_bit_old( | |
26513 | ||
26514 | rec_t* rec, | |
26515 | ulint i, | |
26516 | ulint val, | |
26517 | mtr_t* mtr); | |
26518 | ||
26519 | ||
26520 | ||
26521 | ||
26522 | ||
26523 | void | |
26524 | rec_set_nth_field_extern_bit_new( | |
26525 | ||
26526 | rec_t* rec, | |
26527 | dict_index_t* index, | |
26528 | ulint ith, | |
26529 | ulint val, | |
26530 | mtr_t* mtr); | |
26531 | ||
26532 | ||
26533 | ||
26534 | ||
26535 | ||
26536 | static inline | |
26537 | ulint | |
26538 | rec_get_bit_field_1( | |
26539 | ||
26540 | rec_t* rec, | |
26541 | ulint offs, | |
26542 | ulint mask, | |
26543 | ulint shift) | |
26544 | { | |
26545 | ; | |
26546 | ||
26547 | return((mach_read_from_1(rec - offs) & mask) >> shift); | |
26548 | } | |
26549 | ||
26550 | ||
26551 | ||
26552 | static inline | |
26553 | void | |
26554 | rec_set_bit_field_1( | |
26555 | ||
26556 | rec_t* rec, | |
26557 | ulint val, | |
26558 | ulint offs, | |
26559 | ulint mask, | |
26560 | ulint shift) | |
26561 | { | |
26562 | ; | |
26563 | ; | |
26564 | ; | |
26565 | ; | |
26566 | ; | |
26567 | ; | |
26568 | ||
26569 | mach_write_to_1(rec - offs, | |
26570 | (mach_read_from_1(rec - offs) & ~mask) | |
26571 | | (val << shift)); | |
26572 | } | |
26573 | ||
26574 | ||
26575 | ||
26576 | static inline | |
26577 | ulint | |
26578 | rec_get_bit_field_2( | |
26579 | ||
26580 | rec_t* rec, | |
26581 | ulint offs, | |
26582 | ulint mask, | |
26583 | ulint shift) | |
26584 | { | |
26585 | ; | |
26586 | ||
26587 | return((mach_read_from_2(rec - offs) & mask) >> shift); | |
26588 | } | |
26589 | ||
26590 | ||
26591 | ||
26592 | static inline | |
26593 | void | |
26594 | rec_set_bit_field_2( | |
26595 | ||
26596 | rec_t* rec, | |
26597 | ulint val, | |
26598 | ulint offs, | |
26599 | ulint mask, | |
26600 | ulint shift) | |
26601 | { | |
26602 | ; | |
26603 | ; | |
26604 | ; | |
26605 | ; | |
26606 | ; | |
26607 | ; | |
26608 | ; | |
26609 | ; | |
26610 | ||
26611 | mach_write_to_2(rec - offs, | |
26612 | (mach_read_from_2(rec - offs) & ~mask) | |
26613 | | (val << shift)); | |
26614 | } | |
26615 | ||
26616 | ||
26617 | ||
26618 | ||
26619 | static inline | |
26620 | ulint | |
26621 | rec_get_next_offs( | |
26622 | ||
26623 | ||
26624 | ||
26625 | rec_t* rec, | |
26626 | ulint comp) | |
26627 | { | |
26628 | ulint field_value; | |
26629 | ||
26630 | ; | |
26631 | ; | |
26632 | ||
26633 | field_value = mach_read_from_2(rec - 2); | |
26634 | ||
26635 | if (comp) { | |
26636 | # 288 "./include/rem0rec.ic" | |
26637 | ; | |
26638 | ||
26639 | ||
26640 | ||
26641 | ||
26642 | ||
26643 | if (field_value == 0) { | |
26644 | ||
26645 | return(0); | |
26646 | } | |
26647 | ||
26648 | return(ut_align_offset(rec + field_value, (2 * 8192))); | |
26649 | } else { | |
26650 | ; | |
26651 | ||
26652 | return(field_value); | |
26653 | } | |
26654 | } | |
26655 | ||
26656 | ||
26657 | ||
26658 | ||
26659 | static inline | |
26660 | void | |
26661 | rec_set_next_offs( | |
26662 | ||
26663 | rec_t* rec, | |
26664 | ulint comp, | |
26665 | ulint next) | |
26666 | { | |
26667 | ; | |
26668 | ; | |
26669 | ; | |
26670 | ; | |
26671 | ||
26672 | if (comp) { | |
26673 | ulint field_value; | |
26674 | ||
26675 | if (next) { | |
26676 | ||
26677 | ||
26678 | ||
26679 | ||
26680 | field_value = (ulint)((lint)next | |
26681 | - (lint)ut_align_offset(rec, (2 * 8192))); | |
26682 | field_value &= 0xFFFFUL; | |
26683 | } else { | |
26684 | field_value = 0; | |
26685 | } | |
26686 | ||
26687 | mach_write_to_2(rec - 2, field_value); | |
26688 | } else { | |
26689 | mach_write_to_2(rec - 2, next); | |
26690 | } | |
26691 | } | |
26692 | ||
26693 | ||
26694 | ||
26695 | ||
26696 | static inline | |
26697 | ulint | |
26698 | rec_get_n_fields_old( | |
26699 | ||
26700 | ||
26701 | rec_t* rec) | |
26702 | { | |
26703 | ulint ret; | |
26704 | ||
26705 | ; | |
26706 | ||
26707 | ret = rec_get_bit_field_2(rec, 4, | |
26708 | 0x7FEUL, 1); | |
26709 | ; | |
26710 | ; | |
26711 | ||
26712 | return(ret); | |
26713 | } | |
26714 | ||
26715 | ||
26716 | ||
26717 | ||
26718 | static inline | |
26719 | void | |
26720 | rec_set_n_fields_old( | |
26721 | ||
26722 | rec_t* rec, | |
26723 | ulint n_fields) | |
26724 | { | |
26725 | ; | |
26726 | ; | |
26727 | ; | |
26728 | ||
26729 | rec_set_bit_field_2(rec, n_fields, 4, | |
26730 | 0x7FEUL, 1); | |
26731 | } | |
26732 | ||
26733 | ||
26734 | ||
26735 | static inline | |
26736 | ulint | |
26737 | rec_get_status( | |
26738 | ||
26739 | ||
26740 | rec_t* rec) | |
26741 | { | |
26742 | ulint ret; | |
26743 | ||
26744 | ; | |
26745 | ||
26746 | ret = rec_get_bit_field_1(rec, 3, | |
26747 | 0x7UL, 0); | |
26748 | ; | |
26749 | ||
26750 | return(ret); | |
26751 | } | |
26752 | ||
26753 | ||
26754 | ||
26755 | ||
26756 | static inline | |
26757 | ulint | |
26758 | rec_get_n_fields( | |
26759 | ||
26760 | ||
26761 | rec_t* rec, | |
26762 | dict_index_t* index) | |
26763 | { | |
26764 | ; | |
26765 | ; | |
26766 | if (__builtin_expect(!index->table->comp, (0))) { | |
26767 | return(rec_get_n_fields_old(rec)); | |
26768 | } | |
26769 | switch (rec_get_status(rec)) { | |
26770 | case 0: | |
26771 | return(dict_index_get_n_fields(index)); | |
26772 | case 1: | |
26773 | return(dict_index_get_n_unique_in_tree(index) + 1); | |
26774 | case 2: | |
26775 | case 3: | |
26776 | return(1); | |
26777 | default: | |
26778 | do { ut_dbg_assertion_failed(0, "./include/rem0rec.ic", (ulint) 429); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
26779 | return(((ulint)(-1))); | |
26780 | } | |
26781 | } | |
26782 | ||
26783 | ||
26784 | ||
26785 | ||
26786 | static inline | |
26787 | ulint | |
26788 | rec_get_n_owned( | |
26789 | ||
26790 | ||
26791 | rec_t* rec, | |
26792 | ulint comp) | |
26793 | { | |
26794 | ulint ret; | |
26795 | ||
26796 | ; | |
26797 | ||
26798 | ret = rec_get_bit_field_1(rec, | |
26799 | comp ? 5 : 6, | |
26800 | 0xFUL, 0); | |
26801 | ; | |
26802 | ||
26803 | return(ret); | |
26804 | } | |
26805 | ||
26806 | ||
26807 | ||
26808 | static inline | |
26809 | void | |
26810 | rec_set_n_owned( | |
26811 | ||
26812 | rec_t* rec, | |
26813 | ulint comp, | |
26814 | ulint n_owned) | |
26815 | { | |
26816 | ; | |
26817 | ; | |
26818 | ||
26819 | rec_set_bit_field_1(rec, n_owned, | |
26820 | comp ? 5 : 6, | |
26821 | 0xFUL, 0); | |
26822 | } | |
26823 | ||
26824 | ||
26825 | ||
26826 | static inline | |
26827 | ulint | |
26828 | rec_get_info_bits( | |
26829 | ||
26830 | ||
26831 | rec_t* rec, | |
26832 | ulint comp) | |
26833 | { | |
26834 | ulint ret; | |
26835 | ||
26836 | ; | |
26837 | ||
26838 | ret = rec_get_bit_field_1(rec, | |
26839 | comp ? 5 : 6, | |
26840 | 0xF0UL, 0); | |
26841 | ; | |
26842 | ||
26843 | return(ret); | |
26844 | } | |
26845 | ||
26846 | ||
26847 | ||
26848 | static inline | |
26849 | void | |
26850 | rec_set_info_bits( | |
26851 | ||
26852 | rec_t* rec, | |
26853 | ulint comp, | |
26854 | ulint bits) | |
26855 | { | |
26856 | ; | |
26857 | ; | |
26858 | ||
26859 | rec_set_bit_field_1(rec, bits, | |
26860 | comp ? 5 : 6, | |
26861 | 0xF0UL, 0); | |
26862 | } | |
26863 | ||
26864 | ||
26865 | ||
26866 | static inline | |
26867 | void | |
26868 | rec_set_status( | |
26869 | ||
26870 | rec_t* rec, | |
26871 | ulint bits) | |
26872 | { | |
26873 | ; | |
26874 | ; | |
26875 | ||
26876 | rec_set_bit_field_1(rec, bits, 3, | |
26877 | 0x7UL, 0); | |
26878 | } | |
26879 | ||
26880 | ||
26881 | ||
26882 | ||
26883 | static inline | |
26884 | ulint | |
26885 | rec_get_info_and_status_bits( | |
26886 | ||
26887 | ||
26888 | rec_t* rec, | |
26889 | ulint comp) | |
26890 | { | |
26891 | ulint bits; | |
26892 | ||
26893 | ||
26894 | ||
26895 | ||
26896 | if (__builtin_expect(comp, ((ulint) 1 << 31))) { | |
26897 | bits = rec_get_info_bits(rec, (1)) | rec_get_status(rec); | |
26898 | } else { | |
26899 | bits = rec_get_info_bits(rec, (0)); | |
26900 | ; | |
26901 | } | |
26902 | return(bits); | |
26903 | } | |
26904 | ||
26905 | ||
26906 | ||
26907 | static inline | |
26908 | void | |
26909 | rec_set_info_and_status_bits( | |
26910 | ||
26911 | rec_t* rec, | |
26912 | ulint comp, | |
26913 | ulint bits) | |
26914 | { | |
26915 | ||
26916 | ||
26917 | ||
26918 | ||
26919 | if (comp) { | |
26920 | rec_set_status(rec, bits & 0x7UL); | |
26921 | } else { | |
26922 | ; | |
26923 | } | |
26924 | rec_set_info_bits(rec, comp, bits & ~0x7UL); | |
26925 | } | |
26926 | ||
26927 | ||
26928 | ||
26929 | static inline | |
26930 | ulint | |
26931 | rec_get_deleted_flag( | |
26932 | ||
26933 | ||
26934 | rec_t* rec, | |
26935 | ulint comp) | |
26936 | { | |
26937 | if (__builtin_expect(comp, ((ulint) 1 << 31))) { | |
26938 | return(__builtin_expect(rec_get_bit_field_1(rec, 5, 0x20UL, 0), (0))); | |
26939 | ||
26940 | ||
26941 | } else { | |
26942 | return(__builtin_expect(rec_get_bit_field_1(rec, 6, 0x20UL, 0), (0))); | |
26943 | ||
26944 | ||
26945 | } | |
26946 | } | |
26947 | ||
26948 | ||
26949 | ||
26950 | static inline | |
26951 | void | |
26952 | rec_set_deleted_flag( | |
26953 | ||
26954 | rec_t* rec, | |
26955 | ulint comp, | |
26956 | ulint flag) | |
26957 | { | |
26958 | ulint val; | |
26959 | ||
26960 | val = rec_get_info_bits(rec, comp); | |
26961 | ||
26962 | if (flag) { | |
26963 | val |= 0x20UL; | |
26964 | } else { | |
26965 | val &= ~0x20UL; | |
26966 | } | |
26967 | ||
26968 | rec_set_info_bits(rec, comp, val); | |
26969 | } | |
26970 | ||
26971 | ||
26972 | ||
26973 | static inline | |
26974 | ulint | |
26975 | rec_get_node_ptr_flag( | |
26976 | ||
26977 | ||
26978 | rec_t* rec) | |
26979 | { | |
26980 | return(1 == rec_get_status(rec)); | |
26981 | } | |
26982 | ||
26983 | ||
26984 | ||
26985 | ||
26986 | static inline | |
26987 | ulint | |
26988 | rec_get_heap_no( | |
26989 | ||
26990 | ||
26991 | rec_t* rec, | |
26992 | ulint comp) | |
26993 | { | |
26994 | ulint ret; | |
26995 | ||
26996 | ; | |
26997 | ||
26998 | ret = rec_get_bit_field_2(rec, | |
26999 | comp ? 4 : 5, | |
27000 | 0xFFF8UL, 3); | |
27001 | ; | |
27002 | ||
27003 | return(ret); | |
27004 | } | |
27005 | ||
27006 | ||
27007 | ||
27008 | static inline | |
27009 | void | |
27010 | rec_set_heap_no( | |
27011 | ||
27012 | rec_t* rec, | |
27013 | ulint comp, | |
27014 | ulint heap_no) | |
27015 | { | |
27016 | ; | |
27017 | ||
27018 | rec_set_bit_field_2(rec, heap_no, | |
27019 | comp ? 4 : 5, | |
27020 | 0xFFF8UL, 3); | |
27021 | } | |
27022 | ||
27023 | ||
27024 | ||
27025 | ||
27026 | static inline | |
27027 | ulint | |
27028 | rec_get_1byte_offs_flag( | |
27029 | ||
27030 | ||
27031 | rec_t* rec) | |
27032 | { | |
27033 | ||
27034 | ||
27035 | ||
27036 | ||
27037 | return(rec_get_bit_field_1(rec, 3, 0x1UL, | |
27038 | 0)); | |
27039 | } | |
27040 | ||
27041 | ||
27042 | ||
27043 | static inline | |
27044 | void | |
27045 | rec_set_1byte_offs_flag( | |
27046 | ||
27047 | rec_t* rec, | |
27048 | ulint flag) | |
27049 | { | |
27050 | ||
27051 | ||
27052 | ||
27053 | ; | |
27054 | ||
27055 | rec_set_bit_field_1(rec, flag, 3, 0x1UL, | |
27056 | 0); | |
27057 | } | |
27058 | ||
27059 | ||
27060 | ||
27061 | ||
27062 | ||
27063 | static inline | |
27064 | ulint | |
27065 | rec_1_get_field_end_info( | |
27066 | ||
27067 | ||
27068 | ||
27069 | rec_t* rec, | |
27070 | ulint n) | |
27071 | { | |
27072 | ; | |
27073 | ; | |
27074 | ||
27075 | return(mach_read_from_1(rec - (6 + n + 1))); | |
27076 | } | |
27077 | ||
27078 | ||
27079 | ||
27080 | ||
27081 | ||
27082 | static inline | |
27083 | ulint | |
27084 | rec_2_get_field_end_info( | |
27085 | ||
27086 | ||
27087 | ||
27088 | rec_t* rec, | |
27089 | ulint n) | |
27090 | { | |
27091 | ; | |
27092 | ; | |
27093 | ||
27094 | return(mach_read_from_2(rec - (6 + 2 * n + 2))); | |
27095 | } | |
27096 | # 764 "./include/rem0rec.ic" | |
27097 | static inline | |
27098 | ulint | |
27099 | rec_offs_get_n_alloc( | |
27100 | ||
27101 | ||
27102 | const ulint* offsets) | |
27103 | { | |
27104 | ulint n_alloc; | |
27105 | ; | |
27106 | n_alloc = offsets[0]; | |
27107 | ; | |
27108 | return(n_alloc); | |
27109 | } | |
27110 | ||
27111 | ||
27112 | ||
27113 | ||
27114 | static inline | |
27115 | void | |
27116 | rec_offs_set_n_alloc( | |
27117 | ||
27118 | ulint* offsets, | |
27119 | ulint n_alloc) | |
27120 | { | |
27121 | ; | |
27122 | ; | |
27123 | offsets[0] = n_alloc; | |
27124 | } | |
27125 | ||
27126 | ||
27127 | ||
27128 | static inline | |
27129 | ulint | |
27130 | rec_offs_n_fields( | |
27131 | ||
27132 | ||
27133 | const ulint* offsets) | |
27134 | { | |
27135 | ulint n_fields; | |
27136 | ; | |
27137 | n_fields = offsets[1]; | |
27138 | ; | |
27139 | ; | |
27140 | ; | |
27141 | ||
27142 | return(n_fields); | |
27143 | } | |
27144 | ||
27145 | ||
27146 | ||
27147 | static inline | |
27148 | ulint | |
27149 | rec_offs_validate( | |
27150 | ||
27151 | ||
27152 | rec_t* rec, | |
27153 | dict_index_t* index, | |
27154 | const ulint* offsets) | |
27155 | { | |
27156 | ulint i = rec_offs_n_fields(offsets); | |
27157 | ulint last = ((ulint)(-2)); | |
27158 | ulint comp = *(offsets + 2) & ((ulint) 1 << 31); | |
27159 | ||
27160 | if (rec) { | |
27161 | ; | |
27162 | if (!comp) { | |
27163 | do { if (__builtin_expect(!((ulint)(rec_get_n_fields_old(rec) >= i)), (0))) { ut_dbg_assertion_failed("rec_get_n_fields_old(rec) >= i", "./include/rem0rec.ic", (ulint) 830); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 830); } while (0); } while (0); | |
27164 | } | |
27165 | } | |
27166 | if (index) { | |
27167 | ulint max_n_fields; | |
27168 | ; | |
27169 | max_n_fields = ut_max( | |
27170 | dict_index_get_n_fields(index), | |
27171 | dict_index_get_n_unique_in_tree(index) + 1); | |
27172 | if (comp && rec) { | |
27173 | switch (rec_get_status(rec)) { | |
27174 | case 0: | |
27175 | break; | |
27176 | case 1: | |
27177 | max_n_fields = | |
27178 | dict_index_get_n_unique_in_tree(index) + 1; | |
27179 | break; | |
27180 | case 2: | |
27181 | case 3: | |
27182 | max_n_fields = 1; | |
27183 | break; | |
27184 | default: | |
27185 | do { ut_dbg_assertion_failed(0, "./include/rem0rec.ic", (ulint) 852); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
27186 | } | |
27187 | } | |
27188 | ||
27189 | do { if (__builtin_expect(!((ulint)(!comp || index->n_def)), (0))) { ut_dbg_assertion_failed("!comp || index->n_def", "./include/rem0rec.ic", (ulint) 856); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 856); } while (0); } while (0); | |
27190 | do { if (__builtin_expect(!((ulint)(!index->n_def || i <= max_n_fields)), (0))) { ut_dbg_assertion_failed("!index->n_def || i <= max_n_fields", "./include/rem0rec.ic", (ulint) 857); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 857); } while (0); } while (0); | |
27191 | } | |
27192 | while (i--) { | |
27193 | ulint curr = (offsets + 2)[1 + i] & (((ulint) 1 << 30) - 1); | |
27194 | do { if (__builtin_expect(!((ulint)(curr <= last)), (0))) { ut_dbg_assertion_failed("curr <= last", "./include/rem0rec.ic", (ulint) 861); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 861); } while (0); } while (0); | |
27195 | last = curr; | |
27196 | } | |
27197 | return((1)); | |
27198 | } | |
27199 | ||
27200 | ||
27201 | ||
27202 | static inline | |
27203 | void | |
27204 | rec_offs_make_valid( | |
27205 | ||
27206 | rec_t* rec __attribute__((unused)), | |
27207 | ||
27208 | dict_index_t* index __attribute__((unused)), | |
27209 | ||
27210 | ulint* offsets __attribute__((unused))) | |
27211 | ||
27212 | { | |
27213 | ||
27214 | ||
27215 | ||
27216 | ||
27217 | ||
27218 | } | |
27219 | ||
27220 | ||
27221 | ||
27222 | ||
27223 | static inline | |
27224 | unsigned char* | |
27225 | rec_get_nth_field( | |
27226 | ||
27227 | ||
27228 | rec_t* rec, | |
27229 | const ulint* offsets, | |
27230 | ulint n, | |
27231 | ulint* len) | |
27232 | ||
27233 | { | |
27234 | unsigned char* field; | |
27235 | ulint length; | |
27236 | ; | |
27237 | ; | |
27238 | ; | |
27239 | ; | |
27240 | ||
27241 | if (__builtin_expect(n == 0, (0))) { | |
27242 | field = rec; | |
27243 | } else { | |
27244 | field = rec + ((offsets + 2)[n] & (((ulint) 1 << 30) - 1)); | |
27245 | } | |
27246 | ||
27247 | length = (offsets + 2)[1 + n]; | |
27248 | ||
27249 | if (length & ((ulint) 1 << 31)) { | |
27250 | length = 0xFFFFFFFF; | |
27251 | } else { | |
27252 | length &= (((ulint) 1 << 30) - 1); | |
27253 | length -= field - rec; | |
27254 | } | |
27255 | ||
27256 | *len = length; | |
27257 | return(field); | |
27258 | } | |
27259 | ||
27260 | ||
27261 | ||
27262 | ||
27263 | static inline | |
27264 | ulint | |
27265 | rec_offs_comp( | |
27266 | ||
27267 | ||
27268 | const ulint* offsets) | |
27269 | { | |
27270 | ; | |
27271 | return(*(offsets + 2) & ((ulint) 1 << 31)); | |
27272 | } | |
27273 | ||
27274 | ||
27275 | ||
27276 | static inline | |
27277 | ulint | |
27278 | rec_offs_nth_extern( | |
27279 | ||
27280 | ||
27281 | const ulint* offsets, | |
27282 | ulint n) | |
27283 | { | |
27284 | ; | |
27285 | ; | |
27286 | return(__builtin_expect((offsets + 2)[1 + n] & ((ulint) 1 << 30), (0))); | |
27287 | ||
27288 | } | |
27289 | ||
27290 | ||
27291 | ||
27292 | static inline | |
27293 | ulint | |
27294 | rec_offs_nth_sql_null( | |
27295 | ||
27296 | ||
27297 | const ulint* offsets, | |
27298 | ulint n) | |
27299 | { | |
27300 | ; | |
27301 | ; | |
27302 | return(__builtin_expect((offsets + 2)[1 + n] & ((ulint) 1 << 31), (0))); | |
27303 | ||
27304 | } | |
27305 | ||
27306 | ||
27307 | ||
27308 | static inline | |
27309 | ulint | |
27310 | rec_offs_nth_size( | |
27311 | ||
27312 | ||
27313 | const ulint* offsets, | |
27314 | ulint n) | |
27315 | { | |
27316 | ; | |
27317 | ; | |
27318 | if (!n) { | |
27319 | return((offsets + 2)[1 + n] & (((ulint) 1 << 30) - 1)); | |
27320 | } | |
27321 | return(((offsets + 2)[1 + n] - (offsets + 2)[n]) | |
27322 | & (((ulint) 1 << 30) - 1)); | |
27323 | } | |
27324 | ||
27325 | ||
27326 | ||
27327 | ||
27328 | static inline | |
27329 | ulint | |
27330 | rec_offs_any_extern( | |
27331 | ||
27332 | ||
27333 | const ulint* offsets) | |
27334 | { | |
27335 | ulint i; | |
27336 | for (i = rec_offs_n_fields(offsets); i--; ) { | |
27337 | if (rec_offs_nth_extern(offsets, i)) { | |
27338 | return((1)); | |
27339 | } | |
27340 | } | |
27341 | return((0)); | |
27342 | } | |
27343 | ||
27344 | ||
27345 | ||
27346 | static inline | |
27347 | void | |
27348 | rec_set_nth_field_extern_bit( | |
27349 | ||
27350 | rec_t* rec, | |
27351 | dict_index_t* index, | |
27352 | ulint i, | |
27353 | ulint val, | |
27354 | mtr_t* mtr) | |
27355 | ||
27356 | ||
27357 | { | |
27358 | if (__builtin_expect(index->table->comp, (1))) { | |
27359 | rec_set_nth_field_extern_bit_new(rec, index, i, val, mtr); | |
27360 | } else { | |
27361 | rec_set_nth_field_extern_bit_old(rec, i, val, mtr); | |
27362 | } | |
27363 | } | |
27364 | ||
27365 | ||
27366 | ||
27367 | ||
27368 | ||
27369 | ||
27370 | ||
27371 | static inline | |
27372 | ulint | |
27373 | rec_1_get_prev_field_end_info( | |
27374 | ||
27375 | ||
27376 | ||
27377 | rec_t* rec, | |
27378 | ulint n) | |
27379 | { | |
27380 | ; | |
27381 | ; | |
27382 | ||
27383 | return(mach_read_from_1(rec - (6 + n))); | |
27384 | } | |
27385 | ||
27386 | ||
27387 | ||
27388 | ||
27389 | ||
27390 | static inline | |
27391 | ulint | |
27392 | rec_2_get_prev_field_end_info( | |
27393 | ||
27394 | ||
27395 | ||
27396 | rec_t* rec, | |
27397 | ulint n) | |
27398 | { | |
27399 | ; | |
27400 | ; | |
27401 | ||
27402 | return(mach_read_from_2(rec - (6 + 2 * n))); | |
27403 | } | |
27404 | ||
27405 | ||
27406 | ||
27407 | ||
27408 | static inline | |
27409 | void | |
27410 | rec_1_set_field_end_info( | |
27411 | ||
27412 | rec_t* rec, | |
27413 | ulint n, | |
27414 | ulint info) | |
27415 | { | |
27416 | ; | |
27417 | ; | |
27418 | ||
27419 | mach_write_to_1(rec - (6 + n + 1), info); | |
27420 | } | |
27421 | ||
27422 | ||
27423 | ||
27424 | ||
27425 | static inline | |
27426 | void | |
27427 | rec_2_set_field_end_info( | |
27428 | ||
27429 | rec_t* rec, | |
27430 | ulint n, | |
27431 | ulint info) | |
27432 | { | |
27433 | ; | |
27434 | ; | |
27435 | ||
27436 | mach_write_to_2(rec - (6 + 2 * n + 2), info); | |
27437 | } | |
27438 | ||
27439 | ||
27440 | ||
27441 | ||
27442 | static inline | |
27443 | ulint | |
27444 | rec_1_get_field_start_offs( | |
27445 | ||
27446 | ||
27447 | rec_t* rec, | |
27448 | ulint n) | |
27449 | { | |
27450 | ; | |
27451 | ; | |
27452 | ||
27453 | if (n == 0) { | |
27454 | ||
27455 | return(0); | |
27456 | } | |
27457 | ||
27458 | return(rec_1_get_prev_field_end_info(rec, n) | |
27459 | & ~0x80UL); | |
27460 | } | |
27461 | ||
27462 | ||
27463 | ||
27464 | ||
27465 | static inline | |
27466 | ulint | |
27467 | rec_2_get_field_start_offs( | |
27468 | ||
27469 | ||
27470 | rec_t* rec, | |
27471 | ulint n) | |
27472 | { | |
27473 | ; | |
27474 | ; | |
27475 | ||
27476 | if (n == 0) { | |
27477 | ||
27478 | return(0); | |
27479 | } | |
27480 | ||
27481 | return(rec_2_get_prev_field_end_info(rec, n) | |
27482 | & ~(0x8000UL | 0x4000UL)); | |
27483 | } | |
27484 | ||
27485 | ||
27486 | ||
27487 | ||
27488 | ||
27489 | ||
27490 | static inline | |
27491 | ulint | |
27492 | rec_get_field_start_offs( | |
27493 | ||
27494 | ||
27495 | rec_t* rec, | |
27496 | ulint n) | |
27497 | { | |
27498 | ; | |
27499 | ; | |
27500 | ||
27501 | if (n == 0) { | |
27502 | ||
27503 | return(0); | |
27504 | } | |
27505 | ||
27506 | if (rec_get_1byte_offs_flag(rec)) { | |
27507 | ||
27508 | return(rec_1_get_field_start_offs(rec, n)); | |
27509 | } | |
27510 | ||
27511 | return(rec_2_get_field_start_offs(rec, n)); | |
27512 | } | |
27513 | ||
27514 | ||
27515 | ||
27516 | ||
27517 | ||
27518 | static inline | |
27519 | ulint | |
27520 | rec_get_nth_field_size( | |
27521 | ||
27522 | ||
27523 | rec_t* rec, | |
27524 | ulint n) | |
27525 | { | |
27526 | ulint os; | |
27527 | ulint next_os; | |
27528 | ||
27529 | os = rec_get_field_start_offs(rec, n); | |
27530 | next_os = rec_get_field_start_offs(rec, n + 1); | |
27531 | ||
27532 | ; | |
27533 | ||
27534 | return(next_os - os); | |
27535 | } | |
27536 | ||
27537 | ||
27538 | ||
27539 | ||
27540 | ||
27541 | ||
27542 | ||
27543 | static inline | |
27544 | void | |
27545 | rec_set_nth_field( | |
27546 | ||
27547 | rec_t* rec, | |
27548 | const ulint* offsets, | |
27549 | ulint n, | |
27550 | const void* data, | |
27551 | ||
27552 | ulint len) | |
27553 | { | |
27554 | unsigned char* data2; | |
27555 | ulint len2; | |
27556 | ||
27557 | ; | |
27558 | ; | |
27559 | ||
27560 | if (__builtin_expect(len == 0xFFFFFFFF, (0))) { | |
27561 | if (!rec_offs_nth_sql_null(offsets, n)) { | |
27562 | do { if (__builtin_expect(!((ulint)(!rec_offs_comp(offsets))), (0))) { ut_dbg_assertion_failed("!rec_offs_comp(offsets)", "./include/rem0rec.ic", (ulint) 1229); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 1229); } while (0); } while (0); | |
27563 | rec_set_nth_field_sql_null(rec, n); | |
27564 | } | |
27565 | ||
27566 | return; | |
27567 | } | |
27568 | ||
27569 | data2 = rec_get_nth_field(rec, offsets, n, &len2); | |
27570 | if (len2 == 0xFFFFFFFF) { | |
27571 | ; | |
27572 | rec_set_nth_field_null_bit(rec, n, (0)); | |
27573 | ; | |
27574 | } else { | |
27575 | ; | |
27576 | } | |
27577 | ||
27578 | ut_memcpy(data2, data, len); | |
27579 | } | |
27580 | ||
27581 | ||
27582 | ||
27583 | ||
27584 | ||
27585 | ||
27586 | static inline | |
27587 | ulint | |
27588 | rec_get_data_size_old( | |
27589 | ||
27590 | ||
27591 | rec_t* rec) | |
27592 | { | |
27593 | ; | |
27594 | ||
27595 | return(rec_get_field_start_offs(rec, rec_get_n_fields_old(rec))); | |
27596 | } | |
27597 | ||
27598 | ||
27599 | ||
27600 | static inline | |
27601 | void | |
27602 | rec_offs_set_n_fields( | |
27603 | ||
27604 | ulint* offsets, | |
27605 | ulint n_fields) | |
27606 | { | |
27607 | ; | |
27608 | ; | |
27609 | ; | |
27610 | ; | |
27611 | ||
27612 | offsets[1] = n_fields; | |
27613 | } | |
27614 | ||
27615 | ||
27616 | ||
27617 | ||
27618 | ||
27619 | ||
27620 | static inline | |
27621 | ulint | |
27622 | rec_offs_data_size( | |
27623 | ||
27624 | ||
27625 | const ulint* offsets) | |
27626 | { | |
27627 | ulint size; | |
27628 | ||
27629 | ; | |
27630 | size = (offsets + 2)[rec_offs_n_fields(offsets)] | |
27631 | & (((ulint) 1 << 30) - 1); | |
27632 | ; | |
27633 | return(size); | |
27634 | } | |
27635 | ||
27636 | ||
27637 | ||
27638 | ||
27639 | ||
27640 | static inline | |
27641 | ulint | |
27642 | rec_offs_extra_size( | |
27643 | ||
27644 | ||
27645 | const ulint* offsets) | |
27646 | { | |
27647 | ulint size; | |
27648 | ; | |
27649 | size = *(offsets + 2) & ~((ulint) 1 << 31); | |
27650 | ; | |
27651 | return(size); | |
27652 | } | |
27653 | ||
27654 | ||
27655 | ||
27656 | static inline | |
27657 | ulint | |
27658 | rec_offs_size( | |
27659 | ||
27660 | ||
27661 | const ulint* offsets) | |
27662 | { | |
27663 | return(rec_offs_data_size(offsets) + rec_offs_extra_size(offsets)); | |
27664 | } | |
27665 | ||
27666 | ||
27667 | ||
27668 | static inline | |
27669 | unsigned char* | |
27670 | rec_get_end( | |
27671 | ||
27672 | ||
27673 | rec_t* rec, | |
27674 | const ulint* offsets) | |
27675 | { | |
27676 | return(rec + rec_offs_data_size(offsets)); | |
27677 | } | |
27678 | ||
27679 | ||
27680 | ||
27681 | static inline | |
27682 | unsigned char* | |
27683 | rec_get_start( | |
27684 | ||
27685 | ||
27686 | rec_t* rec, | |
27687 | const ulint* offsets) | |
27688 | { | |
27689 | return(rec - rec_offs_extra_size(offsets)); | |
27690 | } | |
27691 | ||
27692 | ||
27693 | ||
27694 | static inline | |
27695 | rec_t* | |
27696 | rec_copy( | |
27697 | ||
27698 | ||
27699 | void* buf, | |
27700 | const rec_t* rec, | |
27701 | const ulint* offsets) | |
27702 | { | |
27703 | ulint extra_len; | |
27704 | ulint data_len; | |
27705 | ||
27706 | ; | |
27707 | ; | |
27708 | ; | |
27709 | ||
27710 | extra_len = rec_offs_extra_size(offsets); | |
27711 | data_len = rec_offs_data_size(offsets); | |
27712 | ||
27713 | ut_memcpy(buf, rec - extra_len, extra_len + data_len); | |
27714 | ||
27715 | return((unsigned char*)buf + extra_len); | |
27716 | } | |
27717 | ||
27718 | ||
27719 | ||
27720 | ||
27721 | static inline | |
27722 | ulint | |
27723 | rec_get_converted_extra_size( | |
27724 | ||
27725 | ||
27726 | ulint data_size, | |
27727 | ulint n_fields) | |
27728 | { | |
27729 | if (data_size <= 0x7FUL) { | |
27730 | ||
27731 | return(6 + n_fields); | |
27732 | } | |
27733 | ||
27734 | return(6 + 2 * n_fields); | |
27735 | } | |
27736 | ||
27737 | ||
27738 | ||
27739 | ||
27740 | ||
27741 | ulint | |
27742 | rec_get_converted_size_new( | |
27743 | ||
27744 | ||
27745 | dict_index_t* index, | |
27746 | dtuple_t* dtuple); | |
27747 | ||
27748 | ||
27749 | ||
27750 | static inline | |
27751 | ulint | |
27752 | rec_get_converted_size( | |
27753 | ||
27754 | ||
27755 | dict_index_t* index, | |
27756 | dtuple_t* dtuple) | |
27757 | { | |
27758 | ulint data_size; | |
27759 | ulint extra_size; | |
27760 | ||
27761 | ; | |
27762 | ; | |
27763 | ; | |
27764 | ||
27765 | ; | |
27766 | ||
27767 | ||
27768 | ||
27769 | ||
27770 | ||
27771 | ||
27772 | if (__builtin_expect(index->table->comp, (1))) { | |
27773 | return(rec_get_converted_size_new(index, dtuple)); | |
27774 | } | |
27775 | ||
27776 | data_size = dtuple_get_data_size(dtuple); | |
27777 | ||
27778 | extra_size = rec_get_converted_extra_size( | |
27779 | data_size, dtuple_get_n_fields(dtuple)); | |
27780 | ||
27781 | return(data_size + extra_size); | |
27782 | } | |
27783 | ||
27784 | ||
27785 | ||
27786 | ||
27787 | static inline | |
27788 | ulint | |
27789 | rec_fold( | |
27790 | ||
27791 | ||
27792 | rec_t* rec, | |
27793 | const ulint* offsets, | |
27794 | ||
27795 | ulint n_fields, | |
27796 | ||
27797 | ulint n_bytes, | |
27798 | ||
27799 | dulint tree_id) | |
27800 | { | |
27801 | ulint i; | |
27802 | unsigned char* data; | |
27803 | ulint len; | |
27804 | ulint fold; | |
27805 | ulint n_fields_rec; | |
27806 | ||
27807 | ; | |
27808 | ; | |
27809 | ; | |
27810 | ||
27811 | n_fields_rec = rec_offs_n_fields(offsets); | |
27812 | ; | |
27813 | ; | |
27814 | ||
27815 | if (n_fields > n_fields_rec) { | |
27816 | n_fields = n_fields_rec; | |
27817 | } | |
27818 | ||
27819 | if (n_fields == n_fields_rec) { | |
27820 | n_bytes = 0; | |
27821 | } | |
27822 | ||
27823 | fold = ut_fold_dulint(tree_id); | |
27824 | ||
27825 | for (i = 0; i < n_fields; i++) { | |
27826 | data = rec_get_nth_field(rec, offsets, i, &len); | |
27827 | ||
27828 | if (len != 0xFFFFFFFF) { | |
27829 | fold = ut_fold_ulint_pair(fold, | |
27830 | ut_fold_binary(data, len)); | |
27831 | } | |
27832 | } | |
27833 | ||
27834 | if (n_bytes > 0) { | |
27835 | data = rec_get_nth_field(rec, offsets, i, &len); | |
27836 | ||
27837 | if (len != 0xFFFFFFFF) { | |
27838 | if (len > n_bytes) { | |
27839 | len = n_bytes; | |
27840 | } | |
27841 | ||
27842 | fold = ut_fold_ulint_pair(fold, | |
27843 | ut_fold_binary(data, len)); | |
27844 | } | |
27845 | } | |
27846 | ||
27847 | return(fold); | |
27848 | } | |
27849 | # 583 "./include/rem0rec.h" 2 | |
27850 | # 20 "./include/page0page.h" 2 | |
27851 | # 33 "./include/page0page.h" | |
27852 | typedef unsigned char page_header_t; | |
27853 | # 114 "./include/page0page.h" | |
27854 | typedef unsigned char page_dir_slot_t; | |
27855 | typedef page_dir_slot_t page_dir_t; | |
27856 | # 137 "./include/page0page.h" | |
27857 | static inline | |
27858 | dulint | |
27859 | page_get_max_trx_id( | |
27860 | ||
27861 | ib_page_t* page); | |
27862 | ||
27863 | ||
27864 | ||
27865 | void | |
27866 | page_set_max_trx_id( | |
27867 | ||
27868 | ib_page_t* page, | |
27869 | dulint trx_id); | |
27870 | ||
27871 | ||
27872 | ||
27873 | static inline | |
27874 | void | |
27875 | page_update_max_trx_id( | |
27876 | ||
27877 | ib_page_t* page, | |
27878 | dulint trx_id); | |
27879 | ||
27880 | ||
27881 | static inline | |
27882 | ulint | |
27883 | page_header_get_field( | |
27884 | ||
27885 | ib_page_t* page, | |
27886 | ulint field); | |
27887 | ||
27888 | ||
27889 | static inline | |
27890 | void | |
27891 | page_header_set_field( | |
27892 | ||
27893 | ib_page_t* page, | |
27894 | ulint field, | |
27895 | ulint val); | |
27896 | ||
27897 | ||
27898 | static inline | |
27899 | unsigned char* | |
27900 | page_header_get_ptr( | |
27901 | ||
27902 | ||
27903 | ib_page_t* page, | |
27904 | ulint field); | |
27905 | ||
27906 | ||
27907 | static inline | |
27908 | void | |
27909 | page_header_set_ptr( | |
27910 | ||
27911 | ib_page_t* page, | |
27912 | ulint field, | |
27913 | unsigned char* ptr); | |
27914 | ||
27915 | ||
27916 | ||
27917 | static inline | |
27918 | void | |
27919 | page_header_reset_last_insert( | |
27920 | ||
27921 | ib_page_t* page, | |
27922 | mtr_t* mtr); | |
27923 | ||
27924 | ||
27925 | static inline | |
27926 | rec_t* | |
27927 | page_get_infimum_rec( | |
27928 | ||
27929 | ||
27930 | ib_page_t* page); | |
27931 | ||
27932 | ||
27933 | static inline | |
27934 | rec_t* | |
27935 | page_get_supremum_rec( | |
27936 | ||
27937 | ||
27938 | ib_page_t* page); | |
27939 | ||
27940 | ||
27941 | ||
27942 | ||
27943 | rec_t* | |
27944 | page_get_middle_rec( | |
27945 | ||
27946 | ||
27947 | ib_page_t* page); | |
27948 | ||
27949 | ||
27950 | ||
27951 | ||
27952 | ||
27953 | ||
27954 | static inline | |
27955 | int | |
27956 | page_cmp_dtuple_rec_with_match( | |
27957 | ||
27958 | ||
27959 | ||
27960 | ||
27961 | dtuple_t* dtuple, | |
27962 | rec_t* rec, | |
27963 | ||
27964 | ||
27965 | ||
27966 | const ulint* offsets, | |
27967 | ulint* matched_fields, | |
27968 | ||
27969 | ||
27970 | ulint* matched_bytes); | |
27971 | ||
27972 | ||
27973 | ||
27974 | ||
27975 | ||
27976 | ||
27977 | static inline | |
27978 | ulint | |
27979 | page_get_n_recs( | |
27980 | ||
27981 | ||
27982 | ib_page_t* page); | |
27983 | ||
27984 | ulint | |
27985 | page_get_n_recs_noninline( | |
27986 | ||
27987 | ||
27988 | ib_page_t* page); | |
27989 | ||
27990 | ||
27991 | ||
27992 | ||
27993 | ulint | |
27994 | page_rec_get_n_recs_before( | |
27995 | ||
27996 | ||
27997 | rec_t* rec); | |
27998 | ||
27999 | ||
28000 | static inline | |
28001 | ulint | |
28002 | page_dir_get_n_heap( | |
28003 | ||
28004 | ||
28005 | ib_page_t* page); | |
28006 | ||
28007 | ||
28008 | static inline | |
28009 | void | |
28010 | page_dir_set_n_heap( | |
28011 | ||
28012 | ib_page_t* page, | |
28013 | ulint n_heap); | |
28014 | ||
28015 | ||
28016 | static inline | |
28017 | ulint | |
28018 | page_dir_get_n_slots( | |
28019 | ||
28020 | ||
28021 | ib_page_t* page); | |
28022 | ||
28023 | ||
28024 | static inline | |
28025 | void | |
28026 | page_dir_set_n_slots( | |
28027 | ||
28028 | ||
28029 | ib_page_t* page, | |
28030 | ulint n_slots); | |
28031 | ||
28032 | ||
28033 | static inline | |
28034 | page_dir_slot_t* | |
28035 | page_dir_get_nth_slot( | |
28036 | ||
28037 | ||
28038 | ib_page_t* page, | |
28039 | ulint n); | |
28040 | ||
28041 | ||
28042 | static inline | |
28043 | ulint | |
28044 | page_rec_check( | |
28045 | ||
28046 | ||
28047 | rec_t* rec); | |
28048 | ||
28049 | ||
28050 | static inline | |
28051 | rec_t* | |
28052 | page_dir_slot_get_rec( | |
28053 | ||
28054 | ||
28055 | page_dir_slot_t* slot); | |
28056 | ||
28057 | ||
28058 | static inline | |
28059 | void | |
28060 | page_dir_slot_set_rec( | |
28061 | ||
28062 | page_dir_slot_t* slot, | |
28063 | rec_t* rec); | |
28064 | ||
28065 | ||
28066 | static inline | |
28067 | ulint | |
28068 | page_dir_slot_get_n_owned( | |
28069 | ||
28070 | ||
28071 | page_dir_slot_t* slot); | |
28072 | ||
28073 | ||
28074 | static inline | |
28075 | void | |
28076 | page_dir_slot_set_n_owned( | |
28077 | ||
28078 | page_dir_slot_t* slot, | |
28079 | ulint n); | |
28080 | ||
28081 | ||
28082 | ||
28083 | ||
28084 | ||
28085 | ||
28086 | static inline | |
28087 | ulint | |
28088 | page_dir_calc_reserved_space( | |
28089 | ||
28090 | ulint n_recs); | |
28091 | ||
28092 | ||
28093 | ||
28094 | ulint | |
28095 | page_dir_find_owner_slot( | |
28096 | ||
28097 | ||
28098 | rec_t* rec); | |
28099 | ||
28100 | ||
28101 | static inline | |
28102 | ulint | |
28103 | page_is_comp( | |
28104 | ||
28105 | ||
28106 | ||
28107 | ib_page_t* page); | |
28108 | ||
28109 | ||
28110 | static inline | |
28111 | ulint | |
28112 | page_rec_is_comp( | |
28113 | ||
28114 | ||
28115 | const rec_t* rec); | |
28116 | ||
28117 | ||
28118 | static inline | |
28119 | rec_t* | |
28120 | page_rec_get_next( | |
28121 | ||
28122 | ||
28123 | rec_t* rec); | |
28124 | ||
28125 | ||
28126 | ||
28127 | static inline | |
28128 | void | |
28129 | page_rec_set_next( | |
28130 | ||
28131 | rec_t* rec, | |
28132 | ||
28133 | rec_t* next); | |
28134 | ||
28135 | ||
28136 | ||
28137 | static inline | |
28138 | rec_t* | |
28139 | page_rec_get_prev( | |
28140 | ||
28141 | ||
28142 | rec_t* rec); | |
28143 | ||
28144 | ||
28145 | ||
28146 | static inline | |
28147 | ulint | |
28148 | page_rec_is_user_rec_low( | |
28149 | ||
28150 | ||
28151 | ulint offset); | |
28152 | ||
28153 | ||
28154 | static inline | |
28155 | ulint | |
28156 | page_rec_is_supremum_low( | |
28157 | ||
28158 | ||
28159 | ulint offset); | |
28160 | ||
28161 | ||
28162 | static inline | |
28163 | ulint | |
28164 | page_rec_is_infimum_low( | |
28165 | ||
28166 | ||
28167 | ulint offset); | |
28168 | ||
28169 | ||
28170 | ||
28171 | static inline | |
28172 | ulint | |
28173 | page_rec_is_user_rec( | |
28174 | ||
28175 | ||
28176 | const rec_t* rec); | |
28177 | ||
28178 | ||
28179 | static inline | |
28180 | ulint | |
28181 | page_rec_is_supremum( | |
28182 | ||
28183 | ||
28184 | const rec_t* rec); | |
28185 | ||
28186 | ||
28187 | static inline | |
28188 | ulint | |
28189 | page_rec_is_infimum( | |
28190 | ||
28191 | ||
28192 | const rec_t* rec); | |
28193 | ||
28194 | ||
28195 | static inline | |
28196 | rec_t* | |
28197 | page_rec_find_owner_rec( | |
28198 | ||
28199 | ||
28200 | rec_t* rec); | |
28201 | ||
28202 | ||
28203 | ||
28204 | ||
28205 | ||
28206 | void | |
28207 | page_rec_write_index_page_no( | |
28208 | ||
28209 | rec_t* rec, | |
28210 | ulint i, | |
28211 | ulint page_no, | |
28212 | mtr_t* mtr); | |
28213 | ||
28214 | ||
28215 | ||
28216 | static inline | |
28217 | ulint | |
28218 | page_get_max_insert_size( | |
28219 | ||
28220 | ||
28221 | ib_page_t* page, | |
28222 | ulint n_recs); | |
28223 | ||
28224 | ||
28225 | ||
28226 | static inline | |
28227 | ulint | |
28228 | page_get_max_insert_size_after_reorganize( | |
28229 | ||
28230 | ||
28231 | ib_page_t* page, | |
28232 | ulint n_recs); | |
28233 | ||
28234 | ||
28235 | static inline | |
28236 | ulint | |
28237 | page_get_free_space_of_empty( | |
28238 | ||
28239 | ||
28240 | ulint comp) | |
28241 | __attribute__((const)); | |
28242 | ||
28243 | ||
28244 | ||
28245 | static inline | |
28246 | ulint | |
28247 | page_get_data_size( | |
28248 | ||
28249 | ||
28250 | ib_page_t* page); | |
28251 | ||
28252 | ulint | |
28253 | page_get_data_size_noninline( | |
28254 | ||
28255 | ||
28256 | ib_page_t* page); | |
28257 | ||
28258 | ||
28259 | ||
28260 | unsigned char* | |
28261 | page_mem_alloc( | |
28262 | ||
28263 | ||
28264 | ||
28265 | ib_page_t* page, | |
28266 | ulint need, | |
28267 | dict_index_t* index, | |
28268 | ulint* heap_no); | |
28269 | ||
28270 | ||
28271 | ||
28272 | ||
28273 | static inline | |
28274 | void | |
28275 | page_mem_free( | |
28276 | ||
28277 | ib_page_t* page, | |
28278 | rec_t* rec, | |
28279 | const ulint* offsets); | |
28280 | ||
28281 | ||
28282 | ||
28283 | ib_page_t* | |
28284 | page_create( | |
28285 | ||
28286 | ||
28287 | buf_frame_t* frame, | |
28288 | ||
28289 | mtr_t* mtr, | |
28290 | ulint comp); | |
28291 | ||
28292 | ||
28293 | ||
28294 | ||
28295 | void | |
28296 | page_copy_rec_list_end_no_locks( | |
28297 | ||
28298 | ib_page_t* new_page, | |
28299 | ib_page_t* page, | |
28300 | rec_t* rec, | |
28301 | dict_index_t* index, | |
28302 | mtr_t* mtr); | |
28303 | ||
28304 | ||
28305 | ||
28306 | ||
28307 | ||
28308 | void | |
28309 | page_copy_rec_list_end( | |
28310 | ||
28311 | ib_page_t* new_page, | |
28312 | ib_page_t* page, | |
28313 | rec_t* rec, | |
28314 | dict_index_t* index, | |
28315 | mtr_t* mtr); | |
28316 | ||
28317 | ||
28318 | ||
28319 | ||
28320 | ||
28321 | void | |
28322 | page_copy_rec_list_start( | |
28323 | ||
28324 | ib_page_t* new_page, | |
28325 | ib_page_t* page, | |
28326 | rec_t* rec, | |
28327 | dict_index_t* index, | |
28328 | mtr_t* mtr); | |
28329 | ||
28330 | ||
28331 | ||
28332 | ||
28333 | void | |
28334 | page_delete_rec_list_end( | |
28335 | ||
28336 | ib_page_t* page, | |
28337 | rec_t* rec, | |
28338 | dict_index_t* index, | |
28339 | ulint n_recs, | |
28340 | ||
28341 | ulint size, | |
28342 | ||
28343 | ||
28344 | mtr_t* mtr); | |
28345 | ||
28346 | ||
28347 | ||
28348 | ||
28349 | void | |
28350 | page_delete_rec_list_start( | |
28351 | ||
28352 | ib_page_t* page, | |
28353 | rec_t* rec, | |
28354 | dict_index_t* index, | |
28355 | mtr_t* mtr); | |
28356 | ||
28357 | ||
28358 | ||
28359 | ||
28360 | void | |
28361 | page_move_rec_list_end( | |
28362 | ||
28363 | ib_page_t* new_page, | |
28364 | ib_page_t* page, | |
28365 | rec_t* split_rec, | |
28366 | dict_index_t* index, | |
28367 | mtr_t* mtr); | |
28368 | ||
28369 | ||
28370 | ||
28371 | ||
28372 | void | |
28373 | page_move_rec_list_start( | |
28374 | ||
28375 | ib_page_t* new_page, | |
28376 | ib_page_t* page, | |
28377 | rec_t* split_rec, | |
28378 | dict_index_t* index, | |
28379 | mtr_t* mtr); | |
28380 | ||
28381 | ||
28382 | ||
28383 | void | |
28384 | page_dir_split_slot( | |
28385 | ||
28386 | ib_page_t* page, | |
28387 | ulint slot_no); | |
28388 | ||
28389 | ||
28390 | ||
28391 | ||
28392 | ||
28393 | ||
28394 | void | |
28395 | page_dir_balance_slot( | |
28396 | ||
28397 | ib_page_t* page, | |
28398 | ulint slot_no); | |
28399 | ||
28400 | ||
28401 | ||
28402 | unsigned char* | |
28403 | page_parse_delete_rec_list( | |
28404 | ||
28405 | ||
28406 | unsigned char type, | |
28407 | ||
28408 | ||
28409 | ||
28410 | unsigned char* ptr, | |
28411 | unsigned char* end_ptr, | |
28412 | dict_index_t* index, | |
28413 | ib_page_t* page, | |
28414 | mtr_t* mtr); | |
28415 | ||
28416 | ||
28417 | ||
28418 | unsigned char* | |
28419 | page_parse_create( | |
28420 | ||
28421 | ||
28422 | unsigned char* ptr, | |
28423 | unsigned char* end_ptr, | |
28424 | ulint comp, | |
28425 | ib_page_t* page, | |
28426 | mtr_t* mtr); | |
28427 | ||
28428 | ||
28429 | ||
28430 | ||
28431 | void | |
28432 | page_rec_print( | |
28433 | ||
28434 | rec_t* rec, | |
28435 | const ulint* offsets); | |
28436 | ||
28437 | ||
28438 | ||
28439 | ||
28440 | void | |
28441 | page_dir_print( | |
28442 | ||
28443 | ib_page_t* page, | |
28444 | ulint pr_n); | |
28445 | ||
28446 | ||
28447 | ||
28448 | ||
28449 | void | |
28450 | page_print_list( | |
28451 | ||
28452 | ib_page_t* page, | |
28453 | dict_index_t* index, | |
28454 | ulint pr_n); | |
28455 | ||
28456 | ||
28457 | ||
28458 | void | |
28459 | page_header_print( | |
28460 | ||
28461 | ib_page_t* page); | |
28462 | ||
28463 | ||
28464 | ||
28465 | ||
28466 | void | |
28467 | page_print( | |
28468 | ||
28469 | ib_page_t* page, | |
28470 | dict_index_t* index, | |
28471 | ulint dn, | |
28472 | ||
28473 | ulint rn); | |
28474 | ||
28475 | ||
28476 | ||
28477 | ||
28478 | ||
28479 | ||
28480 | ulint | |
28481 | page_rec_validate( | |
28482 | ||
28483 | ||
28484 | rec_t* rec, | |
28485 | const ulint* offsets); | |
28486 | ||
28487 | ||
28488 | ||
28489 | ||
28490 | ||
28491 | void | |
28492 | page_check_dir( | |
28493 | ||
28494 | ib_page_t* page); | |
28495 | ||
28496 | ||
28497 | ||
28498 | ||
28499 | ||
28500 | ulint | |
28501 | page_simple_validate( | |
28502 | ||
28503 | ||
28504 | ib_page_t* page); | |
28505 | ||
28506 | ||
28507 | ||
28508 | ulint | |
28509 | page_validate( | |
28510 | ||
28511 | ||
28512 | ib_page_t* page, | |
28513 | dict_index_t* index); | |
28514 | ||
28515 | ||
28516 | ||
28517 | ||
28518 | rec_t* | |
28519 | page_find_rec_with_heap_no( | |
28520 | ||
28521 | ||
28522 | ib_page_t* page, | |
28523 | ulint heap_no); | |
28524 | ||
28525 | ||
28526 | ||
28527 | ||
28528 | ||
28529 | ||
28530 | ||
28531 | # 1 "./include/page0page.ic" 1 | |
28532 | # 10 "./include/page0page.ic" | |
28533 | # 1 "./include/rem0cmp.h" 1 | |
28534 | # 21 "./include/rem0cmp.h" | |
28535 | ulint | |
28536 | cmp_types_are_equal( | |
28537 | ||
28538 | ||
28539 | ||
28540 | dtype_t* type1, | |
28541 | dtype_t* type2, | |
28542 | ulint check_charsets); | |
28543 | ||
28544 | ||
28545 | ||
28546 | static inline | |
28547 | int | |
28548 | cmp_data_data( | |
28549 | ||
28550 | ||
28551 | ||
28552 | dtype_t* cur_type, | |
28553 | unsigned char* data1, | |
28554 | ||
28555 | ulint len1, | |
28556 | unsigned char* data2, | |
28557 | ||
28558 | ulint len2); | |
28559 | ||
28560 | ||
28561 | ||
28562 | ||
28563 | int | |
28564 | cmp_data_data_slow( | |
28565 | ||
28566 | ||
28567 | ||
28568 | dtype_t* cur_type, | |
28569 | unsigned char* data1, | |
28570 | ||
28571 | ulint len1, | |
28572 | unsigned char* data2, | |
28573 | ||
28574 | ulint len2); | |
28575 | ||
28576 | ||
28577 | ||
28578 | static inline | |
28579 | int | |
28580 | cmp_dfield_dfield( | |
28581 | ||
28582 | ||
28583 | ||
28584 | dfield_t* dfield1, | |
28585 | dfield_t* dfield2); | |
28586 | # 81 "./include/rem0cmp.h" | |
28587 | int | |
28588 | cmp_dtuple_rec_with_match( | |
28589 | ||
28590 | ||
28591 | ||
28592 | ||
28593 | ||
28594 | ||
28595 | dtuple_t* dtuple, | |
28596 | rec_t* rec, | |
28597 | ||
28598 | ||
28599 | ||
28600 | const ulint* offsets, | |
28601 | ulint* matched_fields, | |
28602 | ||
28603 | ||
28604 | ulint* matched_bytes); | |
28605 | ||
28606 | ||
28607 | ||
28608 | ||
28609 | ||
28610 | ||
28611 | int | |
28612 | cmp_dtuple_rec( | |
28613 | ||
28614 | ||
28615 | ||
28616 | ||
28617 | dtuple_t* dtuple, | |
28618 | rec_t* rec, | |
28619 | const ulint* offsets); | |
28620 | ||
28621 | ||
28622 | ||
28623 | ||
28624 | ulint | |
28625 | cmp_dtuple_is_prefix_of_rec( | |
28626 | ||
28627 | ||
28628 | dtuple_t* dtuple, | |
28629 | rec_t* rec, | |
28630 | const ulint* offsets); | |
28631 | ||
28632 | ||
28633 | ||
28634 | ||
28635 | ||
28636 | int | |
28637 | cmp_rec_rec_with_match( | |
28638 | ||
28639 | ||
28640 | ||
28641 | ||
28642 | rec_t* rec1, | |
28643 | rec_t* rec2, | |
28644 | const ulint* offsets1, | |
28645 | const ulint* offsets2, | |
28646 | dict_index_t* index, | |
28647 | ulint* matched_fields, | |
28648 | ||
28649 | ||
28650 | ||
28651 | ulint* matched_bytes); | |
28652 | ||
28653 | ||
28654 | ||
28655 | ||
28656 | ||
28657 | ||
28658 | static inline | |
28659 | int | |
28660 | cmp_rec_rec( | |
28661 | ||
28662 | ||
28663 | ||
28664 | ||
28665 | rec_t* rec1, | |
28666 | rec_t* rec2, | |
28667 | const ulint* offsets1, | |
28668 | const ulint* offsets2, | |
28669 | dict_index_t* index); | |
28670 | ||
28671 | ||
28672 | ||
28673 | # 1 "./include/rem0cmp.ic" 1 | |
28674 | # 12 "./include/rem0cmp.ic" | |
28675 | static inline | |
28676 | int | |
28677 | cmp_data_data( | |
28678 | ||
28679 | ||
28680 | ||
28681 | dtype_t* cur_type, | |
28682 | unsigned char* data1, | |
28683 | ||
28684 | ulint len1, | |
28685 | unsigned char* data2, | |
28686 | ||
28687 | ulint len2) | |
28688 | { | |
28689 | return(cmp_data_data_slow(cur_type, data1, len1, data2, len2)); | |
28690 | } | |
28691 | ||
28692 | ||
28693 | ||
28694 | ||
28695 | static inline | |
28696 | int | |
28697 | cmp_dfield_dfield( | |
28698 | ||
28699 | ||
28700 | ||
28701 | dfield_t* dfield1, | |
28702 | dfield_t* dfield2) | |
28703 | { | |
28704 | ; | |
28705 | ||
28706 | return(cmp_data_data(dfield_get_type(dfield1), | |
28707 | dfield_get_data(dfield1), dfield_get_len(dfield1), | |
28708 | dfield_get_data(dfield2), dfield_get_len(dfield2))); | |
28709 | } | |
28710 | ||
28711 | ||
28712 | ||
28713 | ||
28714 | static inline | |
28715 | int | |
28716 | cmp_rec_rec( | |
28717 | ||
28718 | ||
28719 | ||
28720 | ||
28721 | rec_t* rec1, | |
28722 | rec_t* rec2, | |
28723 | const ulint* offsets1, | |
28724 | const ulint* offsets2, | |
28725 | dict_index_t* index) | |
28726 | { | |
28727 | ulint match_f = 0; | |
28728 | ulint match_b = 0; | |
28729 | ||
28730 | return(cmp_rec_rec_with_match(rec1, rec2, offsets1, offsets2, index, | |
28731 | &match_f, &match_b)); | |
28732 | } | |
28733 | # 168 "./include/rem0cmp.h" 2 | |
28734 | # 11 "./include/page0page.ic" 2 | |
28735 | # 20 "./include/page0page.ic" | |
28736 | static inline | |
28737 | dulint | |
28738 | page_get_max_trx_id( | |
28739 | ||
28740 | ib_page_t* page) | |
28741 | { | |
28742 | ; | |
28743 | ||
28744 | return(mach_read_from_8(page + 38 + 18)); | |
28745 | } | |
28746 | ||
28747 | ||
28748 | ||
28749 | ||
28750 | static inline | |
28751 | void | |
28752 | page_update_max_trx_id( | |
28753 | ||
28754 | ib_page_t* page, | |
28755 | dulint trx_id) | |
28756 | { | |
28757 | ; | |
28758 | ||
28759 | if (ut_dulint_cmp(page_get_max_trx_id(page), trx_id) < 0) { | |
28760 | ||
28761 | page_set_max_trx_id(page, trx_id); | |
28762 | } | |
28763 | } | |
28764 | ||
28765 | ||
28766 | ||
28767 | static inline | |
28768 | ulint | |
28769 | page_header_get_field( | |
28770 | ||
28771 | ib_page_t* page, | |
28772 | ulint field) | |
28773 | { | |
28774 | ; | |
28775 | ; | |
28776 | ||
28777 | return(mach_read_from_2(page + 38 + field)); | |
28778 | } | |
28779 | ||
28780 | ||
28781 | ||
28782 | static inline | |
28783 | void | |
28784 | page_header_set_field( | |
28785 | ||
28786 | ib_page_t* page, | |
28787 | ulint field, | |
28788 | ulint val) | |
28789 | { | |
28790 | ; | |
28791 | ; | |
28792 | ; | |
28793 | ; | |
28794 | ||
28795 | mach_write_to_2(page + 38 + field, val); | |
28796 | } | |
28797 | ||
28798 | ||
28799 | ||
28800 | static inline | |
28801 | unsigned char* | |
28802 | page_header_get_ptr( | |
28803 | ||
28804 | ||
28805 | ib_page_t* page, | |
28806 | ulint field) | |
28807 | { | |
28808 | ulint offs; | |
28809 | ||
28810 | ; | |
28811 | ; | |
28812 | ||
28813 | ||
28814 | ||
28815 | offs = page_header_get_field(page, field); | |
28816 | ||
28817 | ; | |
28818 | ||
28819 | if (offs == 0) { | |
28820 | ||
28821 | return(((void *)0)); | |
28822 | } | |
28823 | ||
28824 | return(page + offs); | |
28825 | } | |
28826 | ||
28827 | ||
28828 | ||
28829 | static inline | |
28830 | void | |
28831 | page_header_set_ptr( | |
28832 | ||
28833 | ib_page_t* page, | |
28834 | ulint field, | |
28835 | unsigned char* ptr) | |
28836 | { | |
28837 | ulint offs; | |
28838 | ||
28839 | ; | |
28840 | ; | |
28841 | ||
28842 | ||
28843 | ||
28844 | if (ptr == ((void *)0)) { | |
28845 | offs = 0; | |
28846 | } else { | |
28847 | offs = ptr - page; | |
28848 | } | |
28849 | ||
28850 | ; | |
28851 | ||
28852 | page_header_set_field(page, field, offs); | |
28853 | } | |
28854 | ||
28855 | ||
28856 | ||
28857 | ||
28858 | static inline | |
28859 | void | |
28860 | page_header_reset_last_insert( | |
28861 | ||
28862 | ib_page_t* page, | |
28863 | mtr_t* mtr) | |
28864 | { | |
28865 | ; | |
28866 | ||
28867 | mlog_write_ulint(page + 38 + 10, 0, | |
28868 | ((unsigned char)2), mtr); | |
28869 | } | |
28870 | ||
28871 | ||
28872 | ||
28873 | static inline | |
28874 | ulint | |
28875 | page_is_comp( | |
28876 | ||
28877 | ||
28878 | ||
28879 | ib_page_t* page) | |
28880 | { | |
28881 | return(__builtin_expect(page_header_get_field(page, 4) & 0x8000, 0x8000)); | |
28882 | ||
28883 | } | |
28884 | ||
28885 | ||
28886 | ||
28887 | static inline | |
28888 | ulint | |
28889 | page_rec_is_comp( | |
28890 | ||
28891 | ||
28892 | const rec_t* rec) | |
28893 | { | |
28894 | return(page_is_comp(ut_align_down((rec_t*) rec, (2 * 8192)))); | |
28895 | } | |
28896 | ||
28897 | ||
28898 | ||
28899 | static inline | |
28900 | rec_t* | |
28901 | page_get_infimum_rec( | |
28902 | ||
28903 | ||
28904 | ib_page_t* page) | |
28905 | { | |
28906 | ; | |
28907 | ||
28908 | if (page_is_comp(page)) { | |
28909 | return(page + ((38 + 36 + 2 * 10) + 5)); | |
28910 | } else { | |
28911 | return(page + ((38 + 36 + 2 * 10) + 1 + 6)); | |
28912 | } | |
28913 | } | |
28914 | ||
28915 | ||
28916 | ||
28917 | static inline | |
28918 | rec_t* | |
28919 | page_get_supremum_rec( | |
28920 | ||
28921 | ||
28922 | ib_page_t* page) | |
28923 | { | |
28924 | ; | |
28925 | ||
28926 | if (page_is_comp(page)) { | |
28927 | return(page + ((38 + 36 + 2 * 10) + 2 * 5 + 8)); | |
28928 | } else { | |
28929 | return(page + ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8)); | |
28930 | } | |
28931 | } | |
28932 | ||
28933 | ||
28934 | ||
28935 | static inline | |
28936 | ulint | |
28937 | page_rec_is_user_rec_low( | |
28938 | ||
28939 | ||
28940 | ulint offset) | |
28941 | { | |
28942 | ; | |
28943 | # 245 "./include/page0page.ic" | |
28944 | ; | |
28945 | ||
28946 | return(__builtin_expect(offset != ((38 + 36 + 2 * 10) + 2 * 5 + 8), (1)) | |
28947 | && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 5), (1)) | |
28948 | && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 1 + 6), (1)) | |
28949 | && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (1))); | |
28950 | } | |
28951 | ||
28952 | ||
28953 | ||
28954 | static inline | |
28955 | ulint | |
28956 | page_rec_is_supremum_low( | |
28957 | ||
28958 | ||
28959 | ulint offset) | |
28960 | { | |
28961 | ; | |
28962 | ; | |
28963 | ||
28964 | return(__builtin_expect(offset == ((38 + 36 + 2 * 10) + 2 * 5 + 8), (0)) | |
28965 | || __builtin_expect(offset == ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (0))); | |
28966 | } | |
28967 | ||
28968 | ||
28969 | ||
28970 | static inline | |
28971 | ulint | |
28972 | page_rec_is_infimum_low( | |
28973 | ||
28974 | ||
28975 | ulint offset) | |
28976 | { | |
28977 | ; | |
28978 | ; | |
28979 | ||
28980 | return(__builtin_expect(offset == ((38 + 36 + 2 * 10) + 5), (0)) | |
28981 | || __builtin_expect(offset == ((38 + 36 + 2 * 10) + 1 + 6), (0))); | |
28982 | } | |
28983 | ||
28984 | ||
28985 | ||
28986 | static inline | |
28987 | ulint | |
28988 | page_rec_is_user_rec( | |
28989 | ||
28990 | ||
28991 | const rec_t* rec) | |
28992 | { | |
28993 | return(page_rec_is_user_rec_low( | |
28994 | ut_align_offset(rec, (2 * 8192)))); | |
28995 | } | |
28996 | ||
28997 | ||
28998 | ||
28999 | static inline | |
29000 | ulint | |
29001 | page_rec_is_supremum( | |
29002 | ||
29003 | ||
29004 | const rec_t* rec) | |
29005 | { | |
29006 | return(page_rec_is_supremum_low( | |
29007 | ut_align_offset(rec, (2 * 8192)))); | |
29008 | } | |
29009 | ||
29010 | ||
29011 | ||
29012 | static inline | |
29013 | ulint | |
29014 | page_rec_is_infimum( | |
29015 | ||
29016 | ||
29017 | const rec_t* rec) | |
29018 | { | |
29019 | return(page_rec_is_infimum_low( | |
29020 | ut_align_offset(rec, (2 * 8192)))); | |
29021 | } | |
29022 | ||
29023 | ||
29024 | ||
29025 | ||
29026 | ||
29027 | ||
29028 | ||
29029 | static inline | |
29030 | int | |
29031 | page_cmp_dtuple_rec_with_match( | |
29032 | ||
29033 | ||
29034 | ||
29035 | ||
29036 | dtuple_t* dtuple, | |
29037 | rec_t* rec, | |
29038 | ||
29039 | ||
29040 | ||
29041 | const ulint* offsets, | |
29042 | ulint* matched_fields, | |
29043 | ||
29044 | ||
29045 | ulint* matched_bytes) | |
29046 | ||
29047 | ||
29048 | ||
29049 | { | |
29050 | ulint rec_offset; | |
29051 | ||
29052 | ; | |
29053 | ; | |
29054 | ; | |
29055 | ||
29056 | rec_offset = ut_align_offset(rec, (2 * 8192)); | |
29057 | ||
29058 | if (__builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 5), (0)) | |
29059 | || __builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 1 + 6), (0))) { | |
29060 | return(1); | |
29061 | } | |
29062 | if (__builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 2 * 5 + 8), (0)) | |
29063 | || __builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (0))) { | |
29064 | return(-1); | |
29065 | } | |
29066 | ||
29067 | return(cmp_dtuple_rec_with_match(dtuple, rec, offsets, | |
29068 | matched_fields, | |
29069 | matched_bytes)); | |
29070 | } | |
29071 | ||
29072 | ||
29073 | ||
29074 | ||
29075 | static inline | |
29076 | ulint | |
29077 | page_get_n_recs( | |
29078 | ||
29079 | ||
29080 | ib_page_t* page) | |
29081 | { | |
29082 | return(page_header_get_field(page, 16)); | |
29083 | } | |
29084 | ||
29085 | ||
29086 | ||
29087 | static inline | |
29088 | ulint | |
29089 | page_dir_get_n_slots( | |
29090 | ||
29091 | ||
29092 | ib_page_t* page) | |
29093 | { | |
29094 | return(page_header_get_field(page, 0)); | |
29095 | } | |
29096 | ||
29097 | ||
29098 | static inline | |
29099 | void | |
29100 | page_dir_set_n_slots( | |
29101 | ||
29102 | ||
29103 | ib_page_t* page, | |
29104 | ulint n_slots) | |
29105 | { | |
29106 | page_header_set_field(page, 0, n_slots); | |
29107 | } | |
29108 | ||
29109 | ||
29110 | ||
29111 | static inline | |
29112 | ulint | |
29113 | page_dir_get_n_heap( | |
29114 | ||
29115 | ||
29116 | ib_page_t* page) | |
29117 | { | |
29118 | return(page_header_get_field(page, 4) & 0x7fff); | |
29119 | } | |
29120 | ||
29121 | ||
29122 | ||
29123 | static inline | |
29124 | void | |
29125 | page_dir_set_n_heap( | |
29126 | ||
29127 | ib_page_t* page, | |
29128 | ulint n_heap) | |
29129 | { | |
29130 | ; | |
29131 | ||
29132 | page_header_set_field(page, 4, n_heap | (0x8000 & | |
29133 | page_header_get_field(page, 4))); | |
29134 | } | |
29135 | ||
29136 | ||
29137 | ||
29138 | static inline | |
29139 | page_dir_slot_t* | |
29140 | page_dir_get_nth_slot( | |
29141 | ||
29142 | ||
29143 | ib_page_t* page, | |
29144 | ulint n) | |
29145 | { | |
29146 | ; | |
29147 | ||
29148 | return(page + (2 * 8192) - 8 | |
29149 | - (n + 1) * 2); | |
29150 | } | |
29151 | ||
29152 | ||
29153 | ||
29154 | static inline | |
29155 | ulint | |
29156 | page_rec_check( | |
29157 | ||
29158 | ||
29159 | rec_t* rec) | |
29160 | { | |
29161 | ib_page_t* page; | |
29162 | ||
29163 | do { if (__builtin_expect(!((ulint)(rec)), (0))) { ut_dbg_assertion_failed("rec", "./include/page0page.ic", (ulint) 464); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 464); } while (0); } while (0); | |
29164 | ||
29165 | page = buf_frame_align(rec); | |
29166 | ||
29167 | do { if (__builtin_expect(!((ulint)(rec <= page_header_get_ptr(page, 2))), (0))) { ut_dbg_assertion_failed("rec <= page_header_get_ptr(page, PAGE_HEAP_TOP)", "./include/page0page.ic", (ulint) 468); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 468); } while (0); } while (0); | |
29168 | do { if (__builtin_expect(!((ulint)(rec >= page + (38 + 36 + 2 * 10))), (0))) { ut_dbg_assertion_failed("rec >= page + PAGE_DATA", "./include/page0page.ic", (ulint) 469); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 469); } while (0); } while (0); | |
29169 | ||
29170 | return((1)); | |
29171 | } | |
29172 | ||
29173 | ||
29174 | ||
29175 | static inline | |
29176 | rec_t* | |
29177 | page_dir_slot_get_rec( | |
29178 | ||
29179 | ||
29180 | page_dir_slot_t* slot) | |
29181 | { | |
29182 | return(buf_frame_align(slot) + mach_read_from_2(slot)); | |
29183 | } | |
29184 | ||
29185 | ||
29186 | ||
29187 | static inline | |
29188 | void | |
29189 | page_dir_slot_set_rec( | |
29190 | ||
29191 | page_dir_slot_t* slot, | |
29192 | rec_t* rec) | |
29193 | { | |
29194 | ; | |
29195 | ||
29196 | mach_write_to_2(slot, ut_align_offset(rec, (2 * 8192))); | |
29197 | } | |
29198 | ||
29199 | ||
29200 | ||
29201 | static inline | |
29202 | ulint | |
29203 | page_dir_slot_get_n_owned( | |
29204 | ||
29205 | ||
29206 | page_dir_slot_t* slot) | |
29207 | { | |
29208 | rec_t* rec = page_dir_slot_get_rec(slot); | |
29209 | return(rec_get_n_owned(rec, page_rec_is_comp(rec))); | |
29210 | } | |
29211 | ||
29212 | ||
29213 | ||
29214 | static inline | |
29215 | void | |
29216 | page_dir_slot_set_n_owned( | |
29217 | ||
29218 | page_dir_slot_t* slot, | |
29219 | ulint n) | |
29220 | ||
29221 | { | |
29222 | rec_t* rec = page_dir_slot_get_rec(slot); | |
29223 | rec_set_n_owned(rec, page_rec_is_comp(rec), n); | |
29224 | } | |
29225 | ||
29226 | ||
29227 | ||
29228 | ||
29229 | ||
29230 | static inline | |
29231 | ulint | |
29232 | page_dir_calc_reserved_space( | |
29233 | ||
29234 | ulint n_recs) | |
29235 | { | |
29236 | return((2 * n_recs + 4 - 1) | |
29237 | / 4); | |
29238 | } | |
29239 | ||
29240 | ||
29241 | ||
29242 | static inline | |
29243 | rec_t* | |
29244 | page_rec_get_next( | |
29245 | ||
29246 | ||
29247 | rec_t* rec) | |
29248 | { | |
29249 | ulint offs; | |
29250 | ib_page_t* page; | |
29251 | ||
29252 | ; | |
29253 | ||
29254 | page = ut_align_down(rec, (2 * 8192)); | |
29255 | ||
29256 | offs = rec_get_next_offs(rec, page_is_comp(page)); | |
29257 | ||
29258 | if (__builtin_expect(offs >= (2 * 8192), (0))) { | |
29259 | fprintf(stderr, | |
29260 | "InnoDB: Next record offset is nonsensical %lu in record at offset %lu\n" | |
29261 | "InnoDB: rec address %p, first buffer frame %p\n" | |
29262 | "InnoDB: buffer pool high end %p, buf fix count %lu\n", | |
29263 | (ulong)offs, (ulong)(rec - page), | |
29264 | rec, buf_pool->frame_zero, | |
29265 | buf_pool->high_end, | |
29266 | (ulong)buf_block_align(rec)->buf_fix_count); | |
29267 | buf_page_print(page); | |
29268 | ||
29269 | do { ut_dbg_assertion_failed(0, "./include/page0page.ic", (ulint) 570); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
29270 | } | |
29271 | ||
29272 | if (__builtin_expect(offs == 0, (0))) { | |
29273 | ||
29274 | return(((void *)0)); | |
29275 | } | |
29276 | ||
29277 | return(page + offs); | |
29278 | } | |
29279 | ||
29280 | ||
29281 | ||
29282 | static inline | |
29283 | void | |
29284 | page_rec_set_next( | |
29285 | ||
29286 | rec_t* rec, | |
29287 | rec_t* next) | |
29288 | ||
29289 | { | |
29290 | ib_page_t* page; | |
29291 | ulint offs; | |
29292 | ||
29293 | ; | |
29294 | ; | |
29295 | page = ut_align_down(rec, (2 * 8192)); | |
29296 | ||
29297 | if (next) { | |
29298 | ; | |
29299 | ; | |
29300 | offs = (ulint) (next - page); | |
29301 | } else { | |
29302 | offs = 0; | |
29303 | } | |
29304 | ||
29305 | rec_set_next_offs(rec, page_is_comp(page), offs); | |
29306 | } | |
29307 | ||
29308 | ||
29309 | ||
29310 | static inline | |
29311 | rec_t* | |
29312 | page_rec_get_prev( | |
29313 | ||
29314 | ||
29315 | rec_t* rec) | |
29316 | ||
29317 | { | |
29318 | page_dir_slot_t* slot; | |
29319 | ulint slot_no; | |
29320 | rec_t* rec2; | |
29321 | rec_t* prev_rec = ((void *)0); | |
29322 | ib_page_t* page; | |
29323 | ||
29324 | ; | |
29325 | ||
29326 | page = ut_align_down(rec, (2 * 8192)); | |
29327 | ||
29328 | ; | |
29329 | ||
29330 | slot_no = page_dir_find_owner_slot(rec); | |
29331 | ||
29332 | do { if (__builtin_expect(!((ulint)(slot_no != 0)), (0))) { ut_dbg_assertion_failed("slot_no != 0", "./include/page0page.ic", (ulint) 633); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 633); } while (0); } while (0); | |
29333 | ||
29334 | slot = page_dir_get_nth_slot(page, slot_no - 1); | |
29335 | ||
29336 | rec2 = page_dir_slot_get_rec(slot); | |
29337 | ||
29338 | while (rec != rec2) { | |
29339 | prev_rec = rec2; | |
29340 | rec2 = page_rec_get_next(rec2); | |
29341 | } | |
29342 | ||
29343 | do { if (__builtin_expect(!((ulint)(prev_rec)), (0))) { ut_dbg_assertion_failed("prev_rec", "./include/page0page.ic", (ulint) 644); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 644); } while (0); } while (0); | |
29344 | ||
29345 | return(prev_rec); | |
29346 | } | |
29347 | ||
29348 | ||
29349 | ||
29350 | static inline | |
29351 | rec_t* | |
29352 | page_rec_find_owner_rec( | |
29353 | ||
29354 | ||
29355 | rec_t* rec) | |
29356 | { | |
29357 | ; | |
29358 | ||
29359 | if (page_rec_is_comp(rec)) { | |
29360 | while (rec_get_n_owned(rec, (1)) == 0) { | |
29361 | rec = page_rec_get_next(rec); | |
29362 | } | |
29363 | } else { | |
29364 | while (rec_get_n_owned(rec, (0)) == 0) { | |
29365 | rec = page_rec_get_next(rec); | |
29366 | } | |
29367 | } | |
29368 | ||
29369 | return(rec); | |
29370 | } | |
29371 | ||
29372 | ||
29373 | ||
29374 | ||
29375 | static inline | |
29376 | ulint | |
29377 | page_get_data_size( | |
29378 | ||
29379 | ||
29380 | ib_page_t* page) | |
29381 | { | |
29382 | ulint ret; | |
29383 | ||
29384 | ret = (ulint)(page_header_get_field(page, 2) | |
29385 | - (page_is_comp(page) | |
29386 | ? (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8) | |
29387 | : (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9)) | |
29388 | - page_header_get_field(page, 8)); | |
29389 | ||
29390 | ; | |
29391 | ||
29392 | return(ret); | |
29393 | } | |
29394 | ||
29395 | ||
29396 | ||
29397 | static inline | |
29398 | ulint | |
29399 | page_get_free_space_of_empty( | |
29400 | ||
29401 | ||
29402 | ulint comp) | |
29403 | { | |
29404 | if (__builtin_expect(comp, (1))) { | |
29405 | return((ulint)((2 * 8192) | |
29406 | - (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8) | |
29407 | - 8 | |
29408 | - 2 * 2)); | |
29409 | } | |
29410 | ||
29411 | return((ulint)((2 * 8192) | |
29412 | - (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9) | |
29413 | - 8 | |
29414 | - 2 * 2)); | |
29415 | } | |
29416 | # 725 "./include/page0page.ic" | |
29417 | static inline | |
29418 | ulint | |
29419 | page_get_max_insert_size( | |
29420 | ||
29421 | ||
29422 | ib_page_t* page, | |
29423 | ulint n_recs) | |
29424 | { | |
29425 | ulint occupied; | |
29426 | ulint free_space; | |
29427 | ||
29428 | if (page_is_comp(page)) { | |
29429 | occupied = page_header_get_field(page, 2) | |
29430 | - (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8) + page_dir_calc_reserved_space( | |
29431 | n_recs + page_dir_get_n_heap(page) - 2); | |
29432 | ||
29433 | free_space = page_get_free_space_of_empty((1)); | |
29434 | } else { | |
29435 | occupied = page_header_get_field(page, 2) | |
29436 | - (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9) + page_dir_calc_reserved_space( | |
29437 | n_recs + page_dir_get_n_heap(page) - 2); | |
29438 | ||
29439 | free_space = page_get_free_space_of_empty((0)); | |
29440 | } | |
29441 | ||
29442 | ||
29443 | ||
29444 | ||
29445 | ||
29446 | if (occupied > free_space) { | |
29447 | ||
29448 | return(0); | |
29449 | } | |
29450 | ||
29451 | return(free_space - occupied); | |
29452 | } | |
29453 | ||
29454 | ||
29455 | ||
29456 | ||
29457 | static inline | |
29458 | ulint | |
29459 | page_get_max_insert_size_after_reorganize( | |
29460 | ||
29461 | ||
29462 | ib_page_t* page, | |
29463 | ulint n_recs) | |
29464 | { | |
29465 | ulint occupied; | |
29466 | ulint free_space; | |
29467 | ||
29468 | occupied = page_get_data_size(page) | |
29469 | + page_dir_calc_reserved_space(n_recs + page_get_n_recs(page)); | |
29470 | ||
29471 | free_space = page_get_free_space_of_empty(page_is_comp(page)); | |
29472 | ||
29473 | if (occupied > free_space) { | |
29474 | ||
29475 | return(0); | |
29476 | } | |
29477 | ||
29478 | return(free_space - occupied); | |
29479 | } | |
29480 | ||
29481 | ||
29482 | ||
29483 | static inline | |
29484 | void | |
29485 | page_mem_free( | |
29486 | ||
29487 | ib_page_t* page, | |
29488 | rec_t* rec, | |
29489 | const ulint* offsets) | |
29490 | { | |
29491 | rec_t* free; | |
29492 | ulint garbage; | |
29493 | ||
29494 | ; | |
29495 | ; | |
29496 | free = page_header_get_ptr(page, 6); | |
29497 | ||
29498 | page_rec_set_next(rec, free); | |
29499 | page_header_set_ptr(page, 6, rec); | |
29500 | # 819 "./include/page0page.ic" | |
29501 | garbage = page_header_get_field(page, 8); | |
29502 | ||
29503 | page_header_set_field(page, 8, | |
29504 | garbage + rec_offs_size(offsets)); | |
29505 | } | |
29506 | # 812 "./include/page0page.h" 2 | |
29507 | # 16 "./include/page0cur.h" 2 | |
29508 | # 46 "./include/page0cur.h" | |
29509 | static inline | |
29510 | ib_page_t* | |
29511 | page_cur_get_page( | |
29512 | ||
29513 | ||
29514 | page_cur_t* cur); | |
29515 | ||
29516 | ||
29517 | static inline | |
29518 | rec_t* | |
29519 | page_cur_get_rec( | |
29520 | ||
29521 | ||
29522 | page_cur_t* cur); | |
29523 | ||
29524 | ||
29525 | ||
29526 | static inline | |
29527 | void | |
29528 | page_cur_set_before_first( | |
29529 | ||
29530 | ib_page_t* page, | |
29531 | page_cur_t* cur); | |
29532 | ||
29533 | ||
29534 | ||
29535 | static inline | |
29536 | void | |
29537 | page_cur_set_after_last( | |
29538 | ||
29539 | ib_page_t* page, | |
29540 | page_cur_t* cur); | |
29541 | ||
29542 | ||
29543 | static inline | |
29544 | ulint | |
29545 | page_cur_is_before_first( | |
29546 | ||
29547 | ||
29548 | const page_cur_t* cur); | |
29549 | ||
29550 | ||
29551 | static inline | |
29552 | ulint | |
29553 | page_cur_is_after_last( | |
29554 | ||
29555 | ||
29556 | const page_cur_t* cur); | |
29557 | ||
29558 | ||
29559 | static inline | |
29560 | void | |
29561 | page_cur_position( | |
29562 | ||
29563 | rec_t* rec, | |
29564 | page_cur_t* cur); | |
29565 | ||
29566 | ||
29567 | static inline | |
29568 | void | |
29569 | page_cur_invalidate( | |
29570 | ||
29571 | page_cur_t* cur); | |
29572 | ||
29573 | ||
29574 | static inline | |
29575 | void | |
29576 | page_cur_move_to_next( | |
29577 | ||
29578 | page_cur_t* cur); | |
29579 | ||
29580 | ||
29581 | static inline | |
29582 | void | |
29583 | page_cur_move_to_prev( | |
29584 | ||
29585 | page_cur_t* cur); | |
29586 | ||
29587 | ||
29588 | ||
29589 | ||
29590 | static inline | |
29591 | rec_t* | |
29592 | page_cur_tuple_insert( | |
29593 | ||
29594 | ||
29595 | ||
29596 | page_cur_t* cursor, | |
29597 | dtuple_t* tuple, | |
29598 | dict_index_t* index, | |
29599 | mtr_t* mtr); | |
29600 | ||
29601 | ||
29602 | ||
29603 | ||
29604 | static inline | |
29605 | rec_t* | |
29606 | page_cur_rec_insert( | |
29607 | ||
29608 | ||
29609 | ||
29610 | page_cur_t* cursor, | |
29611 | rec_t* rec, | |
29612 | dict_index_t* index, | |
29613 | ulint* offsets, | |
29614 | mtr_t* mtr); | |
29615 | ||
29616 | ||
29617 | ||
29618 | ||
29619 | ||
29620 | ||
29621 | rec_t* | |
29622 | page_cur_insert_rec_low( | |
29623 | ||
29624 | ||
29625 | ||
29626 | page_cur_t* cursor, | |
29627 | dtuple_t* tuple, | |
29628 | dict_index_t* index, | |
29629 | rec_t* rec, | |
29630 | ulint* offsets, | |
29631 | mtr_t* mtr); | |
29632 | ||
29633 | ||
29634 | ||
29635 | ||
29636 | void | |
29637 | page_copy_rec_list_end_to_created_page( | |
29638 | ||
29639 | ib_page_t* new_page, | |
29640 | ib_page_t* page, | |
29641 | rec_t* rec, | |
29642 | dict_index_t* index, | |
29643 | mtr_t* mtr); | |
29644 | ||
29645 | ||
29646 | ||
29647 | ||
29648 | void | |
29649 | page_cur_delete_rec( | |
29650 | ||
29651 | page_cur_t* cursor, | |
29652 | dict_index_t* index, | |
29653 | const ulint* offsets, | |
29654 | mtr_t* mtr); | |
29655 | ||
29656 | ||
29657 | static inline | |
29658 | ulint | |
29659 | page_cur_search( | |
29660 | ||
29661 | ||
29662 | ib_page_t* page, | |
29663 | dict_index_t* index, | |
29664 | dtuple_t* tuple, | |
29665 | ulint mode, | |
29666 | ||
29667 | page_cur_t* cursor); | |
29668 | ||
29669 | ||
29670 | ||
29671 | void | |
29672 | page_cur_search_with_match( | |
29673 | ||
29674 | ib_page_t* page, | |
29675 | dict_index_t* index, | |
29676 | dtuple_t* tuple, | |
29677 | ulint mode, | |
29678 | ||
29679 | ulint* iup_matched_fields, | |
29680 | ||
29681 | ||
29682 | ulint* iup_matched_bytes, | |
29683 | ||
29684 | ||
29685 | ulint* ilow_matched_fields, | |
29686 | ||
29687 | ||
29688 | ulint* ilow_matched_bytes, | |
29689 | ||
29690 | ||
29691 | page_cur_t* cursor); | |
29692 | ||
29693 | ||
29694 | ||
29695 | ||
29696 | void | |
29697 | page_cur_open_on_rnd_user_rec( | |
29698 | ||
29699 | ib_page_t* page, | |
29700 | page_cur_t* cursor); | |
29701 | ||
29702 | ||
29703 | ||
29704 | unsigned char* | |
29705 | page_cur_parse_insert_rec( | |
29706 | ||
29707 | ||
29708 | ulint is_short, | |
29709 | unsigned char* ptr, | |
29710 | unsigned char* end_ptr, | |
29711 | dict_index_t* index, | |
29712 | ib_page_t* page, | |
29713 | mtr_t* mtr); | |
29714 | ||
29715 | ||
29716 | ||
29717 | unsigned char* | |
29718 | page_parse_copy_rec_list_to_created_page( | |
29719 | ||
29720 | ||
29721 | unsigned char* ptr, | |
29722 | unsigned char* end_ptr, | |
29723 | dict_index_t* index, | |
29724 | ib_page_t* page, | |
29725 | mtr_t* mtr); | |
29726 | ||
29727 | ||
29728 | ||
29729 | unsigned char* | |
29730 | page_cur_parse_delete_rec( | |
29731 | ||
29732 | ||
29733 | unsigned char* ptr, | |
29734 | unsigned char* end_ptr, | |
29735 | dict_index_t* index, | |
29736 | ib_page_t* page, | |
29737 | mtr_t* mtr); | |
29738 | ||
29739 | ||
29740 | ||
29741 | struct page_cur_struct{ | |
29742 | unsigned char* rec; | |
29743 | }; | |
29744 | ||
29745 | ||
29746 | # 1 "./include/page0cur.ic" 1 | |
29747 | # 14 "./include/page0cur.ic" | |
29748 | static inline | |
29749 | ib_page_t* | |
29750 | page_cur_get_page( | |
29751 | ||
29752 | ||
29753 | page_cur_t* cur) | |
29754 | { | |
29755 | ; | |
29756 | ||
29757 | return(buf_frame_align(cur->rec)); | |
29758 | } | |
29759 | ||
29760 | ||
29761 | ||
29762 | static inline | |
29763 | rec_t* | |
29764 | page_cur_get_rec( | |
29765 | ||
29766 | ||
29767 | page_cur_t* cur) | |
29768 | { | |
29769 | ; | |
29770 | ||
29771 | return(cur->rec); | |
29772 | } | |
29773 | ||
29774 | ||
29775 | ||
29776 | ||
29777 | static inline | |
29778 | void | |
29779 | page_cur_set_before_first( | |
29780 | ||
29781 | ib_page_t* page, | |
29782 | page_cur_t* cur) | |
29783 | { | |
29784 | cur->rec = page_get_infimum_rec(page); | |
29785 | } | |
29786 | ||
29787 | ||
29788 | ||
29789 | ||
29790 | static inline | |
29791 | void | |
29792 | page_cur_set_after_last( | |
29793 | ||
29794 | ib_page_t* page, | |
29795 | page_cur_t* cur) | |
29796 | { | |
29797 | cur->rec = page_get_supremum_rec(page); | |
29798 | } | |
29799 | ||
29800 | ||
29801 | ||
29802 | static inline | |
29803 | ulint | |
29804 | page_cur_is_before_first( | |
29805 | ||
29806 | ||
29807 | const page_cur_t* cur) | |
29808 | { | |
29809 | return(page_rec_is_infimum(cur->rec)); | |
29810 | } | |
29811 | ||
29812 | ||
29813 | ||
29814 | static inline | |
29815 | ulint | |
29816 | page_cur_is_after_last( | |
29817 | ||
29818 | ||
29819 | const page_cur_t* cur) | |
29820 | { | |
29821 | return(page_rec_is_supremum(cur->rec)); | |
29822 | } | |
29823 | ||
29824 | ||
29825 | ||
29826 | static inline | |
29827 | void | |
29828 | page_cur_position( | |
29829 | ||
29830 | rec_t* rec, | |
29831 | page_cur_t* cur) | |
29832 | { | |
29833 | ; | |
29834 | ||
29835 | cur->rec = rec; | |
29836 | } | |
29837 | ||
29838 | ||
29839 | ||
29840 | static inline | |
29841 | void | |
29842 | page_cur_invalidate( | |
29843 | ||
29844 | page_cur_t* cur) | |
29845 | { | |
29846 | ; | |
29847 | ||
29848 | cur->rec = ((void *)0); | |
29849 | } | |
29850 | ||
29851 | ||
29852 | ||
29853 | static inline | |
29854 | void | |
29855 | page_cur_move_to_next( | |
29856 | ||
29857 | page_cur_t* cur) | |
29858 | { | |
29859 | ; | |
29860 | ||
29861 | cur->rec = page_rec_get_next(cur->rec); | |
29862 | } | |
29863 | ||
29864 | ||
29865 | ||
29866 | static inline | |
29867 | void | |
29868 | page_cur_move_to_prev( | |
29869 | ||
29870 | page_cur_t* cur) | |
29871 | { | |
29872 | ; | |
29873 | ||
29874 | cur->rec = page_rec_get_prev(cur->rec); | |
29875 | } | |
29876 | ||
29877 | ||
29878 | ||
29879 | static inline | |
29880 | ulint | |
29881 | page_cur_search( | |
29882 | ||
29883 | ||
29884 | ib_page_t* page, | |
29885 | dict_index_t* index, | |
29886 | dtuple_t* tuple, | |
29887 | ulint mode, | |
29888 | ||
29889 | page_cur_t* cursor) | |
29890 | { | |
29891 | ulint low_matched_fields = 0; | |
29892 | ulint low_matched_bytes = 0; | |
29893 | ulint up_matched_fields = 0; | |
29894 | ulint up_matched_bytes = 0; | |
29895 | ||
29896 | ; | |
29897 | ||
29898 | page_cur_search_with_match(page, index, tuple, mode, | |
29899 | &up_matched_fields, | |
29900 | &up_matched_bytes, | |
29901 | &low_matched_fields, | |
29902 | &low_matched_bytes, | |
29903 | cursor); | |
29904 | return(low_matched_fields); | |
29905 | } | |
29906 | ||
29907 | ||
29908 | ||
29909 | ||
29910 | ||
29911 | static inline | |
29912 | rec_t* | |
29913 | page_cur_tuple_insert( | |
29914 | ||
29915 | ||
29916 | ||
29917 | page_cur_t* cursor, | |
29918 | dtuple_t* tuple, | |
29919 | dict_index_t* index, | |
29920 | mtr_t* mtr) | |
29921 | { | |
29922 | return(page_cur_insert_rec_low(cursor, tuple, index, ((void *)0), ((void *)0), mtr)); | |
29923 | } | |
29924 | ||
29925 | ||
29926 | ||
29927 | ||
29928 | ||
29929 | static inline | |
29930 | rec_t* | |
29931 | page_cur_rec_insert( | |
29932 | ||
29933 | ||
29934 | ||
29935 | page_cur_t* cursor, | |
29936 | rec_t* rec, | |
29937 | dict_index_t* index, | |
29938 | ulint* offsets, | |
29939 | mtr_t* mtr) | |
29940 | { | |
29941 | return(page_cur_insert_rec_low(cursor, ((void *)0), index, rec, | |
29942 | offsets, mtr)); | |
29943 | } | |
29944 | # 284 "./include/page0cur.h" 2 | |
29945 | # 17 "./include/btr0btr.h" 2 | |
29946 | # 51 "./include/btr0btr.h" | |
29947 | ib_page_t* | |
29948 | btr_root_get( | |
29949 | ||
29950 | ||
29951 | dict_tree_t* tree, | |
29952 | mtr_t* mtr); | |
29953 | ||
29954 | ||
29955 | static inline | |
29956 | ib_page_t* | |
29957 | btr_page_get( | |
29958 | ||
29959 | ulint space, | |
29960 | ulint page_no, | |
29961 | ulint mode, | |
29962 | mtr_t* mtr); | |
29963 | ||
29964 | ||
29965 | static inline | |
29966 | dulint | |
29967 | btr_page_get_index_id( | |
29968 | ||
29969 | ||
29970 | ib_page_t* page); | |
29971 | ||
29972 | dulint | |
29973 | btr_page_get_index_id_noninline( | |
29974 | ||
29975 | ||
29976 | ib_page_t* page); | |
29977 | ||
29978 | ||
29979 | static inline | |
29980 | ulint | |
29981 | btr_page_get_level_low( | |
29982 | ||
29983 | ||
29984 | ib_page_t* page); | |
29985 | ||
29986 | ||
29987 | static inline | |
29988 | ulint | |
29989 | btr_page_get_level( | |
29990 | ||
29991 | ||
29992 | ib_page_t* page, | |
29993 | mtr_t* mtr); | |
29994 | ||
29995 | ||
29996 | static inline | |
29997 | ulint | |
29998 | btr_page_get_next( | |
29999 | ||
30000 | ||
30001 | ib_page_t* page, | |
30002 | mtr_t* mtr); | |
30003 | ||
30004 | ||
30005 | static inline | |
30006 | ulint | |
30007 | btr_page_get_prev( | |
30008 | ||
30009 | ||
30010 | ib_page_t* page, | |
30011 | mtr_t* mtr); | |
30012 | ||
30013 | ||
30014 | ||
30015 | ||
30016 | rec_t* | |
30017 | btr_get_prev_user_rec( | |
30018 | ||
30019 | ||
30020 | rec_t* rec, | |
30021 | mtr_t* mtr); | |
30022 | ||
30023 | ||
30024 | ||
30025 | ||
30026 | ||
30027 | rec_t* | |
30028 | btr_get_next_user_rec( | |
30029 | ||
30030 | ||
30031 | rec_t* rec, | |
30032 | mtr_t* mtr); | |
30033 | ||
30034 | ||
30035 | ||
30036 | static inline | |
30037 | void | |
30038 | btr_leaf_page_release( | |
30039 | ||
30040 | ib_page_t* page, | |
30041 | ulint latch_mode, | |
30042 | mtr_t* mtr); | |
30043 | ||
30044 | ||
30045 | static inline | |
30046 | ulint | |
30047 | btr_node_ptr_get_child_page_no( | |
30048 | ||
30049 | ||
30050 | rec_t* rec, | |
30051 | const ulint* offsets); | |
30052 | ||
30053 | ||
30054 | ||
30055 | ulint | |
30056 | btr_create( | |
30057 | ||
30058 | ||
30059 | ||
30060 | ulint type, | |
30061 | ulint space, | |
30062 | dulint index_id, | |
30063 | ulint comp, | |
30064 | mtr_t* mtr); | |
30065 | ||
30066 | ||
30067 | ||
30068 | ||
30069 | void | |
30070 | btr_free_but_not_root( | |
30071 | ||
30072 | ulint space, | |
30073 | ulint root_page_no); | |
30074 | ||
30075 | ||
30076 | ||
30077 | void | |
30078 | btr_free_root( | |
30079 | ||
30080 | ulint space, | |
30081 | ulint root_page_no, | |
30082 | mtr_t* mtr); | |
30083 | # 195 "./include/btr0btr.h" | |
30084 | rec_t* | |
30085 | btr_root_raise_and_insert( | |
30086 | ||
30087 | ||
30088 | btr_cur_t* cursor, | |
30089 | ||
30090 | ||
30091 | ||
30092 | dtuple_t* tuple, | |
30093 | mtr_t* mtr); | |
30094 | ||
30095 | ||
30096 | ||
30097 | void | |
30098 | btr_page_reorganize( | |
30099 | ||
30100 | ib_page_t* page, | |
30101 | dict_index_t* index, | |
30102 | mtr_t* mtr); | |
30103 | ||
30104 | ||
30105 | ||
30106 | ||
30107 | ulint | |
30108 | btr_page_get_split_rec_to_left( | |
30109 | ||
30110 | ||
30111 | btr_cur_t* cursor, | |
30112 | rec_t** split_rec); | |
30113 | ||
30114 | ||
30115 | ||
30116 | ||
30117 | ||
30118 | ||
30119 | ulint | |
30120 | btr_page_get_split_rec_to_right( | |
30121 | ||
30122 | ||
30123 | btr_cur_t* cursor, | |
30124 | rec_t** split_rec); | |
30125 | # 246 "./include/btr0btr.h" | |
30126 | rec_t* | |
30127 | btr_page_split_and_insert( | |
30128 | ||
30129 | ||
30130 | ||
30131 | ||
30132 | btr_cur_t* cursor, | |
30133 | ||
30134 | ||
30135 | dtuple_t* tuple, | |
30136 | mtr_t* mtr); | |
30137 | ||
30138 | ||
30139 | ||
30140 | ||
30141 | void | |
30142 | btr_insert_on_non_leaf_level( | |
30143 | ||
30144 | dict_tree_t* tree, | |
30145 | ulint level, | |
30146 | dtuple_t* tuple, | |
30147 | mtr_t* mtr); | |
30148 | ||
30149 | ||
30150 | ||
30151 | void | |
30152 | btr_set_min_rec_mark( | |
30153 | ||
30154 | rec_t* rec, | |
30155 | ulint comp, | |
30156 | mtr_t* mtr); | |
30157 | ||
30158 | ||
30159 | ||
30160 | void | |
30161 | btr_node_ptr_delete( | |
30162 | ||
30163 | dict_tree_t* tree, | |
30164 | ib_page_t* page, | |
30165 | mtr_t* mtr); | |
30166 | ||
30167 | ||
30168 | ||
30169 | ulint | |
30170 | btr_check_node_ptr( | |
30171 | ||
30172 | ||
30173 | dict_tree_t* tree, | |
30174 | ib_page_t* page, | |
30175 | mtr_t* mtr); | |
30176 | # 306 "./include/btr0btr.h" | |
30177 | void | |
30178 | btr_compress( | |
30179 | ||
30180 | btr_cur_t* cursor, | |
30181 | ||
30182 | ||
30183 | ||
30184 | mtr_t* mtr); | |
30185 | ||
30186 | ||
30187 | ||
30188 | ||
30189 | ||
30190 | void | |
30191 | btr_discard_page( | |
30192 | ||
30193 | btr_cur_t* cursor, | |
30194 | ||
30195 | mtr_t* mtr); | |
30196 | ||
30197 | ||
30198 | ||
30199 | ||
30200 | unsigned char* | |
30201 | btr_parse_set_min_rec_mark( | |
30202 | ||
30203 | ||
30204 | unsigned char* ptr, | |
30205 | unsigned char* end_ptr, | |
30206 | ulint comp, | |
30207 | ib_page_t* page, | |
30208 | mtr_t* mtr); | |
30209 | ||
30210 | ||
30211 | ||
30212 | unsigned char* | |
30213 | btr_parse_page_reorganize( | |
30214 | ||
30215 | ||
30216 | unsigned char* ptr, | |
30217 | unsigned char* end_ptr, | |
30218 | dict_index_t* index, | |
30219 | ib_page_t* page, | |
30220 | mtr_t* mtr); | |
30221 | ||
30222 | ||
30223 | ||
30224 | ulint | |
30225 | btr_get_size( | |
30226 | ||
30227 | ||
30228 | dict_index_t* index, | |
30229 | ulint flag); | |
30230 | ||
30231 | ||
30232 | ||
30233 | ||
30234 | ib_page_t* | |
30235 | btr_page_alloc( | |
30236 | ||
30237 | ||
30238 | ||
30239 | dict_tree_t* tree, | |
30240 | ulint hint_page_no, | |
30241 | unsigned char file_direction, | |
30242 | ||
30243 | ulint level, | |
30244 | ||
30245 | mtr_t* mtr); | |
30246 | ||
30247 | ||
30248 | ||
30249 | ||
30250 | void | |
30251 | btr_page_free( | |
30252 | ||
30253 | dict_tree_t* tree, | |
30254 | ib_page_t* page, | |
30255 | mtr_t* mtr); | |
30256 | ||
30257 | ||
30258 | ||
30259 | ||
30260 | ||
30261 | void | |
30262 | btr_page_free_low( | |
30263 | ||
30264 | dict_tree_t* tree, | |
30265 | ib_page_t* page, | |
30266 | ulint level, | |
30267 | mtr_t* mtr); | |
30268 | # 419 "./include/btr0btr.h" | |
30269 | ulint | |
30270 | btr_index_rec_validate( | |
30271 | ||
30272 | ||
30273 | rec_t* rec, | |
30274 | dict_index_t* index, | |
30275 | ulint dump_on_error); | |
30276 | ||
30277 | ||
30278 | ||
30279 | ||
30280 | ||
30281 | ulint | |
30282 | btr_validate_tree( | |
30283 | ||
30284 | ||
30285 | dict_tree_t* tree, | |
30286 | trx_t* trx); | |
30287 | ||
30288 | ||
30289 | ||
30290 | ||
30291 | ||
30292 | # 1 "./include/btr0btr.ic" 1 | |
30293 | # 17 "./include/btr0btr.ic" | |
30294 | static inline | |
30295 | ib_page_t* | |
30296 | btr_page_get( | |
30297 | ||
30298 | ulint space, | |
30299 | ulint page_no, | |
30300 | ulint mode, | |
30301 | mtr_t* mtr) | |
30302 | { | |
30303 | ib_page_t* page; | |
30304 | ||
30305 | page = buf_page_get_gen( space, page_no, mode, ((void *)0), 10, "./include/btr0btr.ic", 28, mtr); | |
30306 | ||
30307 | ||
30308 | ||
30309 | ||
30310 | ||
30311 | ||
30312 | return(page); | |
30313 | } | |
30314 | ||
30315 | ||
30316 | ||
30317 | static inline | |
30318 | void | |
30319 | btr_page_set_index_id( | |
30320 | ||
30321 | ib_page_t* page, | |
30322 | dulint id, | |
30323 | mtr_t* mtr) | |
30324 | { | |
30325 | mlog_write_dulint(page + 38 + 28, id, mtr); | |
30326 | } | |
30327 | ||
30328 | ||
30329 | ||
30330 | static inline | |
30331 | dulint | |
30332 | btr_page_get_index_id( | |
30333 | ||
30334 | ||
30335 | ib_page_t* page) | |
30336 | { | |
30337 | return(mach_read_from_8(page + 38 + 28)); | |
30338 | } | |
30339 | ||
30340 | ||
30341 | ||
30342 | static inline | |
30343 | ulint | |
30344 | btr_page_get_level_low( | |
30345 | ||
30346 | ||
30347 | ib_page_t* page) | |
30348 | { | |
30349 | ulint level; | |
30350 | ||
30351 | ; | |
30352 | ||
30353 | level = mach_read_from_2(page + 38 + 26); | |
30354 | ||
30355 | ; | |
30356 | ||
30357 | return(level); | |
30358 | } | |
30359 | ||
30360 | ||
30361 | ||
30362 | static inline | |
30363 | ulint | |
30364 | btr_page_get_level( | |
30365 | ||
30366 | ||
30367 | ib_page_t* page, | |
30368 | mtr_t* mtr __attribute__((unused))) | |
30369 | { | |
30370 | ; | |
30371 | ||
30372 | return(btr_page_get_level_low(page)); | |
30373 | } | |
30374 | ||
30375 | ||
30376 | ||
30377 | static inline | |
30378 | void | |
30379 | btr_page_set_level( | |
30380 | ||
30381 | ib_page_t* page, | |
30382 | ulint level, | |
30383 | mtr_t* mtr) | |
30384 | { | |
30385 | ; | |
30386 | ; | |
30387 | ||
30388 | mlog_write_ulint(page + 38 + 26, level, | |
30389 | ((unsigned char)2), mtr); | |
30390 | } | |
30391 | ||
30392 | ||
30393 | ||
30394 | static inline | |
30395 | ulint | |
30396 | btr_page_get_next( | |
30397 | ||
30398 | ||
30399 | ib_page_t* page, | |
30400 | mtr_t* mtr __attribute__((unused))) | |
30401 | { | |
30402 | ; | |
30403 | ; | |
30404 | ||
30405 | ||
30406 | ||
30407 | ||
30408 | return(mach_read_from_4(page + 12)); | |
30409 | } | |
30410 | ||
30411 | ||
30412 | ||
30413 | static inline | |
30414 | void | |
30415 | btr_page_set_next( | |
30416 | ||
30417 | ib_page_t* page, | |
30418 | ulint next, | |
30419 | mtr_t* mtr) | |
30420 | { | |
30421 | ; | |
30422 | ||
30423 | mlog_write_ulint(page + 12, next, ((unsigned char)4), mtr); | |
30424 | } | |
30425 | ||
30426 | ||
30427 | ||
30428 | static inline | |
30429 | ulint | |
30430 | btr_page_get_prev( | |
30431 | ||
30432 | ||
30433 | ib_page_t* page, | |
30434 | mtr_t* mtr __attribute__((unused))) | |
30435 | { | |
30436 | ; | |
30437 | ||
30438 | return(mach_read_from_4(page + 8)); | |
30439 | } | |
30440 | ||
30441 | ||
30442 | ||
30443 | static inline | |
30444 | void | |
30445 | btr_page_set_prev( | |
30446 | ||
30447 | ib_page_t* page, | |
30448 | ulint prev, | |
30449 | mtr_t* mtr) | |
30450 | { | |
30451 | ; | |
30452 | ||
30453 | mlog_write_ulint(page + 8, prev, ((unsigned char)4), mtr); | |
30454 | } | |
30455 | ||
30456 | ||
30457 | ||
30458 | static inline | |
30459 | ulint | |
30460 | btr_node_ptr_get_child_page_no( | |
30461 | ||
30462 | ||
30463 | rec_t* rec, | |
30464 | const ulint* offsets) | |
30465 | { | |
30466 | unsigned char* field; | |
30467 | ulint len; | |
30468 | ulint page_no; | |
30469 | ||
30470 | ; | |
30471 | ||
30472 | ||
30473 | field = rec_get_nth_field(rec, offsets, | |
30474 | rec_offs_n_fields(offsets) - 1, &len); | |
30475 | ||
30476 | ; | |
30477 | ||
30478 | page_no = mach_read_from_4(field); | |
30479 | ||
30480 | if (__builtin_expect(page_no == 0, (0))) { | |
30481 | fprintf(stderr, | |
30482 | "InnoDB: a nonsensical page number 0 in a node ptr record at offset %lu\n", | |
30483 | (ulong) ut_align_offset(rec, (2 * 8192))); | |
30484 | buf_page_print(buf_frame_align(rec)); | |
30485 | } | |
30486 | ||
30487 | return(page_no); | |
30488 | } | |
30489 | ||
30490 | ||
30491 | ||
30492 | static inline | |
30493 | void | |
30494 | btr_leaf_page_release( | |
30495 | ||
30496 | ib_page_t* page, | |
30497 | ulint latch_mode, | |
30498 | mtr_t* mtr) | |
30499 | { | |
30500 | ; | |
30501 | ||
30502 | if (latch_mode == 1) { | |
30503 | mtr_memo_release(mtr, buf_block_align(page), | |
30504 | 1); | |
30505 | } else { | |
30506 | ; | |
30507 | mtr_memo_release(mtr, buf_block_align(page), | |
30508 | 2); | |
30509 | } | |
30510 | } | |
30511 | # 443 "./include/btr0btr.h" 2 | |
30512 | # 31 "buf/buf0buf.c" 2 | |
30513 | # 1 "./include/fil0fil.h" 1 | |
30514 | # 32 "buf/buf0buf.c" 2 | |
30515 | # 1 "./include/lock0lock.h" 1 | |
30516 | # 26 "./include/lock0lock.h" | |
30517 | extern FILE* lock_latest_err_file; | |
30518 | ||
30519 | ||
30520 | ||
30521 | ||
30522 | ulint | |
30523 | lock_get_size(void); | |
30524 | ||
30525 | ||
30526 | ||
30527 | ||
30528 | ||
30529 | void | |
30530 | lock_sys_create( | |
30531 | ||
30532 | ulint n_cells); | |
30533 | ||
30534 | ||
30535 | ||
30536 | ||
30537 | trx_t* | |
30538 | lock_sec_rec_some_has_impl_off_kernel( | |
30539 | ||
30540 | ||
30541 | ||
30542 | rec_t* rec, | |
30543 | dict_index_t* index, | |
30544 | const ulint* offsets); | |
30545 | ||
30546 | ||
30547 | ||
30548 | static inline | |
30549 | trx_t* | |
30550 | lock_clust_rec_some_has_impl( | |
30551 | ||
30552 | ||
30553 | ||
30554 | rec_t* rec, | |
30555 | dict_index_t* index, | |
30556 | const ulint* offsets); | |
30557 | ||
30558 | ||
30559 | ||
30560 | ||
30561 | ||
30562 | void | |
30563 | lock_rec_inherit_to_gap( | |
30564 | ||
30565 | rec_t* heir, | |
30566 | rec_t* rec); | |
30567 | ||
30568 | ||
30569 | ||
30570 | ||
30571 | ||
30572 | ||
30573 | ||
30574 | void | |
30575 | lock_move_reorganize_page( | |
30576 | ||
30577 | ib_page_t* page, | |
30578 | ib_page_t* new_page); | |
30579 | ||
30580 | ||
30581 | ||
30582 | ||
30583 | void | |
30584 | lock_move_rec_list_end( | |
30585 | ||
30586 | ib_page_t* new_page, | |
30587 | ib_page_t* page, | |
30588 | rec_t* rec); | |
30589 | ||
30590 | ||
30591 | ||
30592 | ||
30593 | ||
30594 | void | |
30595 | lock_move_rec_list_start( | |
30596 | ||
30597 | ib_page_t* new_page, | |
30598 | ib_page_t* page, | |
30599 | rec_t* rec, | |
30600 | ||
30601 | rec_t* old_end); | |
30602 | ||
30603 | ||
30604 | ||
30605 | ||
30606 | void | |
30607 | lock_update_split_right( | |
30608 | ||
30609 | ib_page_t* right_page, | |
30610 | ib_page_t* left_page); | |
30611 | ||
30612 | ||
30613 | ||
30614 | void | |
30615 | lock_update_merge_right( | |
30616 | ||
30617 | rec_t* orig_succ, | |
30618 | ||
30619 | ib_page_t* left_page); | |
30620 | # 138 "./include/lock0lock.h" | |
30621 | void | |
30622 | lock_update_root_raise( | |
30623 | ||
30624 | ib_page_t* new_page, | |
30625 | ib_page_t* root); | |
30626 | ||
30627 | ||
30628 | ||
30629 | ||
30630 | void | |
30631 | lock_update_copy_and_discard( | |
30632 | ||
30633 | ib_page_t* new_page, | |
30634 | ib_page_t* page); | |
30635 | ||
30636 | ||
30637 | ||
30638 | void | |
30639 | lock_update_split_left( | |
30640 | ||
30641 | ib_page_t* right_page, | |
30642 | ib_page_t* left_page); | |
30643 | ||
30644 | ||
30645 | ||
30646 | void | |
30647 | lock_update_merge_left( | |
30648 | ||
30649 | ib_page_t* left_page, | |
30650 | rec_t* orig_pred, | |
30651 | ||
30652 | ib_page_t* right_page); | |
30653 | ||
30654 | ||
30655 | ||
30656 | ||
30657 | ||
30658 | void | |
30659 | lock_rec_reset_and_inherit_gap_locks( | |
30660 | ||
30661 | rec_t* heir, | |
30662 | rec_t* rec); | |
30663 | ||
30664 | ||
30665 | ||
30666 | void | |
30667 | lock_update_discard( | |
30668 | ||
30669 | rec_t* heir, | |
30670 | ib_page_t* page); | |
30671 | ||
30672 | ||
30673 | ||
30674 | void | |
30675 | lock_update_insert( | |
30676 | ||
30677 | rec_t* rec); | |
30678 | ||
30679 | ||
30680 | ||
30681 | void | |
30682 | lock_update_delete( | |
30683 | ||
30684 | rec_t* rec); | |
30685 | # 210 "./include/lock0lock.h" | |
30686 | void | |
30687 | lock_rec_store_on_page_infimum( | |
30688 | ||
30689 | ib_page_t* page, | |
30690 | rec_t* rec); | |
30691 | ||
30692 | ||
30693 | ||
30694 | ||
30695 | ||
30696 | ||
30697 | void | |
30698 | lock_rec_restore_from_page_infimum( | |
30699 | ||
30700 | rec_t* rec, | |
30701 | ib_page_t* page); | |
30702 | ||
30703 | ||
30704 | ||
30705 | ||
30706 | ||
30707 | ulint | |
30708 | lock_rec_expl_exist_on_page( | |
30709 | ||
30710 | ||
30711 | ||
30712 | ulint space, | |
30713 | ulint page_no); | |
30714 | ||
30715 | ||
30716 | ||
30717 | ||
30718 | ||
30719 | ||
30720 | ||
30721 | ulint | |
30722 | lock_rec_insert_check_and_lock( | |
30723 | ||
30724 | ||
30725 | ||
30726 | ulint flags, | |
30727 | ||
30728 | rec_t* rec, | |
30729 | dict_index_t* index, | |
30730 | que_thr_t* thr, | |
30731 | ulint* inherit); | |
30732 | # 266 "./include/lock0lock.h" | |
30733 | ulint | |
30734 | lock_clust_rec_modify_check_and_lock( | |
30735 | ||
30736 | ||
30737 | ||
30738 | ulint flags, | |
30739 | ||
30740 | rec_t* rec, | |
30741 | dict_index_t* index, | |
30742 | const ulint* offsets, | |
30743 | que_thr_t* thr); | |
30744 | ||
30745 | ||
30746 | ||
30747 | ||
30748 | ulint | |
30749 | lock_sec_rec_modify_check_and_lock( | |
30750 | ||
30751 | ||
30752 | ||
30753 | ulint flags, | |
30754 | ||
30755 | rec_t* rec, | |
30756 | ||
30757 | ||
30758 | ||
30759 | dict_index_t* index, | |
30760 | que_thr_t* thr); | |
30761 | ||
30762 | ||
30763 | ||
30764 | ||
30765 | ulint | |
30766 | lock_sec_rec_read_check_and_lock( | |
30767 | ||
30768 | ||
30769 | ||
30770 | ulint flags, | |
30771 | ||
30772 | rec_t* rec, | |
30773 | ||
30774 | ||
30775 | dict_index_t* index, | |
30776 | const ulint* offsets, | |
30777 | ulint mode, | |
30778 | ||
30779 | ||
30780 | ulint gap_mode, | |
30781 | ||
30782 | que_thr_t* thr); | |
30783 | # 324 "./include/lock0lock.h" | |
30784 | ulint | |
30785 | lock_clust_rec_read_check_and_lock( | |
30786 | ||
30787 | ||
30788 | ||
30789 | ulint flags, | |
30790 | ||
30791 | rec_t* rec, | |
30792 | ||
30793 | ||
30794 | dict_index_t* index, | |
30795 | const ulint* offsets, | |
30796 | ulint mode, | |
30797 | ||
30798 | ||
30799 | ulint gap_mode, | |
30800 | ||
30801 | que_thr_t* thr); | |
30802 | # 352 "./include/lock0lock.h" | |
30803 | ulint | |
30804 | lock_clust_rec_read_check_and_lock_alt( | |
30805 | ||
30806 | ||
30807 | ||
30808 | ulint flags, | |
30809 | ||
30810 | rec_t* rec, | |
30811 | ||
30812 | ||
30813 | dict_index_t* index, | |
30814 | ulint mode, | |
30815 | ||
30816 | ||
30817 | ulint gap_mode, | |
30818 | ||
30819 | que_thr_t* thr); | |
30820 | ||
30821 | ||
30822 | ||
30823 | ulint | |
30824 | lock_clust_rec_cons_read_sees( | |
30825 | ||
30826 | ||
30827 | ||
30828 | rec_t* rec, | |
30829 | ||
30830 | dict_index_t* index, | |
30831 | const ulint* offsets, | |
30832 | read_view_t* view); | |
30833 | ||
30834 | ||
30835 | ||
30836 | ulint | |
30837 | lock_sec_rec_cons_read_sees( | |
30838 | # 396 "./include/lock0lock.h" | |
30839 | rec_t* rec, | |
30840 | ||
30841 | dict_index_t* index, | |
30842 | read_view_t* view); | |
30843 | ||
30844 | ||
30845 | ||
30846 | ||
30847 | ulint | |
30848 | lock_table( | |
30849 | ||
30850 | ||
30851 | ||
30852 | ulint flags, | |
30853 | ||
30854 | dict_table_t* table, | |
30855 | ulint mode, | |
30856 | que_thr_t* thr); | |
30857 | ||
30858 | ||
30859 | ||
30860 | ulint | |
30861 | lock_is_on_table( | |
30862 | ||
30863 | ||
30864 | dict_table_t* table); | |
30865 | ||
30866 | ||
30867 | ||
30868 | ||
30869 | ||
30870 | void | |
30871 | lock_rec_unlock( | |
30872 | ||
30873 | trx_t* trx, | |
30874 | ||
30875 | rec_t* rec, | |
30876 | ulint lock_mode); | |
30877 | ||
30878 | ||
30879 | ||
30880 | ||
30881 | void | |
30882 | lock_table_unlock( | |
30883 | ||
30884 | ib_lock_t* lock); | |
30885 | ||
30886 | ||
30887 | ||
30888 | ||
30889 | void | |
30890 | lock_table_unlock_auto_inc( | |
30891 | ||
30892 | trx_t* trx); | |
30893 | ||
30894 | ||
30895 | ||
30896 | ||
30897 | void | |
30898 | lock_release_off_kernel( | |
30899 | ||
30900 | trx_t* trx); | |
30901 | ||
30902 | ||
30903 | ||
30904 | ||
30905 | void | |
30906 | lock_cancel_waiting_and_release( | |
30907 | ||
30908 | ib_lock_t* lock); | |
30909 | ||
30910 | ||
30911 | ||
30912 | ||
30913 | void | |
30914 | lock_reset_all_on_table( | |
30915 | ||
30916 | dict_table_t* table); | |
30917 | ||
30918 | ||
30919 | ||
30920 | static inline | |
30921 | ulint | |
30922 | lock_rec_fold( | |
30923 | ||
30924 | ||
30925 | ulint space, | |
30926 | ulint page_no); | |
30927 | ||
30928 | ||
30929 | ||
30930 | static inline | |
30931 | ulint | |
30932 | lock_rec_hash( | |
30933 | ||
30934 | ||
30935 | ulint space, | |
30936 | ulint page_no); | |
30937 | ||
30938 | ||
30939 | ||
30940 | ||
30941 | dict_table_t* | |
30942 | lock_get_src_table( | |
30943 | ||
30944 | ||
30945 | ||
30946 | ||
30947 | ||
30948 | ||
30949 | trx_t* trx, | |
30950 | dict_table_t* dest, | |
30951 | ulint* mode); | |
30952 | ||
30953 | ||
30954 | ||
30955 | ||
30956 | ||
30957 | ulint | |
30958 | lock_is_table_exclusive( | |
30959 | ||
30960 | ||
30961 | ||
30962 | dict_table_t* table, | |
30963 | trx_t* trx); | |
30964 | ||
30965 | ||
30966 | ||
30967 | ulint | |
30968 | lock_check_trx_id_sanity( | |
30969 | ||
30970 | ||
30971 | dulint trx_id, | |
30972 | rec_t* rec, | |
30973 | dict_index_t* index, | |
30974 | const ulint* offsets, | |
30975 | ulint has_kernel_mutex); | |
30976 | ||
30977 | ||
30978 | ||
30979 | ||
30980 | ulint | |
30981 | lock_rec_queue_validate( | |
30982 | ||
30983 | ||
30984 | rec_t* rec, | |
30985 | dict_index_t* index, | |
30986 | const ulint* offsets); | |
30987 | ||
30988 | ||
30989 | ||
30990 | void | |
30991 | lock_table_print( | |
30992 | ||
30993 | FILE* file, | |
30994 | ib_lock_t* lock); | |
30995 | ||
30996 | ||
30997 | ||
30998 | void | |
30999 | lock_rec_print( | |
31000 | ||
31001 | FILE* file, | |
31002 | ib_lock_t* lock); | |
31003 | ||
31004 | ||
31005 | ||
31006 | void | |
31007 | lock_print_info_summary( | |
31008 | ||
31009 | FILE* file); | |
31010 | ||
31011 | ||
31012 | ||
31013 | void | |
31014 | lock_print_info_all_transactions( | |
31015 | ||
31016 | FILE* file); | |
31017 | ||
31018 | ||
31019 | ||
31020 | ulint | |
31021 | lock_table_queue_validate( | |
31022 | ||
31023 | ||
31024 | dict_table_t* table); | |
31025 | ||
31026 | ||
31027 | ||
31028 | ulint | |
31029 | lock_rec_validate_page( | |
31030 | ||
31031 | ||
31032 | ulint space, | |
31033 | ulint page_no); | |
31034 | ||
31035 | ||
31036 | ||
31037 | ulint | |
31038 | lock_validate(void); | |
31039 | ||
31040 | ||
31041 | ||
31042 | ||
31043 | extern lock_sys_t* lock_sys; | |
31044 | # 659 "./include/lock0lock.h" | |
31045 | typedef struct lock_op_struct lock_op_t; | |
31046 | struct lock_op_struct{ | |
31047 | dict_table_t* table; | |
31048 | ulint mode; | |
31049 | }; | |
31050 | ||
31051 | ||
31052 | ||
31053 | ||
31054 | ||
31055 | struct lock_sys_struct{ | |
31056 | hash_table_t* rec_hash; | |
31057 | }; | |
31058 | ||
31059 | ||
31060 | extern lock_sys_t* lock_sys; | |
31061 | ||
31062 | ||
31063 | ||
31064 | # 1 "./include/lock0lock.ic" 1 | |
31065 | # 12 "./include/lock0lock.ic" | |
31066 | # 1 "./include/row0row.h" 1 | |
31067 | # 24 "./include/row0row.h" | |
31068 | static inline | |
31069 | dulint | |
31070 | row_get_rec_trx_id( | |
31071 | ||
31072 | ||
31073 | rec_t* rec, | |
31074 | dict_index_t* index, | |
31075 | const ulint* offsets); | |
31076 | ||
31077 | ||
31078 | static inline | |
31079 | dulint | |
31080 | row_get_rec_roll_ptr( | |
31081 | ||
31082 | ||
31083 | rec_t* rec, | |
31084 | dict_index_t* index, | |
31085 | const ulint* offsets); | |
31086 | ||
31087 | ||
31088 | static inline | |
31089 | void | |
31090 | row_set_rec_trx_id( | |
31091 | ||
31092 | rec_t* rec, | |
31093 | dict_index_t* index, | |
31094 | const ulint* offsets, | |
31095 | dulint trx_id); | |
31096 | ||
31097 | ||
31098 | static inline | |
31099 | void | |
31100 | row_set_rec_roll_ptr( | |
31101 | ||
31102 | rec_t* rec, | |
31103 | dict_index_t* index, | |
31104 | const ulint* offsets, | |
31105 | dulint roll_ptr); | |
31106 | ||
31107 | ||
31108 | ||
31109 | ||
31110 | dtuple_t* | |
31111 | row_build_index_entry( | |
31112 | ||
31113 | ||
31114 | dtuple_t* row, | |
31115 | ||
31116 | dict_index_t* index, | |
31117 | mem_heap_t* heap); | |
31118 | ||
31119 | ||
31120 | ||
31121 | ||
31122 | ||
31123 | dtuple_t* | |
31124 | row_build( | |
31125 | ||
31126 | ||
31127 | ulint type, | |
31128 | ||
31129 | ||
31130 | ||
31131 | ||
31132 | ||
31133 | dict_index_t* index, | |
31134 | rec_t* rec, | |
31135 | ||
31136 | ||
31137 | ||
31138 | ||
31139 | ||
31140 | ||
31141 | const ulint* offsets, | |
31142 | ||
31143 | ||
31144 | mem_heap_t* heap); | |
31145 | ||
31146 | ||
31147 | ||
31148 | ||
31149 | dtuple_t* | |
31150 | row_rec_to_index_entry( | |
31151 | ||
31152 | ||
31153 | ||
31154 | ulint type, | |
31155 | ||
31156 | ||
31157 | ||
31158 | dict_index_t* index, | |
31159 | rec_t* rec, | |
31160 | ||
31161 | ||
31162 | ||
31163 | ||
31164 | ||
31165 | ||
31166 | mem_heap_t* heap); | |
31167 | ||
31168 | ||
31169 | ||
31170 | ||
31171 | ||
31172 | dtuple_t* | |
31173 | row_build_row_ref( | |
31174 | ||
31175 | ||
31176 | ||
31177 | ulint type, | |
31178 | ||
31179 | ||
31180 | ||
31181 | dict_index_t* index, | |
31182 | rec_t* rec, | |
31183 | ||
31184 | ||
31185 | ||
31186 | ||
31187 | ||
31188 | ||
31189 | mem_heap_t* heap); | |
31190 | ||
31191 | ||
31192 | ||
31193 | ||
31194 | ||
31195 | void | |
31196 | row_build_row_ref_in_tuple( | |
31197 | ||
31198 | dtuple_t* ref, | |
31199 | ||
31200 | dict_index_t* index, | |
31201 | rec_t* rec, | |
31202 | ||
31203 | ||
31204 | ||
31205 | ||
31206 | ||
31207 | trx_t* trx); | |
31208 | ||
31209 | ||
31210 | ||
31211 | ||
31212 | void | |
31213 | row_build_row_ref_from_row( | |
31214 | ||
31215 | dtuple_t* ref, | |
31216 | ||
31217 | ||
31218 | dict_table_t* table, | |
31219 | dtuple_t* row); | |
31220 | ||
31221 | ||
31222 | ||
31223 | ||
31224 | ||
31225 | static inline | |
31226 | void | |
31227 | row_build_row_ref_fast( | |
31228 | ||
31229 | dtuple_t* ref, | |
31230 | ||
31231 | const ulint* map, | |
31232 | ||
31233 | ||
31234 | rec_t* rec, | |
31235 | ||
31236 | ||
31237 | const ulint* offsets); | |
31238 | ||
31239 | ||
31240 | ||
31241 | ||
31242 | ulint | |
31243 | row_search_on_row_ref( | |
31244 | ||
31245 | ||
31246 | btr_pcur_t* pcur, | |
31247 | ||
31248 | ulint mode, | |
31249 | dict_table_t* table, | |
31250 | dtuple_t* ref, | |
31251 | mtr_t* mtr); | |
31252 | ||
31253 | ||
31254 | ||
31255 | ||
31256 | rec_t* | |
31257 | row_get_clust_rec( | |
31258 | ||
31259 | ||
31260 | ulint mode, | |
31261 | rec_t* rec, | |
31262 | dict_index_t* index, | |
31263 | dict_index_t** clust_index, | |
31264 | mtr_t* mtr); | |
31265 | ||
31266 | ||
31267 | ||
31268 | ulint | |
31269 | row_search_index_entry( | |
31270 | ||
31271 | ||
31272 | dict_index_t* index, | |
31273 | dtuple_t* entry, | |
31274 | ulint mode, | |
31275 | btr_pcur_t* pcur, | |
31276 | ||
31277 | mtr_t* mtr); | |
31278 | # 249 "./include/row0row.h" | |
31279 | # 1 "./include/row0row.ic" 1 | |
31280 | # 17 "./include/row0row.ic" | |
31281 | dulint | |
31282 | row_get_rec_sys_field( | |
31283 | ||
31284 | ||
31285 | ulint type, | |
31286 | rec_t* rec, | |
31287 | dict_index_t* index, | |
31288 | const ulint* offsets); | |
31289 | ||
31290 | ||
31291 | ||
31292 | ||
31293 | void | |
31294 | row_set_rec_sys_field( | |
31295 | ||
31296 | ||
31297 | ulint type, | |
31298 | rec_t* rec, | |
31299 | dict_index_t* index, | |
31300 | const ulint* offsets, | |
31301 | dulint val); | |
31302 | ||
31303 | ||
31304 | ||
31305 | static inline | |
31306 | dulint | |
31307 | row_get_rec_trx_id( | |
31308 | ||
31309 | ||
31310 | rec_t* rec, | |
31311 | dict_index_t* index, | |
31312 | const ulint* offsets) | |
31313 | { | |
31314 | ulint offset; | |
31315 | ||
31316 | ; | |
31317 | ; | |
31318 | ||
31319 | offset = index->trx_id_offset; | |
31320 | ||
31321 | if (offset) { | |
31322 | return(trx_read_trx_id(rec + offset)); | |
31323 | } else { | |
31324 | return(row_get_rec_sys_field(1, | |
31325 | rec, index, offsets)); | |
31326 | } | |
31327 | } | |
31328 | ||
31329 | ||
31330 | ||
31331 | static inline | |
31332 | dulint | |
31333 | row_get_rec_roll_ptr( | |
31334 | ||
31335 | ||
31336 | rec_t* rec, | |
31337 | dict_index_t* index, | |
31338 | const ulint* offsets) | |
31339 | { | |
31340 | ulint offset; | |
31341 | ||
31342 | ; | |
31343 | ; | |
31344 | ||
31345 | offset = index->trx_id_offset; | |
31346 | ||
31347 | if (offset) { | |
31348 | return(trx_read_roll_ptr(rec + offset + 6)); | |
31349 | } else { | |
31350 | return(row_get_rec_sys_field(2, | |
31351 | rec, index, offsets)); | |
31352 | } | |
31353 | } | |
31354 | ||
31355 | ||
31356 | ||
31357 | static inline | |
31358 | void | |
31359 | row_set_rec_trx_id( | |
31360 | ||
31361 | rec_t* rec, | |
31362 | dict_index_t* index, | |
31363 | const ulint* offsets, | |
31364 | dulint trx_id) | |
31365 | { | |
31366 | ulint offset; | |
31367 | ||
31368 | ; | |
31369 | ; | |
31370 | ||
31371 | offset = index->trx_id_offset; | |
31372 | ||
31373 | if (offset) { | |
31374 | trx_write_trx_id(rec + offset, trx_id); | |
31375 | } else { | |
31376 | row_set_rec_sys_field(1, | |
31377 | rec, index, offsets, trx_id); | |
31378 | } | |
31379 | } | |
31380 | ||
31381 | ||
31382 | ||
31383 | static inline | |
31384 | void | |
31385 | row_set_rec_roll_ptr( | |
31386 | ||
31387 | rec_t* rec, | |
31388 | dict_index_t* index, | |
31389 | const ulint* offsets, | |
31390 | dulint roll_ptr) | |
31391 | { | |
31392 | ulint offset; | |
31393 | ||
31394 | ; | |
31395 | ; | |
31396 | ||
31397 | offset = index->trx_id_offset; | |
31398 | ||
31399 | if (offset) { | |
31400 | trx_write_roll_ptr(rec + offset + 6, roll_ptr); | |
31401 | } else { | |
31402 | row_set_rec_sys_field(2, | |
31403 | rec, index, offsets, roll_ptr); | |
31404 | } | |
31405 | } | |
31406 | ||
31407 | ||
31408 | ||
31409 | ||
31410 | static inline | |
31411 | void | |
31412 | row_build_row_ref_fast( | |
31413 | ||
31414 | dtuple_t* ref, | |
31415 | ||
31416 | const ulint* map, | |
31417 | ||
31418 | ||
31419 | rec_t* rec, | |
31420 | ||
31421 | ||
31422 | const ulint* offsets) | |
31423 | { | |
31424 | dfield_t* dfield; | |
31425 | unsigned char* field; | |
31426 | ulint len; | |
31427 | ulint ref_len; | |
31428 | ulint field_no; | |
31429 | ulint i; | |
31430 | ||
31431 | ; | |
31432 | ref_len = dtuple_get_n_fields(ref); | |
31433 | ||
31434 | for (i = 0; i < ref_len; i++) { | |
31435 | dfield = dtuple_get_nth_field(ref, i); | |
31436 | ||
31437 | field_no = *(map + i); | |
31438 | ||
31439 | if (field_no != ((ulint)(-1))) { | |
31440 | ||
31441 | field = rec_get_nth_field(rec, offsets, | |
31442 | field_no, &len); | |
31443 | dfield_set_data(dfield, field, len); | |
31444 | } | |
31445 | } | |
31446 | } | |
31447 | # 250 "./include/row0row.h" 2 | |
31448 | # 13 "./include/lock0lock.ic" 2 | |
31449 | ||
31450 | ||
31451 | ||
31452 | ||
31453 | ||
31454 | # 1 "./include/row0vers.h" 1 | |
31455 | # 26 "./include/row0vers.h" | |
31456 | trx_t* | |
31457 | row_vers_impl_x_locked_off_kernel( | |
31458 | ||
31459 | ||
31460 | ||
31461 | ||
31462 | rec_t* rec, | |
31463 | dict_index_t* index, | |
31464 | const ulint* offsets); | |
31465 | ||
31466 | ||
31467 | ||
31468 | ||
31469 | ulint | |
31470 | row_vers_must_preserve_del_marked( | |
31471 | ||
31472 | ||
31473 | dulint trx_id, | |
31474 | mtr_t* mtr); | |
31475 | # 53 "./include/row0vers.h" | |
31476 | ulint | |
31477 | row_vers_old_has_index_entry( | |
31478 | ||
31479 | ||
31480 | ulint also_curr, | |
31481 | ||
31482 | ||
31483 | rec_t* rec, | |
31484 | ||
31485 | mtr_t* mtr, | |
31486 | ||
31487 | dict_index_t* index, | |
31488 | dtuple_t* ientry); | |
31489 | ||
31490 | ||
31491 | ||
31492 | ||
31493 | ||
31494 | ulint | |
31495 | row_vers_build_for_consistent_read( | |
31496 | ||
31497 | ||
31498 | rec_t* rec, | |
31499 | ||
31500 | ||
31501 | ||
31502 | mtr_t* mtr, | |
31503 | ||
31504 | dict_index_t* index, | |
31505 | ulint** offsets, | |
31506 | ||
31507 | read_view_t* view, | |
31508 | mem_heap_t** offset_heap, | |
31509 | ||
31510 | mem_heap_t* in_heap, | |
31511 | ||
31512 | ||
31513 | ||
31514 | rec_t** old_vers); | |
31515 | ||
31516 | ||
31517 | ||
31518 | ||
31519 | ||
31520 | # 1 "./include/row0vers.ic" 1 | |
31521 | # 11 "./include/row0vers.ic" | |
31522 | # 1 "./include/read0read.h" 1 | |
31523 | # 24 "./include/read0read.h" | |
31524 | read_view_t* | |
31525 | read_view_open_now( | |
31526 | ||
31527 | ||
31528 | trx_t* cr_trx, | |
31529 | mem_heap_t* heap); | |
31530 | ||
31531 | ||
31532 | ||
31533 | ||
31534 | read_view_t* | |
31535 | read_view_oldest_copy_or_open_new( | |
31536 | ||
31537 | ||
31538 | trx_t* cr_trx, | |
31539 | mem_heap_t* heap); | |
31540 | ||
31541 | ||
31542 | ||
31543 | void | |
31544 | read_view_close( | |
31545 | ||
31546 | read_view_t* view); | |
31547 | ||
31548 | ||
31549 | ||
31550 | ||
31551 | void | |
31552 | read_view_close_for_mysql( | |
31553 | ||
31554 | trx_t* trx); | |
31555 | ||
31556 | ||
31557 | static inline | |
31558 | ulint | |
31559 | read_view_sees_trx_id( | |
31560 | ||
31561 | ||
31562 | read_view_t* view, | |
31563 | dulint trx_id); | |
31564 | ||
31565 | ||
31566 | ||
31567 | void | |
31568 | read_view_print( | |
31569 | ||
31570 | read_view_t* view); | |
31571 | ||
31572 | ||
31573 | ||
31574 | ||
31575 | ||
31576 | cursor_view_t* | |
31577 | read_cursor_view_create_for_mysql( | |
31578 | ||
31579 | trx_t* cr_trx); | |
31580 | ||
31581 | ||
31582 | ||
31583 | ||
31584 | void | |
31585 | read_cursor_view_close_for_mysql( | |
31586 | ||
31587 | trx_t* trx, | |
31588 | cursor_view_t* curview); | |
31589 | ||
31590 | ||
31591 | ||
31592 | ||
31593 | ||
31594 | void | |
31595 | read_cursor_set_for_mysql( | |
31596 | ||
31597 | trx_t* trx, | |
31598 | cursor_view_t* curview); | |
31599 | ||
31600 | ||
31601 | ||
31602 | ||
31603 | struct read_view_struct{ | |
31604 | ulint can_be_too_old; | |
31605 | ||
31606 | ||
31607 | ||
31608 | dulint low_limit_no; | |
31609 | ||
31610 | ||
31611 | ||
31612 | ||
31613 | dulint low_limit_id; | |
31614 | ||
31615 | dulint up_limit_id; | |
31616 | ||
31617 | ulint n_trx_ids; | |
31618 | dulint* trx_ids; | |
31619 | ||
31620 | ||
31621 | ||
31622 | ||
31623 | ||
31624 | trx_t* creator; | |
31625 | ||
31626 | struct { read_view_t * prev; read_view_t * next; } view_list; | |
31627 | ||
31628 | }; | |
31629 | ||
31630 | ||
31631 | ||
31632 | ||
31633 | ||
31634 | struct cursor_view_struct{ | |
31635 | mem_heap_t* heap; | |
31636 | ||
31637 | read_view_t* read_view; | |
31638 | ||
31639 | ulint n_mysql_tables_in_use; | |
31640 | ||
31641 | ||
31642 | }; | |
31643 | ||
31644 | ||
31645 | # 1 "./include/read0read.ic" 1 | |
31646 | # 11 "./include/read0read.ic" | |
31647 | static inline | |
31648 | dulint | |
31649 | read_view_get_nth_trx_id( | |
31650 | ||
31651 | ||
31652 | read_view_t* view, | |
31653 | ulint n) | |
31654 | { | |
31655 | ; | |
31656 | ||
31657 | return(*(view->trx_ids + n)); | |
31658 | } | |
31659 | ||
31660 | ||
31661 | ||
31662 | static inline | |
31663 | void | |
31664 | read_view_set_nth_trx_id( | |
31665 | ||
31666 | read_view_t* view, | |
31667 | ulint n, | |
31668 | dulint trx_id) | |
31669 | { | |
31670 | ; | |
31671 | ||
31672 | *(view->trx_ids + n) = trx_id; | |
31673 | } | |
31674 | ||
31675 | ||
31676 | ||
31677 | static inline | |
31678 | ulint | |
31679 | read_view_sees_trx_id( | |
31680 | ||
31681 | ||
31682 | read_view_t* view, | |
31683 | dulint trx_id) | |
31684 | { | |
31685 | ulint n_ids; | |
31686 | int cmp; | |
31687 | ulint i; | |
31688 | ||
31689 | if (ut_dulint_cmp(trx_id, view->up_limit_id) < 0) { | |
31690 | ||
31691 | return((1)); | |
31692 | } | |
31693 | ||
31694 | if (ut_dulint_cmp(trx_id, view->low_limit_id) >= 0) { | |
31695 | ||
31696 | return((0)); | |
31697 | } | |
31698 | ||
31699 | ||
31700 | ||
31701 | ||
31702 | ||
31703 | ||
31704 | n_ids = view->n_trx_ids; | |
31705 | ||
31706 | for (i = 0; i < n_ids; i++) { | |
31707 | ||
31708 | cmp = ut_dulint_cmp(trx_id, | |
31709 | read_view_get_nth_trx_id(view, n_ids - i - 1)); | |
31710 | if (cmp <= 0) { | |
31711 | return(cmp < 0); | |
31712 | } | |
31713 | } | |
31714 | ||
31715 | return((1)); | |
31716 | } | |
31717 | # 146 "./include/read0read.h" 2 | |
31718 | # 12 "./include/row0vers.ic" 2 | |
31719 | ||
31720 | # 1 "./include/log0recv.h" 1 | |
31721 | # 16 "./include/log0recv.h" | |
31722 | # 1 "./include/log0log.h" 1 | |
31723 | # 17 "./include/log0log.h" | |
31724 | typedef struct log_struct log_t; | |
31725 | typedef struct log_group_struct log_group_t; | |
31726 | # 38 "./include/log0log.h" | |
31727 | void | |
31728 | log_fsp_current_free_limit_set_and_checkpoint( | |
31729 | ||
31730 | ulint limit); | |
31731 | ||
31732 | ||
31733 | ||
31734 | ulint | |
31735 | log_calc_where_lsn_is( | |
31736 | ||
31737 | ||
31738 | ib_longlong* log_file_offset, | |
31739 | ||
31740 | dulint first_header_lsn, | |
31741 | ||
31742 | dulint lsn, | |
31743 | ||
31744 | ulint n_log_files, | |
31745 | ||
31746 | ib_longlong log_file_size); | |
31747 | ||
31748 | ||
31749 | ||
31750 | ||
31751 | static inline | |
31752 | dulint | |
31753 | log_reserve_and_write_fast( | |
31754 | ||
31755 | ||
31756 | ||
31757 | unsigned char* str, | |
31758 | ulint len, | |
31759 | dulint* start_lsn, | |
31760 | ulint* success); | |
31761 | ||
31762 | ||
31763 | static inline | |
31764 | void | |
31765 | log_release(void); | |
31766 | ||
31767 | ||
31768 | ||
31769 | ||
31770 | ||
31771 | ||
31772 | static inline | |
31773 | void | |
31774 | log_free_check(void); | |
31775 | ||
31776 | ||
31777 | ||
31778 | ||
31779 | ||
31780 | dulint | |
31781 | log_reserve_and_open( | |
31782 | ||
31783 | ||
31784 | ulint len); | |
31785 | ||
31786 | ||
31787 | ||
31788 | ||
31789 | void | |
31790 | log_write_low( | |
31791 | ||
31792 | unsigned char* str, | |
31793 | ulint str_len); | |
31794 | ||
31795 | ||
31796 | ||
31797 | dulint | |
31798 | log_close(void); | |
31799 | ||
31800 | ||
31801 | ||
31802 | ||
31803 | static inline | |
31804 | dulint | |
31805 | log_get_lsn(void); | |
31806 | ||
31807 | ||
31808 | ||
31809 | ||
31810 | ||
31811 | void | |
31812 | log_init(void); | |
31813 | ||
31814 | ||
31815 | ||
31816 | ||
31817 | void | |
31818 | log_group_init( | |
31819 | ||
31820 | ulint id, | |
31821 | ulint n_files, | |
31822 | ulint file_size, | |
31823 | ulint space_id, | |
31824 | ||
31825 | ||
31826 | ulint archive_space_id); | |
31827 | ||
31828 | ||
31829 | ||
31830 | ||
31831 | ||
31832 | ||
31833 | ||
31834 | void | |
31835 | log_io_complete( | |
31836 | ||
31837 | log_group_t* group); | |
31838 | ||
31839 | ||
31840 | ||
31841 | ||
31842 | typedef enum { | |
31843 | LOG_WRITE_FROM_DIRTY_BUFFER, | |
31844 | LOG_WRITE_FROM_BACKGROUND_SYNC, | |
31845 | LOG_WRITE_FROM_BACKGROUND_ASYNC, | |
31846 | LOG_WRITE_FROM_INTERNAL, | |
31847 | LOG_WRITE_FROM_CHECKPOINT_SYNC, | |
31848 | LOG_WRITE_FROM_CHECKPOINT_ASYNC, | |
31849 | LOG_WRITE_FROM_LOG_ARCHIVE, | |
31850 | LOG_WRITE_FROM_COMMIT_SYNC, | |
31851 | LOG_WRITE_FROM_COMMIT_ASYNC, | |
31852 | LOG_WRITE_FROM_NUMBER | |
31853 | } log_sync_type; | |
31854 | ||
31855 | ||
31856 | ||
31857 | ||
31858 | ||
31859 | ||
31860 | void | |
31861 | log_write_up_to( | |
31862 | ||
31863 | dulint lsn, | |
31864 | ||
31865 | ulint wait, | |
31866 | ||
31867 | ulint flush_to_disk, | |
31868 | ||
31869 | log_sync_type caller); | |
31870 | ||
31871 | ||
31872 | ||
31873 | void | |
31874 | log_buffer_flush_to_disk(void); | |
31875 | ||
31876 | ||
31877 | ||
31878 | ||
31879 | ||
31880 | void | |
31881 | log_buffer_flush_maybe_sync(void); | |
31882 | ||
31883 | ||
31884 | ||
31885 | ||
31886 | ||
31887 | ||
31888 | ulint | |
31889 | log_preflush_pool_modified_pages( | |
31890 | ||
31891 | ||
31892 | ||
31893 | ||
31894 | dulint new_oldest, | |
31895 | ||
31896 | ulint sync); | |
31897 | ||
31898 | ||
31899 | ||
31900 | ||
31901 | ||
31902 | ||
31903 | ||
31904 | ulint | |
31905 | log_checkpoint( | |
31906 | ||
31907 | ||
31908 | ||
31909 | ulint sync, | |
31910 | ||
31911 | ulint write_always); | |
31912 | # 231 "./include/log0log.h" | |
31913 | void | |
31914 | log_make_checkpoint_at( | |
31915 | ||
31916 | dulint lsn, | |
31917 | ||
31918 | ||
31919 | ulint write_always); | |
31920 | # 249 "./include/log0log.h" | |
31921 | void | |
31922 | logs_empty_and_mark_files_at_shutdown(void); | |
31923 | ||
31924 | ||
31925 | ||
31926 | ||
31927 | void | |
31928 | log_group_read_checkpoint_info( | |
31929 | ||
31930 | log_group_t* group, | |
31931 | ulint field); | |
31932 | ||
31933 | ||
31934 | ||
31935 | void | |
31936 | log_checkpoint_get_nth_group_info( | |
31937 | ||
31938 | unsigned char* buf, | |
31939 | ulint n, | |
31940 | ulint* file_no, | |
31941 | ulint* offset); | |
31942 | ||
31943 | ||
31944 | ||
31945 | void | |
31946 | log_groups_write_checkpoint_info(void); | |
31947 | ||
31948 | ||
31949 | ||
31950 | ||
31951 | ||
31952 | void | |
31953 | log_reset_first_header_and_checkpoint( | |
31954 | ||
31955 | unsigned char* hdr_buf, | |
31956 | ||
31957 | dulint start); | |
31958 | ||
31959 | ||
31960 | ||
31961 | ||
31962 | ||
31963 | ulint | |
31964 | log_archive_do( | |
31965 | ||
31966 | ||
31967 | ||
31968 | ulint sync, | |
31969 | ulint* n_bytes); | |
31970 | # 306 "./include/log0log.h" | |
31971 | ulint | |
31972 | log_archive_stop(void); | |
31973 | ||
31974 | ||
31975 | ||
31976 | ||
31977 | ||
31978 | ulint | |
31979 | log_archive_start(void); | |
31980 | ||
31981 | ||
31982 | ||
31983 | ||
31984 | ||
31985 | ulint | |
31986 | log_archive_noarchivelog(void); | |
31987 | ||
31988 | ||
31989 | ||
31990 | ||
31991 | ||
31992 | ulint | |
31993 | log_archive_archivelog(void); | |
31994 | ||
31995 | ||
31996 | ||
31997 | ||
31998 | ||
31999 | void | |
32000 | log_archived_file_name_gen( | |
32001 | ||
32002 | char* buf, | |
32003 | ulint id, | |
32004 | ulint file_no); | |
32005 | ||
32006 | ||
32007 | ||
32008 | ||
32009 | ||
32010 | ||
32011 | void | |
32012 | log_check_margins(void); | |
32013 | ||
32014 | ||
32015 | ||
32016 | ||
32017 | void | |
32018 | log_group_read_log_seg( | |
32019 | ||
32020 | ulint type, | |
32021 | unsigned char* buf, | |
32022 | log_group_t* group, | |
32023 | dulint start_lsn, | |
32024 | dulint end_lsn); | |
32025 | ||
32026 | ||
32027 | ||
32028 | void | |
32029 | log_group_write_buf( | |
32030 | ||
32031 | log_group_t* group, | |
32032 | unsigned char* buf, | |
32033 | ulint len, | |
32034 | ||
32035 | dulint start_lsn, | |
32036 | ||
32037 | ||
32038 | ulint new_data_offset); | |
32039 | # 382 "./include/log0log.h" | |
32040 | void | |
32041 | log_group_set_fields( | |
32042 | ||
32043 | log_group_t* group, | |
32044 | dulint lsn); | |
32045 | ||
32046 | ||
32047 | ||
32048 | ||
32049 | ||
32050 | ulint | |
32051 | log_group_get_capacity( | |
32052 | ||
32053 | ||
32054 | log_group_t* group); | |
32055 | ||
32056 | ||
32057 | static inline | |
32058 | ulint | |
32059 | log_block_get_flush_bit( | |
32060 | ||
32061 | ||
32062 | ||
32063 | unsigned char* log_block); | |
32064 | ||
32065 | ||
32066 | static inline | |
32067 | ulint | |
32068 | log_block_get_hdr_no( | |
32069 | ||
32070 | ||
32071 | ||
32072 | unsigned char* log_block); | |
32073 | ||
32074 | ||
32075 | static inline | |
32076 | ulint | |
32077 | log_block_get_data_len( | |
32078 | ||
32079 | ||
32080 | ||
32081 | unsigned char* log_block); | |
32082 | ||
32083 | ||
32084 | static inline | |
32085 | void | |
32086 | log_block_set_data_len( | |
32087 | ||
32088 | unsigned char* log_block, | |
32089 | ulint len); | |
32090 | ||
32091 | ||
32092 | static inline | |
32093 | ulint | |
32094 | log_block_calc_checksum( | |
32095 | ||
32096 | ||
32097 | unsigned char* block); | |
32098 | ||
32099 | ||
32100 | static inline | |
32101 | ulint | |
32102 | log_block_get_checksum( | |
32103 | ||
32104 | ||
32105 | unsigned char* log_block); | |
32106 | ||
32107 | ||
32108 | static inline | |
32109 | void | |
32110 | log_block_set_checksum( | |
32111 | ||
32112 | unsigned char* log_block, | |
32113 | ulint checksum); | |
32114 | ||
32115 | ||
32116 | static inline | |
32117 | ulint | |
32118 | log_block_get_first_rec_group( | |
32119 | ||
32120 | ||
32121 | ||
32122 | unsigned char* log_block); | |
32123 | ||
32124 | ||
32125 | static inline | |
32126 | void | |
32127 | log_block_set_first_rec_group( | |
32128 | ||
32129 | unsigned char* log_block, | |
32130 | ulint offset); | |
32131 | ||
32132 | ||
32133 | static inline | |
32134 | ulint | |
32135 | log_block_get_checkpoint_no( | |
32136 | ||
32137 | ||
32138 | unsigned char* log_block); | |
32139 | ||
32140 | ||
32141 | static inline | |
32142 | void | |
32143 | log_block_init( | |
32144 | ||
32145 | unsigned char* log_block, | |
32146 | dulint lsn); | |
32147 | ||
32148 | ||
32149 | ||
32150 | static inline | |
32151 | void | |
32152 | log_block_init_in_old_format( | |
32153 | ||
32154 | unsigned char* log_block, | |
32155 | dulint lsn); | |
32156 | ||
32157 | ||
32158 | static inline | |
32159 | ulint | |
32160 | log_block_convert_lsn_to_no( | |
32161 | ||
32162 | ||
32163 | dulint lsn); | |
32164 | ||
32165 | ||
32166 | ||
32167 | void | |
32168 | log_print( | |
32169 | ||
32170 | FILE* file); | |
32171 | ||
32172 | ||
32173 | ||
32174 | ulint | |
32175 | log_peek_lsn( | |
32176 | ||
32177 | ||
32178 | ||
32179 | dulint* lsn); | |
32180 | ||
32181 | ||
32182 | ||
32183 | void | |
32184 | log_refresh_stats(void); | |
32185 | ||
32186 | ||
32187 | extern log_t* log_sys; | |
32188 | # 661 "./include/log0log.h" | |
32189 | struct log_group_struct{ | |
32190 | ||
32191 | ulint id; | |
32192 | ulint n_files; | |
32193 | ulint file_size; | |
32194 | ||
32195 | ulint space_id; | |
32196 | ||
32197 | ulint state; | |
32198 | ||
32199 | dulint lsn; | |
32200 | ||
32201 | ulint lsn_offset; | |
32202 | ulint n_pending_writes; | |
32203 | ||
32204 | unsigned char** file_header_bufs; | |
32205 | ||
32206 | ||
32207 | unsigned char** archive_file_header_bufs; | |
32208 | ||
32209 | ulint archive_space_id; | |
32210 | ||
32211 | ulint archived_file_no; | |
32212 | ||
32213 | ulint archived_offset; | |
32214 | ||
32215 | ||
32216 | ||
32217 | ulint next_archived_file_no; | |
32218 | ||
32219 | ||
32220 | ||
32221 | ||
32222 | ||
32223 | ulint next_archived_offset; | |
32224 | ||
32225 | dulint scanned_lsn; | |
32226 | ||
32227 | ||
32228 | unsigned char* checkpoint_buf; | |
32229 | ||
32230 | struct { log_group_t * prev; log_group_t * next; } | |
32231 | log_groups; | |
32232 | }; | |
32233 | ||
32234 | struct log_struct{ | |
32235 | unsigned char pad[64]; | |
32236 | ||
32237 | ||
32238 | dulint lsn; | |
32239 | ulint buf_free; | |
32240 | ||
32241 | ib_mutex_t mutex; | |
32242 | unsigned char* buf; | |
32243 | ulint buf_size; | |
32244 | ulint max_buf_free; | |
32245 | ||
32246 | ||
32247 | ulint old_buf_free; | |
32248 | ||
32249 | ||
32250 | dulint old_lsn; | |
32251 | ||
32252 | ulint check_flush_or_checkpoint; | |
32253 | # 733 "./include/log0log.h" | |
32254 | struct { ulint count; log_group_t * start; log_group_t * end; } | |
32255 | log_groups; | |
32256 | ||
32257 | ||
32258 | ||
32259 | ulint buf_next_to_write; | |
32260 | ||
32261 | ||
32262 | ||
32263 | ||
32264 | ||
32265 | ||
32266 | dulint written_to_some_lsn; | |
32267 | ||
32268 | ||
32269 | ||
32270 | ||
32271 | ||
32272 | dulint written_to_all_lsn; | |
32273 | ||
32274 | ||
32275 | ||
32276 | ||
32277 | ||
32278 | dulint write_lsn; | |
32279 | ||
32280 | ulint write_end_offset; | |
32281 | ||
32282 | ||
32283 | ||
32284 | dulint current_flush_lsn; | |
32285 | ||
32286 | dulint flushed_to_disk_lsn; | |
32287 | ||
32288 | ||
32289 | ulint n_pending_writes; | |
32290 | ||
32291 | ulint log_sync_callers[LOG_WRITE_FROM_NUMBER]; | |
32292 | ||
32293 | ulint log_sync_syncers[LOG_WRITE_FROM_NUMBER]; | |
32294 | ||
32295 | ulint n_syncs; | |
32296 | ulint n_checkpoints; | |
32297 | ||
32298 | ||
32299 | ||
32300 | ||
32301 | os_event_t no_flush_event; | |
32302 | ||
32303 | ||
32304 | ||
32305 | ||
32306 | ||
32307 | ulint one_flushed; | |
32308 | ||
32309 | ||
32310 | os_event_t one_flushed_event; | |
32311 | # 798 "./include/log0log.h" | |
32312 | ulint n_log_ios; | |
32313 | ||
32314 | ulint n_log_ios_old; | |
32315 | ||
32316 | time_t last_printout_time; | |
32317 | ||
32318 | ||
32319 | ||
32320 | ulint log_group_capacity; | |
32321 | ||
32322 | ||
32323 | ||
32324 | ||
32325 | ulint max_modified_age_async; | |
32326 | ||
32327 | ||
32328 | ||
32329 | ||
32330 | ulint max_modified_age_sync; | |
32331 | ||
32332 | ||
32333 | ||
32334 | ||
32335 | ulint adm_checkpoint_interval; | |
32336 | ||
32337 | ||
32338 | ||
32339 | ||
32340 | ulint max_checkpoint_age_async; | |
32341 | ||
32342 | ||
32343 | ||
32344 | ulint max_checkpoint_age; | |
32345 | ||
32346 | ||
32347 | ||
32348 | dulint next_checkpoint_no; | |
32349 | ||
32350 | dulint last_checkpoint_lsn; | |
32351 | ||
32352 | dulint next_checkpoint_lsn; | |
32353 | ||
32354 | ulint n_pending_checkpoint_writes; | |
32355 | ||
32356 | ||
32357 | rw_lock_t checkpoint_lock; | |
32358 | ||
32359 | ||
32360 | ||
32361 | unsigned char* checkpoint_buf; | |
32362 | ||
32363 | ||
32364 | ulint archiving_state; | |
32365 | ||
32366 | dulint archived_lsn; | |
32367 | ||
32368 | ulint max_archived_lsn_age_async; | |
32369 | ||
32370 | ||
32371 | ||
32372 | ulint max_archived_lsn_age; | |
32373 | ||
32374 | ||
32375 | dulint next_archived_lsn; | |
32376 | ||
32377 | ||
32378 | ||
32379 | ||
32380 | ||
32381 | ulint archiving_phase; | |
32382 | ||
32383 | ulint n_pending_archive_ios; | |
32384 | ||
32385 | ||
32386 | rw_lock_t archive_lock; | |
32387 | ||
32388 | ||
32389 | ||
32390 | ulint archive_buf_size; | |
32391 | unsigned char* archive_buf; | |
32392 | ||
32393 | os_event_t archiving_on; | |
32394 | ||
32395 | ||
32396 | }; | |
32397 | # 891 "./include/log0log.h" | |
32398 | # 1 "./include/log0log.ic" 1 | |
32399 | # 17 "./include/log0log.ic" | |
32400 | ulint | |
32401 | log_check_log_recs( | |
32402 | ||
32403 | unsigned char* buf, | |
32404 | ||
32405 | ulint len, | |
32406 | dulint buf_start_lsn); | |
32407 | ||
32408 | ||
32409 | ||
32410 | static inline | |
32411 | ulint | |
32412 | log_block_get_flush_bit( | |
32413 | ||
32414 | ||
32415 | ||
32416 | unsigned char* log_block) | |
32417 | { | |
32418 | if (0x80000000UL | |
32419 | & mach_read_from_4(log_block + 0)) { | |
32420 | ||
32421 | return((1)); | |
32422 | } | |
32423 | ||
32424 | return((0)); | |
32425 | } | |
32426 | ||
32427 | ||
32428 | ||
32429 | static inline | |
32430 | void | |
32431 | log_block_set_flush_bit( | |
32432 | ||
32433 | unsigned char* log_block, | |
32434 | ulint val) | |
32435 | { | |
32436 | ulint field; | |
32437 | ||
32438 | field = mach_read_from_4(log_block + 0); | |
32439 | ||
32440 | if (val) { | |
32441 | field = field | 0x80000000UL; | |
32442 | } else { | |
32443 | field = field & ~0x80000000UL; | |
32444 | } | |
32445 | ||
32446 | mach_write_to_4(log_block + 0, field); | |
32447 | } | |
32448 | ||
32449 | ||
32450 | ||
32451 | static inline | |
32452 | ulint | |
32453 | log_block_get_hdr_no( | |
32454 | ||
32455 | ||
32456 | ||
32457 | unsigned char* log_block) | |
32458 | { | |
32459 | return(~0x80000000UL | |
32460 | & mach_read_from_4(log_block + 0)); | |
32461 | } | |
32462 | ||
32463 | ||
32464 | ||
32465 | ||
32466 | static inline | |
32467 | void | |
32468 | log_block_set_hdr_no( | |
32469 | ||
32470 | unsigned char* log_block, | |
32471 | ulint n) | |
32472 | ||
32473 | { | |
32474 | ; | |
32475 | ; | |
32476 | ||
32477 | mach_write_to_4(log_block + 0, n); | |
32478 | } | |
32479 | ||
32480 | ||
32481 | ||
32482 | static inline | |
32483 | ulint | |
32484 | log_block_get_data_len( | |
32485 | ||
32486 | ||
32487 | ||
32488 | unsigned char* log_block) | |
32489 | { | |
32490 | return(mach_read_from_2(log_block + 4)); | |
32491 | } | |
32492 | ||
32493 | ||
32494 | ||
32495 | static inline | |
32496 | void | |
32497 | log_block_set_data_len( | |
32498 | ||
32499 | unsigned char* log_block, | |
32500 | ulint len) | |
32501 | { | |
32502 | mach_write_to_2(log_block + 4, len); | |
32503 | } | |
32504 | ||
32505 | ||
32506 | ||
32507 | static inline | |
32508 | ulint | |
32509 | log_block_get_first_rec_group( | |
32510 | ||
32511 | ||
32512 | ||
32513 | unsigned char* log_block) | |
32514 | { | |
32515 | return(mach_read_from_2(log_block + 6)); | |
32516 | } | |
32517 | ||
32518 | ||
32519 | ||
32520 | static inline | |
32521 | void | |
32522 | log_block_set_first_rec_group( | |
32523 | ||
32524 | unsigned char* log_block, | |
32525 | ulint offset) | |
32526 | { | |
32527 | mach_write_to_2(log_block + 6, offset); | |
32528 | } | |
32529 | ||
32530 | ||
32531 | ||
32532 | static inline | |
32533 | ulint | |
32534 | log_block_get_checkpoint_no( | |
32535 | ||
32536 | ||
32537 | unsigned char* log_block) | |
32538 | { | |
32539 | return(mach_read_from_4(log_block + 8)); | |
32540 | } | |
32541 | ||
32542 | ||
32543 | ||
32544 | static inline | |
32545 | void | |
32546 | log_block_set_checkpoint_no( | |
32547 | ||
32548 | unsigned char* log_block, | |
32549 | dulint no) | |
32550 | { | |
32551 | mach_write_to_4(log_block + 8, | |
32552 | ut_dulint_get_low(no)); | |
32553 | } | |
32554 | ||
32555 | ||
32556 | ||
32557 | static inline | |
32558 | ulint | |
32559 | log_block_convert_lsn_to_no( | |
32560 | ||
32561 | ||
32562 | dulint lsn) | |
32563 | { | |
32564 | ulint no; | |
32565 | ||
32566 | no = ut_dulint_get_low(lsn) / 512; | |
32567 | no += (ut_dulint_get_high(lsn) % 512) | |
32568 | * 2 * (0x80000000UL / 512); | |
32569 | ||
32570 | no = no & 0x3FFFFFFFUL; | |
32571 | ||
32572 | return(no + 1); | |
32573 | } | |
32574 | ||
32575 | ||
32576 | ||
32577 | static inline | |
32578 | ulint | |
32579 | log_block_calc_checksum( | |
32580 | ||
32581 | ||
32582 | unsigned char* block) | |
32583 | { | |
32584 | ulint sum; | |
32585 | ulint sh; | |
32586 | ulint i; | |
32587 | ||
32588 | sum = 1; | |
32589 | sh = 0; | |
32590 | ||
32591 | for (i = 0; i < 512 - 4; i++) { | |
32592 | sum = sum & 0x7FFFFFFFUL; | |
32593 | sum += (((ulint)(*(block + i))) << sh) + (ulint)(*(block + i)); | |
32594 | sh++; | |
32595 | if (sh > 24) { | |
32596 | sh = 0; | |
32597 | } | |
32598 | } | |
32599 | ||
32600 | return(sum); | |
32601 | } | |
32602 | ||
32603 | ||
32604 | ||
32605 | static inline | |
32606 | ulint | |
32607 | log_block_get_checksum( | |
32608 | ||
32609 | ||
32610 | unsigned char* log_block) | |
32611 | { | |
32612 | return(mach_read_from_4(log_block + 512 | |
32613 | - 4)); | |
32614 | } | |
32615 | ||
32616 | ||
32617 | ||
32618 | static inline | |
32619 | void | |
32620 | log_block_set_checksum( | |
32621 | ||
32622 | unsigned char* log_block, | |
32623 | ulint checksum) | |
32624 | { | |
32625 | mach_write_to_4(log_block + 512 | |
32626 | - 4, | |
32627 | checksum); | |
32628 | } | |
32629 | ||
32630 | ||
32631 | ||
32632 | static inline | |
32633 | void | |
32634 | log_block_init( | |
32635 | ||
32636 | unsigned char* log_block, | |
32637 | dulint lsn) | |
32638 | { | |
32639 | ulint no; | |
32640 | ||
32641 | ||
32642 | ||
32643 | ||
32644 | ||
32645 | no = log_block_convert_lsn_to_no(lsn); | |
32646 | ||
32647 | log_block_set_hdr_no(log_block, no); | |
32648 | ||
32649 | log_block_set_data_len(log_block, 12); | |
32650 | log_block_set_first_rec_group(log_block, 0); | |
32651 | } | |
32652 | ||
32653 | ||
32654 | ||
32655 | ||
32656 | static inline | |
32657 | void | |
32658 | log_block_init_in_old_format( | |
32659 | ||
32660 | unsigned char* log_block, | |
32661 | dulint lsn) | |
32662 | { | |
32663 | ulint no; | |
32664 | ||
32665 | ||
32666 | ||
32667 | ||
32668 | ||
32669 | no = log_block_convert_lsn_to_no(lsn); | |
32670 | ||
32671 | log_block_set_hdr_no(log_block, no); | |
32672 | mach_write_to_4(log_block + 512 | |
32673 | - 4, no); | |
32674 | log_block_set_data_len(log_block, 12); | |
32675 | log_block_set_first_rec_group(log_block, 0); | |
32676 | } | |
32677 | ||
32678 | ||
32679 | ||
32680 | ||
32681 | static inline | |
32682 | dulint | |
32683 | log_reserve_and_write_fast( | |
32684 | ||
32685 | ||
32686 | ||
32687 | unsigned char* str, | |
32688 | ulint len, | |
32689 | dulint* start_lsn, | |
32690 | ulint* success) | |
32691 | { | |
32692 | log_t* log = log_sys; | |
32693 | ulint data_len; | |
32694 | dulint lsn; | |
32695 | ||
32696 | *success = (1); | |
32697 | ||
32698 | mutex_enter_func((&(log->mutex)), "./include/log0log.ic", 315); | |
32699 | ||
32700 | data_len = len + log->buf_free % 512; | |
32701 | ||
32702 | if (data_len >= 512 - 4) { | |
32703 | ||
32704 | ||
32705 | ||
32706 | ||
32707 | *success = (0); | |
32708 | ||
32709 | mutex_exit(&(log->mutex)); | |
32710 | ||
32711 | return(ut_dulint_zero); | |
32712 | } | |
32713 | ||
32714 | *start_lsn = log->lsn; | |
32715 | ||
32716 | ut_memcpy(log->buf + log->buf_free, str, len); | |
32717 | ||
32718 | log_block_set_data_len(ut_align_down(log->buf + log->buf_free, | |
32719 | 512), | |
32720 | data_len); | |
32721 | ||
32722 | ||
32723 | ||
32724 | ||
32725 | log->buf_free += len; | |
32726 | ||
32727 | ; | |
32728 | ||
32729 | lsn = ut_dulint_add(log->lsn, len); | |
32730 | ||
32731 | log->lsn = lsn; | |
32732 | ||
32733 | ||
32734 | ||
32735 | ||
32736 | ||
32737 | return(lsn); | |
32738 | } | |
32739 | ||
32740 | ||
32741 | ||
32742 | static inline | |
32743 | void | |
32744 | log_release(void) | |
32745 | ||
32746 | { | |
32747 | mutex_exit(&(log_sys->mutex)); | |
32748 | } | |
32749 | ||
32750 | ||
32751 | ||
32752 | static inline | |
32753 | dulint | |
32754 | log_get_lsn(void) | |
32755 | ||
32756 | ||
32757 | { | |
32758 | dulint lsn; | |
32759 | ||
32760 | mutex_enter_func((&(log_sys->mutex)), "./include/log0log.ic", 377); | |
32761 | ||
32762 | lsn = log_sys->lsn; | |
32763 | ||
32764 | mutex_exit(&(log_sys->mutex)); | |
32765 | ||
32766 | return(lsn); | |
32767 | } | |
32768 | ||
32769 | ||
32770 | ||
32771 | ||
32772 | ||
32773 | ||
32774 | static inline | |
32775 | void | |
32776 | log_free_check(void) | |
32777 | ||
32778 | { | |
32779 | ||
32780 | ||
32781 | if (log_sys->check_flush_or_checkpoint) { | |
32782 | ||
32783 | log_check_margins(); | |
32784 | } | |
32785 | } | |
32786 | # 892 "./include/log0log.h" 2 | |
32787 | # 17 "./include/log0recv.h" 2 | |
32788 | # 25 "./include/log0recv.h" | |
32789 | ulint | |
32790 | recv_read_cp_info_for_backup( | |
32791 | ||
32792 | ||
32793 | unsigned char* hdr, | |
32794 | dulint* lsn, | |
32795 | ulint* offset, | |
32796 | ulint* fsp_limit, | |
32797 | ||
32798 | dulint* cp_no, | |
32799 | dulint* first_header_lsn); | |
32800 | ||
32801 | ||
32802 | ||
32803 | ||
32804 | ||
32805 | void | |
32806 | recv_scan_log_seg_for_backup( | |
32807 | ||
32808 | unsigned char* buf, | |
32809 | ulint buf_len, | |
32810 | dulint* scanned_lsn, | |
32811 | ||
32812 | ulint* scanned_checkpoint_no, | |
32813 | ||
32814 | ||
32815 | ||
32816 | ulint* n_bytes_scanned); | |
32817 | ||
32818 | ||
32819 | ||
32820 | ||
32821 | static inline | |
32822 | ulint | |
32823 | recv_recovery_is_on(void); | |
32824 | ||
32825 | ||
32826 | ||
32827 | static inline | |
32828 | ulint | |
32829 | recv_recovery_from_backup_is_on(void); | |
32830 | ||
32831 | ||
32832 | ||
32833 | ||
32834 | ||
32835 | ||
32836 | void | |
32837 | recv_recover_page( | |
32838 | ||
32839 | ulint recover_backup, | |
32840 | ||
32841 | ||
32842 | ||
32843 | ulint just_read_in, | |
32844 | ||
32845 | ib_page_t* page, | |
32846 | ulint space, | |
32847 | ulint page_no); | |
32848 | ||
32849 | ||
32850 | ||
32851 | ||
32852 | ||
32853 | ||
32854 | ulint | |
32855 | recv_recovery_from_checkpoint_start( | |
32856 | ||
32857 | ||
32858 | ulint type, | |
32859 | dulint limit_lsn, | |
32860 | dulint min_flushed_lsn, | |
32861 | dulint max_flushed_lsn); | |
32862 | ||
32863 | ||
32864 | ||
32865 | void | |
32866 | recv_recovery_from_checkpoint_finish(void); | |
32867 | ||
32868 | ||
32869 | ||
32870 | ||
32871 | ||
32872 | ulint | |
32873 | recv_scan_log_recs( | |
32874 | ||
32875 | ||
32876 | ||
32877 | ulint apply_automatically, | |
32878 | ||
32879 | ||
32880 | ||
32881 | ||
32882 | ulint available_memory, | |
32883 | ||
32884 | ulint store_to_hash, | |
32885 | ||
32886 | ||
32887 | unsigned char* buf, | |
32888 | ||
32889 | ulint len, | |
32890 | dulint start_lsn, | |
32891 | dulint* contiguous_lsn, | |
32892 | ||
32893 | dulint* group_scanned_lsn); | |
32894 | ||
32895 | ||
32896 | ||
32897 | void | |
32898 | recv_reset_logs( | |
32899 | ||
32900 | dulint lsn, | |
32901 | ||
32902 | ||
32903 | ||
32904 | ||
32905 | ||
32906 | ulint new_logs_created); | |
32907 | # 161 "./include/log0recv.h" | |
32908 | void | |
32909 | recv_sys_create(void); | |
32910 | ||
32911 | ||
32912 | ||
32913 | ||
32914 | void | |
32915 | recv_sys_init( | |
32916 | ||
32917 | ulint recover_from_backup, | |
32918 | ||
32919 | ulint available_memory); | |
32920 | ||
32921 | ||
32922 | ||
32923 | ||
32924 | void | |
32925 | recv_apply_hashed_log_recs( | |
32926 | ||
32927 | ulint allow_ibuf); | |
32928 | # 220 "./include/log0recv.h" | |
32929 | void | |
32930 | recv_compare_spaces( | |
32931 | ||
32932 | ulint space1, | |
32933 | ulint space2, | |
32934 | ulint n_pages); | |
32935 | ||
32936 | ||
32937 | ||
32938 | ||
32939 | ||
32940 | ||
32941 | void | |
32942 | recv_compare_spaces_low( | |
32943 | ||
32944 | ulint space1, | |
32945 | ulint space2, | |
32946 | ulint n_pages); | |
32947 | ||
32948 | ||
32949 | typedef struct recv_data_struct recv_data_t; | |
32950 | struct recv_data_struct{ | |
32951 | recv_data_t* next; | |
32952 | ||
32953 | ||
32954 | ||
32955 | }; | |
32956 | ||
32957 | ||
32958 | typedef struct recv_struct recv_t; | |
32959 | struct recv_struct{ | |
32960 | unsigned char type; | |
32961 | ulint len; | |
32962 | recv_data_t* data; | |
32963 | ||
32964 | dulint start_lsn; | |
32965 | ||
32966 | ||
32967 | ||
32968 | dulint end_lsn; | |
32969 | ||
32970 | ||
32971 | ||
32972 | struct { recv_t * prev; recv_t * next; } | |
32973 | rec_list; | |
32974 | }; | |
32975 | ||
32976 | ||
32977 | typedef struct recv_addr_struct recv_addr_t; | |
32978 | struct recv_addr_struct{ | |
32979 | ulint state; | |
32980 | ||
32981 | ulint space; | |
32982 | ulint page_no; | |
32983 | struct { ulint count; recv_t * start; recv_t * end; } | |
32984 | rec_list; | |
32985 | hash_node_t addr_hash; | |
32986 | }; | |
32987 | ||
32988 | ||
32989 | typedef struct recv_sys_struct recv_sys_t; | |
32990 | struct recv_sys_struct{ | |
32991 | ib_mutex_t mutex; | |
32992 | ||
32993 | ||
32994 | ulint apply_log_recs; | |
32995 | ||
32996 | ||
32997 | ||
32998 | ||
32999 | ulint apply_batch_on; | |
33000 | ||
33001 | ||
33002 | dulint lsn; | |
33003 | ulint last_log_buf_size; | |
33004 | ||
33005 | ||
33006 | unsigned char* last_block; | |
33007 | ||
33008 | ||
33009 | unsigned char* last_block_buf_start; | |
33010 | ||
33011 | ||
33012 | unsigned char* buf; | |
33013 | ulint len; | |
33014 | dulint parse_start_lsn; | |
33015 | ||
33016 | ||
33017 | ||
33018 | ||
33019 | dulint scanned_lsn; | |
33020 | ||
33021 | ||
33022 | ulint scanned_checkpoint_no; | |
33023 | ||
33024 | ||
33025 | ulint recovered_offset; | |
33026 | ||
33027 | ||
33028 | dulint recovered_lsn; | |
33029 | ||
33030 | ||
33031 | dulint limit_lsn; | |
33032 | ||
33033 | ulint found_corrupt_log; | |
33034 | ||
33035 | ||
33036 | ||
33037 | ||
33038 | log_group_t* archive_group; | |
33039 | ||
33040 | ||
33041 | mem_heap_t* heap; | |
33042 | ||
33043 | hash_table_t* addr_hash; | |
33044 | ulint n_addrs; | |
33045 | ||
33046 | }; | |
33047 | ||
33048 | extern recv_sys_t* recv_sys; | |
33049 | extern ulint recv_recovery_on; | |
33050 | extern ulint recv_no_ibuf_operations; | |
33051 | extern ulint recv_needed_recovery; | |
33052 | ||
33053 | extern ulint recv_lsn_checks_on; | |
33054 | ||
33055 | ||
33056 | ||
33057 | extern ulint recv_max_parsed_page_no; | |
33058 | # 369 "./include/log0recv.h" | |
33059 | extern ulint recv_n_pool_free_frames; | |
33060 | ||
33061 | ||
33062 | # 1 "./include/log0recv.ic" 1 | |
33063 | # 14 "./include/log0recv.ic" | |
33064 | extern ulint recv_recovery_from_backup_on; | |
33065 | ||
33066 | ||
33067 | ||
33068 | static inline | |
33069 | ulint | |
33070 | recv_recovery_is_on(void) | |
33071 | ||
33072 | { | |
33073 | return(recv_recovery_on); | |
33074 | } | |
33075 | ||
33076 | ||
33077 | ||
33078 | static inline | |
33079 | ulint | |
33080 | recv_recovery_from_backup_is_on(void) | |
33081 | ||
33082 | { | |
33083 | return(recv_recovery_from_backup_on); | |
33084 | } | |
33085 | # 373 "./include/log0recv.h" 2 | |
33086 | # 13 "./include/row0vers.ic" 2 | |
33087 | # 98 "./include/row0vers.h" 2 | |
33088 | # 19 "./include/lock0lock.ic" 2 | |
33089 | # 1 "./include/que0que.h" 1 | |
33090 | # 19 "./include/que0que.h" | |
33091 | # 1 "./include/row0types.h" 1 | |
33092 | # 12 "./include/row0types.h" | |
33093 | typedef struct plan_struct plan_t; | |
33094 | ||
33095 | typedef struct upd_struct upd_t; | |
33096 | ||
33097 | typedef struct upd_field_struct upd_field_t; | |
33098 | ||
33099 | typedef struct upd_node_struct upd_node_t; | |
33100 | ||
33101 | typedef struct del_node_struct del_node_t; | |
33102 | ||
33103 | typedef struct ins_node_struct ins_node_t; | |
33104 | ||
33105 | typedef struct sel_node_struct sel_node_t; | |
33106 | ||
33107 | typedef struct open_node_struct open_node_t; | |
33108 | ||
33109 | typedef struct fetch_node_struct fetch_node_t; | |
33110 | ||
33111 | typedef struct row_printf_node_struct row_printf_node_t; | |
33112 | typedef struct sel_buf_struct sel_buf_t; | |
33113 | ||
33114 | typedef struct undo_node_struct undo_node_t; | |
33115 | ||
33116 | typedef struct purge_node_struct purge_node_t; | |
33117 | # 20 "./include/que0que.h" 2 | |
33118 | # 1 "./include/pars0types.h" 1 | |
33119 | # 12 "./include/pars0types.h" | |
33120 | typedef struct sym_node_struct sym_node_t; | |
33121 | typedef struct sym_tab_struct sym_tab_t; | |
33122 | typedef struct pars_res_word_struct pars_res_word_t; | |
33123 | typedef struct func_node_struct func_node_t; | |
33124 | typedef struct order_node_struct order_node_t; | |
33125 | typedef struct proc_node_struct proc_node_t; | |
33126 | typedef struct elsif_node_struct elsif_node_t; | |
33127 | typedef struct if_node_struct if_node_t; | |
33128 | typedef struct while_node_struct while_node_t; | |
33129 | typedef struct for_node_struct for_node_t; | |
33130 | typedef struct return_node_struct return_node_t; | |
33131 | typedef struct assign_node_struct assign_node_t; | |
33132 | typedef struct col_assign_node_struct col_assign_node_t; | |
33133 | ||
33134 | typedef struct { ulint count; sym_node_t * start; sym_node_t * end; } sym_node_list_t; | |
33135 | # 21 "./include/que0que.h" 2 | |
33136 | ||
33137 | ||
33138 | ||
33139 | extern ulint que_trace_on; | |
33140 | ||
33141 | ||
33142 | ||
33143 | ||
33144 | void | |
33145 | que_graph_publish( | |
33146 | ||
33147 | que_t* graph, | |
33148 | sess_t* sess); | |
33149 | ||
33150 | ||
33151 | ||
33152 | que_fork_t* | |
33153 | que_fork_create( | |
33154 | ||
33155 | ||
33156 | que_t* graph, | |
33157 | ||
33158 | ||
33159 | que_node_t* parent, | |
33160 | ulint fork_type, | |
33161 | mem_heap_t* heap); | |
33162 | ||
33163 | ||
33164 | static inline | |
33165 | que_thr_t* | |
33166 | que_fork_get_first_thr( | |
33167 | ||
33168 | que_fork_t* fork); | |
33169 | ||
33170 | ||
33171 | static inline | |
33172 | que_node_t* | |
33173 | que_fork_get_child( | |
33174 | ||
33175 | que_fork_t* fork); | |
33176 | ||
33177 | ||
33178 | static inline | |
33179 | void | |
33180 | que_node_set_parent( | |
33181 | ||
33182 | que_node_t* node, | |
33183 | que_node_t* parent); | |
33184 | ||
33185 | ||
33186 | ||
33187 | que_thr_t* | |
33188 | que_thr_create( | |
33189 | ||
33190 | ||
33191 | que_fork_t* parent, | |
33192 | mem_heap_t* heap); | |
33193 | ||
33194 | ||
33195 | ||
33196 | ||
33197 | ||
33198 | ulint | |
33199 | que_graph_try_free( | |
33200 | ||
33201 | ||
33202 | que_t* graph); | |
33203 | ||
33204 | ||
33205 | ||
33206 | ||
33207 | void | |
33208 | que_graph_free_recursive( | |
33209 | ||
33210 | que_node_t* node); | |
33211 | ||
33212 | ||
33213 | ||
33214 | void | |
33215 | que_graph_free( | |
33216 | ||
33217 | que_t* graph); | |
33218 | # 112 "./include/que0que.h" | |
33219 | ulint | |
33220 | que_thr_stop( | |
33221 | ||
33222 | ||
33223 | que_thr_t* thr); | |
33224 | ||
33225 | ||
33226 | ||
33227 | ||
33228 | void | |
33229 | que_thr_move_to_run_state_for_mysql( | |
33230 | ||
33231 | que_thr_t* thr, | |
33232 | trx_t* trx); | |
33233 | ||
33234 | ||
33235 | ||
33236 | ||
33237 | void | |
33238 | que_thr_stop_for_mysql_no_error( | |
33239 | ||
33240 | que_thr_t* thr, | |
33241 | trx_t* trx); | |
33242 | ||
33243 | ||
33244 | ||
33245 | ||
33246 | ||
33247 | ||
33248 | void | |
33249 | que_thr_stop_for_mysql( | |
33250 | ||
33251 | que_thr_t* thr); | |
33252 | ||
33253 | ||
33254 | ||
33255 | ||
33256 | ||
33257 | void | |
33258 | que_run_threads( | |
33259 | ||
33260 | que_thr_t* thr); | |
33261 | ||
33262 | ||
33263 | ||
33264 | ||
33265 | ||
33266 | void | |
33267 | que_fork_error_handle( | |
33268 | ||
33269 | trx_t* trx, | |
33270 | que_t* fork); | |
33271 | ||
33272 | ||
33273 | ||
33274 | ||
33275 | ||
33276 | void | |
33277 | que_thr_handle_error( | |
33278 | ||
33279 | que_thr_t* thr, | |
33280 | ulint err_no, | |
33281 | unsigned char* err_str, | |
33282 | ||
33283 | ||
33284 | ulint err_len); | |
33285 | ||
33286 | ||
33287 | ||
33288 | ||
33289 | ||
33290 | ||
33291 | void | |
33292 | que_thr_end_wait( | |
33293 | ||
33294 | que_thr_t* thr, | |
33295 | ||
33296 | ||
33297 | ||
33298 | que_thr_t** next_thr); | |
33299 | ||
33300 | ||
33301 | ||
33302 | ||
33303 | ||
33304 | ||
33305 | ||
33306 | void | |
33307 | que_thr_end_wait_no_next_thr( | |
33308 | ||
33309 | que_thr_t* thr); | |
33310 | # 212 "./include/que0que.h" | |
33311 | que_thr_t* | |
33312 | que_fork_start_command( | |
33313 | ||
33314 | ||
33315 | ||
33316 | ||
33317 | ||
33318 | que_fork_t* fork); | |
33319 | ||
33320 | ||
33321 | static inline | |
33322 | trx_t* | |
33323 | thr_get_trx( | |
33324 | ||
33325 | que_thr_t* thr); | |
33326 | ||
33327 | ||
33328 | static inline | |
33329 | ulint | |
33330 | que_node_get_type( | |
33331 | ||
33332 | que_node_t* node); | |
33333 | ||
33334 | ||
33335 | static inline | |
33336 | dtype_t* | |
33337 | que_node_get_data_type( | |
33338 | ||
33339 | que_node_t* node); | |
33340 | ||
33341 | ||
33342 | static inline | |
33343 | dfield_t* | |
33344 | que_node_get_val( | |
33345 | ||
33346 | que_node_t* node); | |
33347 | ||
33348 | ||
33349 | static inline | |
33350 | ulint | |
33351 | que_node_get_val_buf_size( | |
33352 | ||
33353 | ||
33354 | ||
33355 | que_node_t* node); | |
33356 | ||
33357 | ||
33358 | static inline | |
33359 | void | |
33360 | que_node_set_val_buf_size( | |
33361 | ||
33362 | que_node_t* node, | |
33363 | ulint size); | |
33364 | ||
33365 | ||
33366 | static inline | |
33367 | que_node_t* | |
33368 | que_node_get_next( | |
33369 | ||
33370 | que_node_t* node); | |
33371 | ||
33372 | ||
33373 | static inline | |
33374 | que_node_t* | |
33375 | que_node_get_parent( | |
33376 | ||
33377 | ||
33378 | que_node_t* node); | |
33379 | ||
33380 | ||
33381 | static inline | |
33382 | que_node_t* | |
33383 | que_node_list_add_last( | |
33384 | ||
33385 | ||
33386 | que_node_t* node_list, | |
33387 | que_node_t* node); | |
33388 | ||
33389 | ||
33390 | static inline | |
33391 | ulint | |
33392 | que_node_list_get_len( | |
33393 | ||
33394 | ||
33395 | que_node_t* node_list); | |
33396 | ||
33397 | ||
33398 | ||
33399 | static inline | |
33400 | ulint | |
33401 | que_thr_peek_stop( | |
33402 | ||
33403 | ||
33404 | ||
33405 | ||
33406 | ||
33407 | ||
33408 | que_thr_t* thr); | |
33409 | ||
33410 | ||
33411 | static inline | |
33412 | ulint | |
33413 | que_graph_is_select( | |
33414 | ||
33415 | ||
33416 | que_t* graph); | |
33417 | ||
33418 | ||
33419 | ||
33420 | void | |
33421 | que_node_print_info( | |
33422 | ||
33423 | que_node_t* node); | |
33424 | ||
33425 | ||
33426 | ||
33427 | ||
33428 | ||
33429 | struct que_thr_struct{ | |
33430 | que_common_t common; | |
33431 | ulint magic_n; | |
33432 | ||
33433 | que_node_t* child; | |
33434 | que_t* graph; | |
33435 | ulint is_active; | |
33436 | ||
33437 | ||
33438 | ||
33439 | ||
33440 | ulint state; | |
33441 | struct { que_thr_t * prev; que_thr_t * next; } | |
33442 | thrs; | |
33443 | ||
33444 | struct { que_thr_t * prev; que_thr_t * next; } | |
33445 | trx_thrs; | |
33446 | ||
33447 | struct { que_thr_t * prev; que_thr_t * next; } | |
33448 | queue; | |
33449 | ||
33450 | ||
33451 | ||
33452 | ||
33453 | ||
33454 | que_node_t* run_node; | |
33455 | ||
33456 | ||
33457 | que_node_t* prev_node; | |
33458 | ||
33459 | ulint resource; | |
33460 | ||
33461 | ulint lock_state; | |
33462 | ||
33463 | }; | |
33464 | ||
33465 | ||
33466 | ||
33467 | ||
33468 | ||
33469 | struct que_fork_struct{ | |
33470 | que_common_t common; | |
33471 | que_t* graph; | |
33472 | ulint fork_type; | |
33473 | ulint n_active_thrs; | |
33474 | ||
33475 | ||
33476 | ||
33477 | ||
33478 | trx_t* trx; | |
33479 | ||
33480 | ulint state; | |
33481 | que_thr_t* caller; | |
33482 | ||
33483 | struct { ulint count; que_thr_t * start; que_thr_t * end; } | |
33484 | thrs; | |
33485 | ||
33486 | ||
33487 | sym_tab_t* sym_tab; | |
33488 | ||
33489 | ||
33490 | ||
33491 | ||
33492 | ulint cur_end; | |
33493 | ||
33494 | ulint cur_pos; | |
33495 | ||
33496 | ||
33497 | ||
33498 | ||
33499 | ulint cur_on_row; | |
33500 | ||
33501 | ||
33502 | dulint n_inserts; | |
33503 | dulint n_updates; | |
33504 | dulint n_deletes; | |
33505 | sel_node_t* last_sel_node; | |
33506 | ||
33507 | struct { que_fork_t * prev; que_fork_t * next; } | |
33508 | graphs; | |
33509 | ||
33510 | ||
33511 | mem_heap_t* heap; | |
33512 | ||
33513 | ||
33514 | }; | |
33515 | # 499 "./include/que0que.h" | |
33516 | # 1 "./include/que0que.ic" 1 | |
33517 | # 9 "./include/que0que.ic" | |
33518 | # 1 "./include/usr0sess.h" 1 | |
33519 | # 25 "./include/usr0sess.h" | |
33520 | sess_t* | |
33521 | sess_open(void); | |
33522 | ||
33523 | ||
33524 | ||
33525 | ||
33526 | ||
33527 | ||
33528 | ulint | |
33529 | sess_try_close( | |
33530 | ||
33531 | ||
33532 | sess_t* sess); | |
33533 | ||
33534 | ||
33535 | struct sess_struct{ | |
33536 | ulint state; | |
33537 | trx_t* trx; | |
33538 | ||
33539 | ||
33540 | ||
33541 | ||
33542 | struct { ulint count; que_t * start; que_t * end; } | |
33543 | graphs; | |
33544 | ||
33545 | }; | |
33546 | ||
33547 | ||
33548 | ||
33549 | ||
33550 | ||
33551 | ||
33552 | ||
33553 | # 1 "./include/usr0sess.ic" 1 | |
33554 | # 59 "./include/usr0sess.h" 2 | |
33555 | # 10 "./include/que0que.ic" 2 | |
33556 | ||
33557 | ||
33558 | ||
33559 | static inline | |
33560 | trx_t* | |
33561 | thr_get_trx( | |
33562 | ||
33563 | que_thr_t* thr) | |
33564 | { | |
33565 | ; | |
33566 | ||
33567 | return(thr->graph->trx); | |
33568 | } | |
33569 | ||
33570 | ||
33571 | ||
33572 | static inline | |
33573 | que_thr_t* | |
33574 | que_fork_get_first_thr( | |
33575 | ||
33576 | que_fork_t* fork) | |
33577 | { | |
33578 | return((fork->thrs).start); | |
33579 | } | |
33580 | ||
33581 | ||
33582 | ||
33583 | static inline | |
33584 | que_node_t* | |
33585 | que_fork_get_child( | |
33586 | ||
33587 | que_fork_t* fork) | |
33588 | { | |
33589 | que_thr_t* thr; | |
33590 | ||
33591 | thr = (fork->thrs).start; | |
33592 | ||
33593 | return(thr->child); | |
33594 | } | |
33595 | ||
33596 | ||
33597 | ||
33598 | static inline | |
33599 | ulint | |
33600 | que_node_get_type( | |
33601 | ||
33602 | que_node_t* node) | |
33603 | { | |
33604 | ; | |
33605 | ||
33606 | return(((que_common_t*)node)->type); | |
33607 | } | |
33608 | ||
33609 | ||
33610 | ||
33611 | static inline | |
33612 | dfield_t* | |
33613 | que_node_get_val( | |
33614 | ||
33615 | que_node_t* node) | |
33616 | { | |
33617 | ; | |
33618 | ||
33619 | return(&(((que_common_t*)node)->val)); | |
33620 | } | |
33621 | ||
33622 | ||
33623 | ||
33624 | static inline | |
33625 | ulint | |
33626 | que_node_get_val_buf_size( | |
33627 | ||
33628 | ||
33629 | ||
33630 | que_node_t* node) | |
33631 | { | |
33632 | ; | |
33633 | ||
33634 | return(((que_common_t*)node)->val_buf_size); | |
33635 | } | |
33636 | ||
33637 | ||
33638 | ||
33639 | static inline | |
33640 | void | |
33641 | que_node_set_val_buf_size( | |
33642 | ||
33643 | que_node_t* node, | |
33644 | ulint size) | |
33645 | { | |
33646 | ; | |
33647 | ||
33648 | ((que_common_t*)node)->val_buf_size = size; | |
33649 | } | |
33650 | ||
33651 | ||
33652 | ||
33653 | static inline | |
33654 | void | |
33655 | que_node_set_parent( | |
33656 | ||
33657 | que_node_t* node, | |
33658 | que_node_t* parent) | |
33659 | { | |
33660 | ; | |
33661 | ||
33662 | ((que_common_t*)node)->parent = parent; | |
33663 | } | |
33664 | ||
33665 | ||
33666 | ||
33667 | static inline | |
33668 | dtype_t* | |
33669 | que_node_get_data_type( | |
33670 | ||
33671 | que_node_t* node) | |
33672 | { | |
33673 | ; | |
33674 | ||
33675 | return(&(((que_common_t*)node)->val.type)); | |
33676 | } | |
33677 | ||
33678 | ||
33679 | ||
33680 | static inline | |
33681 | que_node_t* | |
33682 | que_node_list_add_last( | |
33683 | ||
33684 | ||
33685 | que_node_t* node_list, | |
33686 | que_node_t* node) | |
33687 | { | |
33688 | que_common_t* cnode; | |
33689 | que_common_t* cnode2; | |
33690 | ||
33691 | cnode = node; | |
33692 | ||
33693 | cnode->brother = ((void *)0); | |
33694 | ||
33695 | if (node_list == ((void *)0)) { | |
33696 | ||
33697 | return(node); | |
33698 | } | |
33699 | ||
33700 | cnode2 = node_list; | |
33701 | ||
33702 | while (cnode2->brother != ((void *)0)) { | |
33703 | cnode2 = cnode2->brother; | |
33704 | } | |
33705 | ||
33706 | cnode2->brother = node; | |
33707 | ||
33708 | return(node_list); | |
33709 | } | |
33710 | ||
33711 | ||
33712 | ||
33713 | static inline | |
33714 | que_node_t* | |
33715 | que_node_get_next( | |
33716 | ||
33717 | ||
33718 | que_node_t* node) | |
33719 | { | |
33720 | return(((que_common_t*)node)->brother); | |
33721 | } | |
33722 | ||
33723 | ||
33724 | ||
33725 | static inline | |
33726 | ulint | |
33727 | que_node_list_get_len( | |
33728 | ||
33729 | ||
33730 | que_node_t* node_list) | |
33731 | { | |
33732 | que_common_t* cnode; | |
33733 | ulint len; | |
33734 | ||
33735 | cnode = node_list; | |
33736 | len = 0; | |
33737 | ||
33738 | while (cnode != ((void *)0)) { | |
33739 | len++; | |
33740 | cnode = cnode->brother; | |
33741 | } | |
33742 | ||
33743 | return(len); | |
33744 | } | |
33745 | ||
33746 | ||
33747 | ||
33748 | static inline | |
33749 | que_node_t* | |
33750 | que_node_get_parent( | |
33751 | ||
33752 | ||
33753 | que_node_t* node) | |
33754 | { | |
33755 | return(((que_common_t*)node)->parent); | |
33756 | } | |
33757 | ||
33758 | ||
33759 | ||
33760 | ||
33761 | static inline | |
33762 | ulint | |
33763 | que_thr_peek_stop( | |
33764 | ||
33765 | ||
33766 | ||
33767 | ||
33768 | ||
33769 | ||
33770 | que_thr_t* thr) | |
33771 | { | |
33772 | trx_t* trx; | |
33773 | que_t* graph; | |
33774 | ||
33775 | graph = thr->graph; | |
33776 | trx = graph->trx; | |
33777 | ||
33778 | if (graph->state != 1 | |
33779 | || trx->que_state == 2 | |
33780 | || ((trx->signals).count > 0 | |
33781 | && trx->que_state == 1)) { | |
33782 | return((1)); | |
33783 | } | |
33784 | ||
33785 | return((0)); | |
33786 | } | |
33787 | ||
33788 | ||
33789 | ||
33790 | static inline | |
33791 | ulint | |
33792 | que_graph_is_select( | |
33793 | ||
33794 | ||
33795 | que_t* graph) | |
33796 | { | |
33797 | if (graph->fork_type == 2 | |
33798 | || graph->fork_type == 1) { | |
33799 | ||
33800 | return((1)); | |
33801 | } | |
33802 | ||
33803 | return((0)); | |
33804 | } | |
33805 | # 500 "./include/que0que.h" 2 | |
33806 | # 20 "./include/lock0lock.ic" 2 | |
33807 | # 1 "./include/btr0cur.h" 1 | |
33808 | # 19 "./include/btr0cur.h" | |
33809 | # 1 "./include/ha0ha.h" 1 | |
33810 | # 19 "./include/ha0ha.h" | |
33811 | static inline | |
33812 | void* | |
33813 | ha_search_and_get_data( | |
33814 | ||
33815 | ||
33816 | ||
33817 | ||
33818 | hash_table_t* table, | |
33819 | ulint fold); | |
33820 | ||
33821 | ||
33822 | ||
33823 | ||
33824 | void | |
33825 | ha_search_and_update_if_found( | |
33826 | ||
33827 | hash_table_t* table, | |
33828 | ulint fold, | |
33829 | void* data, | |
33830 | void* new_data); | |
33831 | ||
33832 | ||
33833 | ||
33834 | ||
33835 | hash_table_t* | |
33836 | ha_create( | |
33837 | ||
33838 | ||
33839 | ulint in_btr_search, | |
33840 | ||
33841 | ulint n, | |
33842 | ulint n_mutexes, | |
33843 | ||
33844 | ulint mutex_level); | |
33845 | ||
33846 | ||
33847 | ||
33848 | ||
33849 | ||
33850 | ||
33851 | ulint | |
33852 | ha_insert_for_fold( | |
33853 | ||
33854 | ||
33855 | ||
33856 | hash_table_t* table, | |
33857 | ulint fold, | |
33858 | ||
33859 | ||
33860 | ||
33861 | void* data); | |
33862 | ||
33863 | ||
33864 | ||
33865 | static inline | |
33866 | ulint | |
33867 | ha_insert_for_fold_mutex( | |
33868 | ||
33869 | ||
33870 | ||
33871 | hash_table_t* table, | |
33872 | ulint fold, | |
33873 | ||
33874 | ||
33875 | ||
33876 | void* data); | |
33877 | ||
33878 | ||
33879 | ||
33880 | void | |
33881 | ha_delete( | |
33882 | ||
33883 | hash_table_t* table, | |
33884 | ulint fold, | |
33885 | void* data); | |
33886 | ||
33887 | ||
33888 | ||
33889 | ||
33890 | static inline | |
33891 | ulint | |
33892 | ha_search_and_delete_if_found( | |
33893 | ||
33894 | ||
33895 | hash_table_t* table, | |
33896 | ulint fold, | |
33897 | void* data); | |
33898 | ||
33899 | ||
33900 | ||
33901 | ||
33902 | void | |
33903 | ha_remove_all_nodes_to_page( | |
33904 | ||
33905 | hash_table_t* table, | |
33906 | ulint fold, | |
33907 | ib_page_t* page); | |
33908 | ||
33909 | ||
33910 | ||
33911 | ulint | |
33912 | ha_validate( | |
33913 | ||
33914 | ||
33915 | hash_table_t* table, | |
33916 | ulint start_index, | |
33917 | ulint end_index); | |
33918 | ||
33919 | ||
33920 | ||
33921 | void | |
33922 | ha_print_info( | |
33923 | ||
33924 | FILE* file, | |
33925 | hash_table_t* table); | |
33926 | ||
33927 | ||
33928 | ||
33929 | typedef struct ha_node_struct ha_node_t; | |
33930 | struct ha_node_struct { | |
33931 | ha_node_t* next; | |
33932 | void* data; | |
33933 | ulint fold; | |
33934 | }; | |
33935 | ||
33936 | ||
33937 | # 1 "./include/ha0ha.ic" 1 | |
33938 | # 15 "./include/ha0ha.ic" | |
33939 | void | |
33940 | ha_delete_hash_node( | |
33941 | ||
33942 | hash_table_t* table, | |
33943 | ha_node_t* del_node); | |
33944 | ||
33945 | ||
33946 | ||
33947 | static inline | |
33948 | void* | |
33949 | ha_node_get_data( | |
33950 | ||
33951 | ||
33952 | ha_node_t* node) | |
33953 | { | |
33954 | return(node->data); | |
33955 | } | |
33956 | ||
33957 | ||
33958 | ||
33959 | static inline | |
33960 | void | |
33961 | ha_node_set_data( | |
33962 | ||
33963 | ha_node_t* node, | |
33964 | void* data) | |
33965 | { | |
33966 | node->data = data; | |
33967 | } | |
33968 | ||
33969 | ||
33970 | ||
33971 | static inline | |
33972 | ha_node_t* | |
33973 | ha_chain_get_next( | |
33974 | ||
33975 | ||
33976 | ha_node_t* node) | |
33977 | { | |
33978 | return(node->next); | |
33979 | } | |
33980 | ||
33981 | ||
33982 | ||
33983 | static inline | |
33984 | ha_node_t* | |
33985 | ha_chain_get_first( | |
33986 | ||
33987 | ||
33988 | hash_table_t* table, | |
33989 | ulint fold) | |
33990 | { | |
33991 | return(hash_get_nth_cell(table, hash_calc_hash(fold, table))->node); | |
33992 | } | |
33993 | ||
33994 | ||
33995 | ||
33996 | static inline | |
33997 | ha_node_t* | |
33998 | ha_search( | |
33999 | ||
34000 | ||
34001 | ||
34002 | ||
34003 | hash_table_t* table, | |
34004 | ulint fold) | |
34005 | { | |
34006 | ha_node_t* node; | |
34007 | ||
34008 | ||
34009 | ||
34010 | ||
34011 | ||
34012 | node = ha_chain_get_first(table, fold); | |
34013 | ||
34014 | while (node) { | |
34015 | if (node->fold == fold) { | |
34016 | ||
34017 | return(node); | |
34018 | } | |
34019 | ||
34020 | node = ha_chain_get_next(node); | |
34021 | } | |
34022 | ||
34023 | return(((void *)0)); | |
34024 | } | |
34025 | ||
34026 | ||
34027 | ||
34028 | static inline | |
34029 | void* | |
34030 | ha_search_and_get_data( | |
34031 | ||
34032 | ||
34033 | ||
34034 | ||
34035 | hash_table_t* table, | |
34036 | ulint fold) | |
34037 | { | |
34038 | ha_node_t* node; | |
34039 | ||
34040 | ||
34041 | ||
34042 | ||
34043 | ||
34044 | node = ha_chain_get_first(table, fold); | |
34045 | ||
34046 | while (node) { | |
34047 | if (node->fold == fold) { | |
34048 | ||
34049 | return(node->data); | |
34050 | } | |
34051 | ||
34052 | node = ha_chain_get_next(node); | |
34053 | } | |
34054 | ||
34055 | return(((void *)0)); | |
34056 | } | |
34057 | ||
34058 | ||
34059 | ||
34060 | static inline | |
34061 | ha_node_t* | |
34062 | ha_search_with_data( | |
34063 | ||
34064 | ||
34065 | ||
34066 | hash_table_t* table, | |
34067 | ulint fold, | |
34068 | void* data) | |
34069 | { | |
34070 | ha_node_t* node; | |
34071 | ||
34072 | ||
34073 | ||
34074 | ||
34075 | ||
34076 | node = ha_chain_get_first(table, fold); | |
34077 | ||
34078 | while (node) { | |
34079 | if (node->data == data) { | |
34080 | ||
34081 | return(node); | |
34082 | } | |
34083 | ||
34084 | node = ha_chain_get_next(node); | |
34085 | } | |
34086 | ||
34087 | return(((void *)0)); | |
34088 | } | |
34089 | ||
34090 | ||
34091 | ||
34092 | ||
34093 | static inline | |
34094 | ulint | |
34095 | ha_search_and_delete_if_found( | |
34096 | ||
34097 | ||
34098 | hash_table_t* table, | |
34099 | ulint fold, | |
34100 | void* data) | |
34101 | { | |
34102 | ha_node_t* node; | |
34103 | ||
34104 | ||
34105 | ||
34106 | ||
34107 | ||
34108 | node = ha_search_with_data(table, fold, data); | |
34109 | ||
34110 | if (node) { | |
34111 | ha_delete_hash_node(table, node); | |
34112 | ||
34113 | return((1)); | |
34114 | } | |
34115 | ||
34116 | return((0)); | |
34117 | } | |
34118 | ||
34119 | ||
34120 | ||
34121 | ||
34122 | static inline | |
34123 | ulint | |
34124 | ha_insert_for_fold_mutex( | |
34125 | ||
34126 | ||
34127 | ||
34128 | hash_table_t* table, | |
34129 | ulint fold, | |
34130 | ||
34131 | ||
34132 | ||
34133 | void* data) | |
34134 | { | |
34135 | ulint ret; | |
34136 | ||
34137 | hash_mutex_enter(table, fold); | |
34138 | ||
34139 | ret = ha_insert_for_fold(table, fold, data); | |
34140 | ||
34141 | hash_mutex_exit(table, fold); | |
34142 | ||
34143 | return(ret); | |
34144 | } | |
34145 | # 146 "./include/ha0ha.h" 2 | |
34146 | # 20 "./include/btr0cur.h" 2 | |
34147 | # 32 "./include/btr0cur.h" | |
34148 | static inline | |
34149 | page_cur_t* | |
34150 | btr_cur_get_page_cur( | |
34151 | ||
34152 | ||
34153 | btr_cur_t* cursor); | |
34154 | ||
34155 | ||
34156 | static inline | |
34157 | rec_t* | |
34158 | btr_cur_get_rec( | |
34159 | ||
34160 | ||
34161 | btr_cur_t* cursor); | |
34162 | ||
34163 | ||
34164 | static inline | |
34165 | void | |
34166 | btr_cur_invalidate( | |
34167 | ||
34168 | btr_cur_t* cursor); | |
34169 | ||
34170 | ||
34171 | static inline | |
34172 | ib_page_t* | |
34173 | btr_cur_get_page( | |
34174 | ||
34175 | ||
34176 | btr_cur_t* cursor); | |
34177 | ||
34178 | ||
34179 | static inline | |
34180 | dict_tree_t* | |
34181 | btr_cur_get_tree( | |
34182 | ||
34183 | ||
34184 | btr_cur_t* cursor); | |
34185 | ||
34186 | ||
34187 | static inline | |
34188 | void | |
34189 | btr_cur_position( | |
34190 | ||
34191 | dict_index_t* index, | |
34192 | rec_t* rec, | |
34193 | btr_cur_t* cursor); | |
34194 | # 86 "./include/btr0cur.h" | |
34195 | void | |
34196 | btr_cur_search_to_nth_level( | |
34197 | ||
34198 | dict_index_t* index, | |
34199 | ulint level, | |
34200 | dtuple_t* tuple, | |
34201 | ||
34202 | ||
34203 | ulint mode, | |
34204 | ||
34205 | ||
34206 | ||
34207 | ||
34208 | ||
34209 | ||
34210 | ulint latch_mode, | |
34211 | # 111 "./include/btr0cur.h" | |
34212 | btr_cur_t* cursor, | |
34213 | ||
34214 | ulint has_search_latch, | |
34215 | ||
34216 | ||
34217 | mtr_t* mtr); | |
34218 | ||
34219 | ||
34220 | ||
34221 | void | |
34222 | btr_cur_open_at_index_side( | |
34223 | ||
34224 | ulint from_left, | |
34225 | ||
34226 | dict_index_t* index, | |
34227 | ulint latch_mode, | |
34228 | btr_cur_t* cursor, | |
34229 | mtr_t* mtr); | |
34230 | ||
34231 | ||
34232 | ||
34233 | void | |
34234 | btr_cur_open_at_rnd_pos( | |
34235 | ||
34236 | dict_index_t* index, | |
34237 | ulint latch_mode, | |
34238 | btr_cur_t* cursor, | |
34239 | mtr_t* mtr); | |
34240 | ||
34241 | ||
34242 | ||
34243 | ||
34244 | ||
34245 | ||
34246 | ||
34247 | ulint | |
34248 | btr_cur_optimistic_insert( | |
34249 | ||
34250 | ||
34251 | ||
34252 | ulint flags, | |
34253 | ||
34254 | ||
34255 | btr_cur_t* cursor, | |
34256 | ||
34257 | dtuple_t* entry, | |
34258 | rec_t** rec, | |
34259 | ||
34260 | big_rec_t** big_rec, | |
34261 | ||
34262 | ||
34263 | que_thr_t* thr, | |
34264 | mtr_t* mtr); | |
34265 | ||
34266 | ||
34267 | ||
34268 | ||
34269 | ||
34270 | ||
34271 | ulint | |
34272 | btr_cur_pessimistic_insert( | |
34273 | ||
34274 | ||
34275 | ulint flags, | |
34276 | ||
34277 | ||
34278 | ||
34279 | ||
34280 | ||
34281 | btr_cur_t* cursor, | |
34282 | ||
34283 | dtuple_t* entry, | |
34284 | rec_t** rec, | |
34285 | ||
34286 | big_rec_t** big_rec, | |
34287 | ||
34288 | ||
34289 | que_thr_t* thr, | |
34290 | mtr_t* mtr); | |
34291 | ||
34292 | ||
34293 | ||
34294 | ulint | |
34295 | btr_cur_update_in_place( | |
34296 | ||
34297 | ||
34298 | ulint flags, | |
34299 | btr_cur_t* cursor, | |
34300 | ||
34301 | ||
34302 | upd_t* update, | |
34303 | ulint cmpl_info, | |
34304 | ||
34305 | que_thr_t* thr, | |
34306 | mtr_t* mtr); | |
34307 | ||
34308 | ||
34309 | ||
34310 | ||
34311 | ||
34312 | ||
34313 | ulint | |
34314 | btr_cur_optimistic_update( | |
34315 | ||
34316 | ||
34317 | ||
34318 | ||
34319 | ulint flags, | |
34320 | btr_cur_t* cursor, | |
34321 | ||
34322 | ||
34323 | upd_t* update, | |
34324 | ||
34325 | ulint cmpl_info, | |
34326 | ||
34327 | que_thr_t* thr, | |
34328 | mtr_t* mtr); | |
34329 | ||
34330 | ||
34331 | ||
34332 | ||
34333 | ||
34334 | ||
34335 | ulint | |
34336 | btr_cur_pessimistic_update( | |
34337 | ||
34338 | ||
34339 | ulint flags, | |
34340 | ||
34341 | btr_cur_t* cursor, | |
34342 | big_rec_t** big_rec, | |
34343 | ||
34344 | upd_t* update, | |
34345 | ||
34346 | ||
34347 | ulint cmpl_info, | |
34348 | ||
34349 | que_thr_t* thr, | |
34350 | mtr_t* mtr); | |
34351 | ||
34352 | ||
34353 | ||
34354 | ||
34355 | ||
34356 | ||
34357 | ulint | |
34358 | btr_cur_del_mark_set_clust_rec( | |
34359 | ||
34360 | ||
34361 | ||
34362 | ulint flags, | |
34363 | btr_cur_t* cursor, | |
34364 | ulint val, | |
34365 | que_thr_t* thr, | |
34366 | mtr_t* mtr); | |
34367 | ||
34368 | ||
34369 | ||
34370 | ulint | |
34371 | btr_cur_del_mark_set_sec_rec( | |
34372 | ||
34373 | ||
34374 | ||
34375 | ulint flags, | |
34376 | btr_cur_t* cursor, | |
34377 | ulint val, | |
34378 | que_thr_t* thr, | |
34379 | mtr_t* mtr); | |
34380 | ||
34381 | ||
34382 | ||
34383 | ||
34384 | void | |
34385 | btr_cur_del_unmark_for_ibuf( | |
34386 | ||
34387 | rec_t* rec, | |
34388 | mtr_t* mtr); | |
34389 | ||
34390 | ||
34391 | ||
34392 | ||
34393 | ||
34394 | ||
34395 | ||
34396 | void | |
34397 | btr_cur_compress( | |
34398 | ||
34399 | btr_cur_t* cursor, | |
34400 | ||
34401 | mtr_t* mtr); | |
34402 | ||
34403 | ||
34404 | ||
34405 | ||
34406 | ||
34407 | ||
34408 | ||
34409 | ulint | |
34410 | btr_cur_compress_if_useful( | |
34411 | ||
34412 | ||
34413 | btr_cur_t* cursor, | |
34414 | ||
34415 | ||
34416 | mtr_t* mtr); | |
34417 | ||
34418 | ||
34419 | ||
34420 | ||
34421 | ||
34422 | ulint | |
34423 | btr_cur_optimistic_delete( | |
34424 | ||
34425 | ||
34426 | ||
34427 | btr_cur_t* cursor, | |
34428 | ||
34429 | ||
34430 | ||
34431 | mtr_t* mtr); | |
34432 | # 339 "./include/btr0cur.h" | |
34433 | ulint | |
34434 | btr_cur_pessimistic_delete( | |
34435 | ||
34436 | ||
34437 | ulint* err, | |
34438 | ||
34439 | ||
34440 | ||
34441 | ||
34442 | ulint has_reserved_extents, | |
34443 | ||
34444 | ||
34445 | ||
34446 | btr_cur_t* cursor, | |
34447 | ||
34448 | ||
34449 | ||
34450 | ulint in_rollback, | |
34451 | mtr_t* mtr); | |
34452 | ||
34453 | ||
34454 | ||
34455 | unsigned char* | |
34456 | btr_cur_parse_update_in_place( | |
34457 | ||
34458 | ||
34459 | unsigned char* ptr, | |
34460 | unsigned char* end_ptr, | |
34461 | ib_page_t* page, | |
34462 | dict_index_t* index); | |
34463 | ||
34464 | ||
34465 | ||
34466 | ||
34467 | unsigned char* | |
34468 | btr_cur_parse_del_mark_set_clust_rec( | |
34469 | ||
34470 | ||
34471 | unsigned char* ptr, | |
34472 | unsigned char* end_ptr, | |
34473 | dict_index_t* index, | |
34474 | ib_page_t* page); | |
34475 | ||
34476 | ||
34477 | ||
34478 | ||
34479 | unsigned char* | |
34480 | btr_cur_parse_del_mark_set_sec_rec( | |
34481 | ||
34482 | ||
34483 | unsigned char* ptr, | |
34484 | unsigned char* end_ptr, | |
34485 | ib_page_t* page); | |
34486 | ||
34487 | ||
34488 | ||
34489 | ib_longlong | |
34490 | btr_estimate_n_rows_in_range( | |
34491 | ||
34492 | ||
34493 | dict_index_t* index, | |
34494 | dtuple_t* tuple1, | |
34495 | ulint mode1, | |
34496 | dtuple_t* tuple2, | |
34497 | ulint mode2); | |
34498 | ||
34499 | ||
34500 | ||
34501 | ||
34502 | ||
34503 | void | |
34504 | btr_estimate_number_of_different_key_vals( | |
34505 | ||
34506 | dict_index_t* index); | |
34507 | ||
34508 | ||
34509 | ||
34510 | ||
34511 | ||
34512 | ||
34513 | void | |
34514 | btr_cur_mark_extern_inherited_fields( | |
34515 | ||
34516 | rec_t* rec, | |
34517 | const ulint* offsets, | |
34518 | upd_t* update, | |
34519 | mtr_t* mtr); | |
34520 | ||
34521 | ||
34522 | ||
34523 | ||
34524 | ||
34525 | void | |
34526 | btr_cur_mark_dtuple_inherited_extern( | |
34527 | ||
34528 | dtuple_t* entry, | |
34529 | ||
34530 | ulint* ext_vec, | |
34531 | ||
34532 | ulint n_ext_vec, | |
34533 | upd_t* update); | |
34534 | ||
34535 | ||
34536 | ||
34537 | void | |
34538 | btr_cur_unmark_dtuple_extern_fields( | |
34539 | ||
34540 | dtuple_t* entry, | |
34541 | ulint* ext_vec, | |
34542 | ||
34543 | ulint n_ext_vec); | |
34544 | ||
34545 | ||
34546 | ||
34547 | ||
34548 | ||
34549 | ulint | |
34550 | btr_store_big_rec_extern_fields( | |
34551 | ||
34552 | ||
34553 | dict_index_t* index, | |
34554 | ||
34555 | rec_t* rec, | |
34556 | const ulint* offsets, | |
34557 | ||
34558 | ||
34559 | ||
34560 | big_rec_t* big_rec_vec, | |
34561 | ||
34562 | mtr_t* local_mtr); | |
34563 | ||
34564 | ||
34565 | ||
34566 | ||
34567 | ||
34568 | ||
34569 | ||
34570 | void | |
34571 | btr_free_externally_stored_field( | |
34572 | ||
34573 | dict_index_t* index, | |
34574 | ||
34575 | ||
34576 | ||
34577 | ||
34578 | ||
34579 | ||
34580 | ||
34581 | unsigned char* data, | |
34582 | ||
34583 | ||
34584 | ulint local_len, | |
34585 | ulint do_not_free_inherited, | |
34586 | ||
34587 | ||
34588 | mtr_t* local_mtr); | |
34589 | ||
34590 | ||
34591 | ||
34592 | ||
34593 | ||
34594 | void | |
34595 | btr_rec_free_externally_stored_fields( | |
34596 | ||
34597 | dict_index_t* index, | |
34598 | ||
34599 | rec_t* rec, | |
34600 | const ulint* offsets, | |
34601 | ulint do_not_free_inherited, | |
34602 | ||
34603 | ||
34604 | mtr_t* mtr); | |
34605 | ||
34606 | ||
34607 | ||
34608 | ||
34609 | ||
34610 | unsigned char* | |
34611 | btr_rec_copy_externally_stored_field( | |
34612 | ||
34613 | ||
34614 | rec_t* rec, | |
34615 | const ulint* offsets, | |
34616 | ulint no, | |
34617 | ulint* len, | |
34618 | mem_heap_t* heap); | |
34619 | ||
34620 | ||
34621 | ||
34622 | ||
34623 | ||
34624 | ||
34625 | unsigned char* | |
34626 | btr_copy_externally_stored_field( | |
34627 | ||
34628 | ||
34629 | ulint* len, | |
34630 | unsigned char* data, | |
34631 | ||
34632 | ||
34633 | ulint local_len, | |
34634 | mem_heap_t* heap); | |
34635 | ||
34636 | ||
34637 | ||
34638 | ||
34639 | ||
34640 | ||
34641 | ||
34642 | ulint | |
34643 | btr_push_update_extern_fields( | |
34644 | ||
34645 | ||
34646 | ulint* ext_vect, | |
34647 | ||
34648 | const ulint* offsets, | |
34649 | upd_t* update); | |
34650 | # 568 "./include/btr0cur.h" | |
34651 | typedef struct btr_path_struct btr_path_t; | |
34652 | struct btr_path_struct{ | |
34653 | ulint nth_rec; | |
34654 | ||
34655 | ||
34656 | ||
34657 | ||
34658 | ulint n_recs; | |
34659 | }; | |
34660 | ||
34661 | ||
34662 | ||
34663 | ||
34664 | ||
34665 | ||
34666 | struct btr_cur_struct { | |
34667 | dict_index_t* index; | |
34668 | page_cur_t page_cur; | |
34669 | ib_page_t* left_page; | |
34670 | ||
34671 | ||
34672 | ||
34673 | que_thr_t* thr; | |
34674 | ||
34675 | ||
34676 | ||
34677 | ||
34678 | ||
34679 | ||
34680 | ||
34681 | ulint flag; | |
34682 | ||
34683 | ||
34684 | ulint tree_height; | |
34685 | ||
34686 | ||
34687 | ulint up_match; | |
34688 | # 618 "./include/btr0cur.h" | |
34689 | ulint up_bytes; | |
34690 | ||
34691 | ||
34692 | ||
34693 | ulint low_match; | |
34694 | ||
34695 | ||
34696 | ||
34697 | ||
34698 | ||
34699 | ||
34700 | ||
34701 | ulint low_bytes; | |
34702 | ||
34703 | ||
34704 | ||
34705 | ulint n_fields; | |
34706 | ||
34707 | ulint n_bytes; | |
34708 | ||
34709 | ulint fold; | |
34710 | ||
34711 | ||
34712 | btr_path_t* path_arr; | |
34713 | ||
34714 | ||
34715 | ||
34716 | }; | |
34717 | # 695 "./include/btr0cur.h" | |
34718 | extern ulint btr_cur_n_non_sea; | |
34719 | extern ulint btr_cur_n_sea; | |
34720 | extern ulint btr_cur_n_non_sea_old; | |
34721 | extern ulint btr_cur_n_sea_old; | |
34722 | ||
34723 | ||
34724 | ||
34725 | void innobase_mysql_thd_init_innodb_scan_cont(); | |
34726 | void innobase_mysql_thd_increment_innodb_scan_cont(ulong length); | |
34727 | void innobase_mysql_thd_init_innodb_scan_jump(); | |
34728 | void innobase_mysql_thd_increment_innodb_scan_jump(ulong length); | |
34729 | void innobase_mysql_thd_init_innodb_scan_data(); | |
34730 | void innobase_mysql_thd_increment_innodb_scan_data(ulong length); | |
34731 | void innobase_mysql_thd_init_innodb_scan_garbage(); | |
34732 | void innobase_mysql_thd_increment_innodb_scan_garbage(ulong length); | |
34733 | ||
34734 | ||
34735 | # 1 "./include/btr0cur.ic" 1 | |
34736 | # 9 "./include/btr0cur.ic" | |
34737 | # 1 "./include/btr0btr.h" 1 | |
34738 | # 10 "./include/btr0cur.ic" 2 | |
34739 | ||
34740 | ||
34741 | ||
34742 | static inline | |
34743 | page_cur_t* | |
34744 | btr_cur_get_page_cur( | |
34745 | ||
34746 | ||
34747 | btr_cur_t* cursor) | |
34748 | { | |
34749 | return(&(cursor->page_cur)); | |
34750 | } | |
34751 | ||
34752 | ||
34753 | ||
34754 | static inline | |
34755 | rec_t* | |
34756 | btr_cur_get_rec( | |
34757 | ||
34758 | ||
34759 | btr_cur_t* cursor) | |
34760 | { | |
34761 | return(page_cur_get_rec(&(cursor->page_cur))); | |
34762 | } | |
34763 | ||
34764 | ||
34765 | ||
34766 | static inline | |
34767 | void | |
34768 | btr_cur_invalidate( | |
34769 | ||
34770 | btr_cur_t* cursor) | |
34771 | { | |
34772 | page_cur_invalidate(&(cursor->page_cur)); | |
34773 | } | |
34774 | ||
34775 | ||
34776 | ||
34777 | static inline | |
34778 | ib_page_t* | |
34779 | btr_cur_get_page( | |
34780 | ||
34781 | ||
34782 | btr_cur_t* cursor) | |
34783 | { | |
34784 | return(buf_frame_align(page_cur_get_rec(&(cursor->page_cur)))); | |
34785 | } | |
34786 | ||
34787 | ||
34788 | ||
34789 | static inline | |
34790 | dict_tree_t* | |
34791 | btr_cur_get_tree( | |
34792 | ||
34793 | ||
34794 | btr_cur_t* cursor) | |
34795 | { | |
34796 | return((cursor->index)->tree); | |
34797 | } | |
34798 | ||
34799 | ||
34800 | ||
34801 | static inline | |
34802 | void | |
34803 | btr_cur_position( | |
34804 | ||
34805 | dict_index_t* index, | |
34806 | rec_t* rec, | |
34807 | btr_cur_t* cursor) | |
34808 | { | |
34809 | page_cur_position(rec, btr_cur_get_page_cur(cursor)); | |
34810 | ||
34811 | cursor->index = index; | |
34812 | } | |
34813 | ||
34814 | ||
34815 | ||
34816 | ||
34817 | static inline | |
34818 | ulint | |
34819 | btr_cur_compress_recommendation( | |
34820 | ||
34821 | ||
34822 | btr_cur_t* cursor, | |
34823 | mtr_t* mtr) | |
34824 | { | |
34825 | ib_page_t* page; | |
34826 | ||
34827 | ; | |
34828 | ||
34829 | ||
34830 | ||
34831 | page = btr_cur_get_page(cursor); | |
34832 | ||
34833 | if ((page_get_data_size(page) < ((2 * 8192) / 2)) | |
34834 | || ((btr_page_get_next(page, mtr) == 0xFFFFFFFF) | |
34835 | && (btr_page_get_prev(page, mtr) == 0xFFFFFFFF))) { | |
34836 | ||
34837 | ||
34838 | ||
34839 | ||
34840 | ||
34841 | ||
34842 | if (dict_tree_get_page((cursor->index)->tree) | |
34843 | == buf_frame_get_page_no(page)) { | |
34844 | ||
34845 | ||
34846 | ||
34847 | return((0)); | |
34848 | } | |
34849 | ||
34850 | return((1)); | |
34851 | } | |
34852 | ||
34853 | return((0)); | |
34854 | } | |
34855 | ||
34856 | ||
34857 | ||
34858 | ||
34859 | static inline | |
34860 | ulint | |
34861 | btr_cur_can_delete_without_compress( | |
34862 | ||
34863 | ||
34864 | ||
34865 | btr_cur_t* cursor, | |
34866 | ulint rec_size, | |
34867 | mtr_t* mtr) | |
34868 | { | |
34869 | ib_page_t* page; | |
34870 | ||
34871 | ; | |
34872 | ||
34873 | ||
34874 | ||
34875 | page = btr_cur_get_page(cursor); | |
34876 | ||
34877 | if ((page_get_data_size(page) - rec_size < ((2 * 8192) / 2)) | |
34878 | || ((btr_page_get_next(page, mtr) == 0xFFFFFFFF) | |
34879 | && (btr_page_get_prev(page, mtr) == 0xFFFFFFFF)) | |
34880 | || (page_get_n_recs(page) < 2)) { | |
34881 | ||
34882 | ||
34883 | ||
34884 | ||
34885 | ||
34886 | ||
34887 | if (dict_tree_get_page((cursor->index)->tree) | |
34888 | == buf_frame_get_page_no(page)) { | |
34889 | ||
34890 | ||
34891 | ||
34892 | return((1)); | |
34893 | } | |
34894 | ||
34895 | return((0)); | |
34896 | } | |
34897 | ||
34898 | return((1)); | |
34899 | } | |
34900 | # 713 "./include/btr0cur.h" 2 | |
34901 | # 21 "./include/lock0lock.ic" 2 | |
34902 | ||
34903 | ||
34904 | ||
34905 | ||
34906 | ||
34907 | ||
34908 | static inline | |
34909 | ulint | |
34910 | lock_rec_fold( | |
34911 | ||
34912 | ||
34913 | ulint space, | |
34914 | ulint page_no) | |
34915 | { | |
34916 | return(ut_fold_ulint_pair(space, page_no)); | |
34917 | } | |
34918 | ||
34919 | ||
34920 | ||
34921 | ||
34922 | static inline | |
34923 | ulint | |
34924 | lock_rec_hash( | |
34925 | ||
34926 | ||
34927 | ulint space, | |
34928 | ulint page_no) | |
34929 | { | |
34930 | return(hash_calc_hash(lock_rec_fold(space, page_no), | |
34931 | lock_sys->rec_hash)); | |
34932 | } | |
34933 | ||
34934 | ||
34935 | ||
34936 | ||
34937 | static inline | |
34938 | trx_t* | |
34939 | lock_clust_rec_some_has_impl( | |
34940 | ||
34941 | ||
34942 | ||
34943 | rec_t* rec, | |
34944 | dict_index_t* index, | |
34945 | const ulint* offsets) | |
34946 | { | |
34947 | dulint trx_id; | |
34948 | ||
34949 | ||
34950 | ||
34951 | ||
34952 | ; | |
34953 | ; | |
34954 | ||
34955 | trx_id = row_get_rec_trx_id(rec, index, offsets); | |
34956 | ||
34957 | if (trx_is_active(trx_id)) { | |
34958 | ||
34959 | ||
34960 | return(trx_get_on_id(trx_id)); | |
34961 | } | |
34962 | ||
34963 | return(((void *)0)); | |
34964 | } | |
34965 | # 679 "./include/lock0lock.h" 2 | |
34966 | # 33 "buf/buf0buf.c" 2 | |
34967 | # 1 "./include/btr0sea.h" 1 | |
34968 | # 23 "./include/btr0sea.h" | |
34969 | void | |
34970 | btr_search_sys_create( | |
34971 | ||
34972 | ulint hash_size); | |
34973 | ||
34974 | ||
34975 | static inline | |
34976 | btr_search_t* | |
34977 | btr_search_get_info( | |
34978 | ||
34979 | ||
34980 | dict_index_t* index); | |
34981 | ||
34982 | ||
34983 | ||
34984 | btr_search_t* | |
34985 | btr_search_info_create( | |
34986 | ||
34987 | ||
34988 | mem_heap_t* heap); | |
34989 | ||
34990 | ||
34991 | ||
34992 | ulint | |
34993 | btr_search_info_get_ref_count( | |
34994 | ||
34995 | ||
34996 | btr_search_t* info); | |
34997 | ||
34998 | ||
34999 | static inline | |
35000 | void | |
35001 | btr_search_info_update( | |
35002 | ||
35003 | dict_index_t* index, | |
35004 | btr_cur_t* cursor); | |
35005 | ||
35006 | ||
35007 | ||
35008 | ||
35009 | ||
35010 | ||
35011 | ulint | |
35012 | btr_search_guess_on_hash( | |
35013 | ||
35014 | ||
35015 | dict_index_t* index, | |
35016 | btr_search_t* info, | |
35017 | dtuple_t* tuple, | |
35018 | ulint mode, | |
35019 | ulint latch_mode, | |
35020 | btr_cur_t* cursor, | |
35021 | ulint has_search_latch, | |
35022 | ||
35023 | ||
35024 | mtr_t* mtr); | |
35025 | ||
35026 | ||
35027 | ||
35028 | ||
35029 | ||
35030 | ||
35031 | void | |
35032 | btr_search_move_or_delete_hash_entries( | |
35033 | ||
35034 | ib_page_t* new_page, | |
35035 | ||
35036 | ib_page_t* page, | |
35037 | dict_index_t* index); | |
35038 | ||
35039 | ||
35040 | ||
35041 | void | |
35042 | btr_search_drop_page_hash_index( | |
35043 | ||
35044 | ib_page_t* page); | |
35045 | ||
35046 | ||
35047 | ||
35048 | ||
35049 | void | |
35050 | btr_search_drop_page_hash_when_freed( | |
35051 | ||
35052 | ulint space, | |
35053 | ulint page_no); | |
35054 | ||
35055 | ||
35056 | ||
35057 | void | |
35058 | btr_search_update_hash_node_on_insert( | |
35059 | ||
35060 | btr_cur_t* cursor); | |
35061 | ||
35062 | ||
35063 | ||
35064 | ||
35065 | ||
35066 | ||
35067 | void | |
35068 | btr_search_update_hash_on_insert( | |
35069 | ||
35070 | btr_cur_t* cursor); | |
35071 | ||
35072 | ||
35073 | ||
35074 | ||
35075 | ||
35076 | ||
35077 | void | |
35078 | btr_search_update_hash_on_delete( | |
35079 | ||
35080 | btr_cur_t* cursor); | |
35081 | ||
35082 | ||
35083 | ||
35084 | ||
35085 | ||
35086 | ulint | |
35087 | btr_search_validate(void); | |
35088 | # 153 "./include/btr0sea.h" | |
35089 | struct btr_search_struct{ | |
35090 | ulint magic_n; | |
35091 | ulint ref_count; | |
35092 | ||
35093 | ||
35094 | ||
35095 | ||
35096 | ||
35097 | ||
35098 | ||
35099 | rec_t* last_search; | |
35100 | ||
35101 | ulint n_direction; | |
35102 | ||
35103 | ulint direction; | |
35104 | ||
35105 | ||
35106 | dulint modify_clock; | |
35107 | ||
35108 | ||
35109 | ||
35110 | ||
35111 | ||
35112 | ib_page_t* root_guess; | |
35113 | ||
35114 | ulint hash_analysis; | |
35115 | ||
35116 | ||
35117 | ulint last_hash_succ; | |
35118 | ||
35119 | ||
35120 | ||
35121 | ||
35122 | ulint n_hash_potential; | |
35123 | ||
35124 | ||
35125 | ||
35126 | ulint n_fields; | |
35127 | ||
35128 | ulint n_bytes; | |
35129 | ||
35130 | ulint side; | |
35131 | ||
35132 | ||
35133 | ||
35134 | ||
35135 | ||
35136 | ulint n_hash_succ; | |
35137 | ||
35138 | ulint n_hash_fail; | |
35139 | ulint n_patt_succ; | |
35140 | ||
35141 | ulint n_searches; | |
35142 | }; | |
35143 | ||
35144 | ||
35145 | ||
35146 | ||
35147 | ||
35148 | typedef struct btr_search_sys_struct btr_search_sys_t; | |
35149 | ||
35150 | struct btr_search_sys_struct{ | |
35151 | hash_table_t* hash_index; | |
35152 | }; | |
35153 | ||
35154 | extern btr_search_sys_t* btr_search_sys; | |
35155 | # 232 "./include/btr0sea.h" | |
35156 | extern rw_lock_t* btr_search_latch_temp; | |
35157 | ||
35158 | ||
35159 | ||
35160 | ||
35161 | ||
35162 | ||
35163 | extern ulint btr_search_n_hash_fail; | |
35164 | # 267 "./include/btr0sea.h" | |
35165 | # 1 "./include/btr0sea.ic" 1 | |
35166 | # 16 "./include/btr0sea.ic" | |
35167 | void | |
35168 | btr_search_info_update_slow( | |
35169 | ||
35170 | btr_search_t* info, | |
35171 | btr_cur_t* cursor); | |
35172 | ||
35173 | ||
35174 | ||
35175 | static inline | |
35176 | btr_search_t* | |
35177 | btr_search_get_info( | |
35178 | ||
35179 | ||
35180 | dict_index_t* index) | |
35181 | { | |
35182 | ; | |
35183 | ||
35184 | return(index->search_info); | |
35185 | } | |
35186 | ||
35187 | ||
35188 | ||
35189 | static inline | |
35190 | void | |
35191 | btr_search_info_update( | |
35192 | ||
35193 | dict_index_t* index, | |
35194 | btr_cur_t* cursor) | |
35195 | { | |
35196 | btr_search_t* info; | |
35197 | ||
35198 | ||
35199 | ||
35200 | ||
35201 | ||
35202 | ||
35203 | info = btr_search_get_info(index); | |
35204 | ||
35205 | info->hash_analysis++; | |
35206 | ||
35207 | if (info->hash_analysis < 17) { | |
35208 | ||
35209 | ||
35210 | ||
35211 | return; | |
35212 | ||
35213 | } | |
35214 | ||
35215 | ; | |
35216 | ||
35217 | btr_search_info_update_slow(info, cursor); | |
35218 | } | |
35219 | # 268 "./include/btr0sea.h" 2 | |
35220 | # 34 "buf/buf0buf.c" 2 | |
35221 | # 1 "./include/ibuf0ibuf.h" 1 | |
35222 | # 21 "./include/ibuf0ibuf.h" | |
35223 | extern ibuf_t* ibuf; | |
35224 | ||
35225 | ||
35226 | ||
35227 | ||
35228 | ||
35229 | ||
35230 | ||
35231 | ibuf_data_t* | |
35232 | ibuf_data_init_for_space( | |
35233 | ||
35234 | ||
35235 | ||
35236 | ulint space); | |
35237 | ||
35238 | ||
35239 | ||
35240 | ||
35241 | void | |
35242 | ibuf_init_at_db_start(void); | |
35243 | ||
35244 | ||
35245 | ||
35246 | ||
35247 | ||
35248 | void | |
35249 | ibuf_update_max_tablespace_id(void); | |
35250 | ||
35251 | ||
35252 | ||
35253 | ||
35254 | void | |
35255 | ibuf_bitmap_page_init( | |
35256 | ||
35257 | ib_page_t* page, | |
35258 | mtr_t* mtr); | |
35259 | ||
35260 | ||
35261 | ||
35262 | ||
35263 | ||
35264 | ||
35265 | void | |
35266 | ibuf_reset_free_bits_with_type( | |
35267 | ||
35268 | ulint type, | |
35269 | ib_page_t* page); | |
35270 | # 76 "./include/ibuf0ibuf.h" | |
35271 | void | |
35272 | ibuf_reset_free_bits( | |
35273 | ||
35274 | dict_index_t* index, | |
35275 | ib_page_t* page); | |
35276 | ||
35277 | ||
35278 | ||
35279 | ||
35280 | ||
35281 | ||
35282 | ||
35283 | static inline | |
35284 | void | |
35285 | ibuf_update_free_bits_if_full( | |
35286 | ||
35287 | dict_index_t* index, | |
35288 | ib_page_t* page, | |
35289 | ||
35290 | ||
35291 | ||
35292 | ||
35293 | ulint max_ins_size, | |
35294 | ||
35295 | ||
35296 | ulint increase); | |
35297 | ||
35298 | ||
35299 | ||
35300 | ||
35301 | ||
35302 | ||
35303 | ||
35304 | void | |
35305 | ibuf_update_free_bits_low( | |
35306 | ||
35307 | dict_index_t* index, | |
35308 | ib_page_t* page, | |
35309 | ulint max_ins_size, | |
35310 | ||
35311 | ||
35312 | mtr_t* mtr); | |
35313 | ||
35314 | ||
35315 | ||
35316 | ||
35317 | ||
35318 | void | |
35319 | ibuf_update_free_bits_for_two_pages_low( | |
35320 | ||
35321 | dict_index_t* index, | |
35322 | ib_page_t* page1, | |
35323 | ib_page_t* page2, | |
35324 | mtr_t* mtr); | |
35325 | ||
35326 | ||
35327 | ||
35328 | static inline | |
35329 | ulint | |
35330 | ibuf_should_try( | |
35331 | ||
35332 | dict_index_t* index, | |
35333 | ulint ignore_sec_unique); | |
35334 | ||
35335 | ||
35336 | ||
35337 | ||
35338 | ||
35339 | ||
35340 | ||
35341 | ulint | |
35342 | ibuf_inside(void); | |
35343 | ||
35344 | ||
35345 | ||
35346 | ||
35347 | ||
35348 | static inline | |
35349 | ulint | |
35350 | ibuf_bitmap_page( | |
35351 | ||
35352 | ||
35353 | ulint page_no); | |
35354 | ||
35355 | ||
35356 | ||
35357 | ulint | |
35358 | ibuf_page( | |
35359 | ||
35360 | ||
35361 | ulint space, | |
35362 | ulint page_no); | |
35363 | ||
35364 | ||
35365 | ||
35366 | ulint | |
35367 | ibuf_page_low( | |
35368 | ||
35369 | ||
35370 | ulint space, | |
35371 | ulint page_no, | |
35372 | mtr_t* mtr); | |
35373 | ||
35374 | ||
35375 | ||
35376 | ||
35377 | ||
35378 | ||
35379 | ||
35380 | void | |
35381 | ibuf_free_excess_pages( | |
35382 | ||
35383 | ulint space); | |
35384 | ||
35385 | ||
35386 | ||
35387 | ||
35388 | ||
35389 | ulint | |
35390 | ibuf_insert( | |
35391 | ||
35392 | ||
35393 | dtuple_t* entry, | |
35394 | dict_index_t* index, | |
35395 | ulint space, | |
35396 | ulint page_no, | |
35397 | que_thr_t* thr); | |
35398 | # 211 "./include/ibuf0ibuf.h" | |
35399 | void | |
35400 | ibuf_merge_or_delete_for_page( | |
35401 | ||
35402 | ib_page_t* page, | |
35403 | ||
35404 | ulint space, | |
35405 | ulint page_no, | |
35406 | ulint update_ibuf_bitmap); | |
35407 | # 228 "./include/ibuf0ibuf.h" | |
35408 | void | |
35409 | ibuf_delete_for_discarded_space( | |
35410 | ||
35411 | ulint space); | |
35412 | ||
35413 | ||
35414 | ||
35415 | ulint | |
35416 | ibuf_contract( | |
35417 | ||
35418 | ||
35419 | ||
35420 | ||
35421 | ulint sync); | |
35422 | ||
35423 | ||
35424 | ||
35425 | ||
35426 | ||
35427 | ulint | |
35428 | ibuf_contract_for_n_pages( | |
35429 | ||
35430 | ||
35431 | ||
35432 | ||
35433 | ulint sync, | |
35434 | ||
35435 | ||
35436 | ulint n_pages); | |
35437 | ||
35438 | ||
35439 | ||
35440 | ||
35441 | ||
35442 | unsigned char* | |
35443 | ibuf_parse_bitmap_init( | |
35444 | ||
35445 | ||
35446 | unsigned char* ptr, | |
35447 | unsigned char* end_ptr, | |
35448 | ib_page_t* page, | |
35449 | mtr_t* mtr); | |
35450 | ||
35451 | ||
35452 | ||
35453 | ulint | |
35454 | ibuf_count_get( | |
35455 | ||
35456 | ||
35457 | ||
35458 | ulint space, | |
35459 | ulint page_no); | |
35460 | ||
35461 | ||
35462 | ||
35463 | ulint | |
35464 | ibuf_is_empty(void); | |
35465 | ||
35466 | ||
35467 | ||
35468 | ||
35469 | ||
35470 | void | |
35471 | ibuf_print( | |
35472 | ||
35473 | FILE* file); | |
35474 | # 304 "./include/ibuf0ibuf.h" | |
35475 | # 1 "./include/ibuf0ibuf.ic" 1 | |
35476 | # 12 "./include/ibuf0ibuf.ic" | |
35477 | extern ulint ibuf_flush_count; | |
35478 | # 21 "./include/ibuf0ibuf.ic" | |
35479 | struct ibuf_data_struct{ | |
35480 | ulint space; | |
35481 | ulint seg_size; | |
35482 | ||
35483 | ulint size; | |
35484 | ulint empty; | |
35485 | ||
35486 | ||
35487 | ||
35488 | ulint free_list_len; | |
35489 | ||
35490 | ulint height; | |
35491 | dict_index_t* index; | |
35492 | struct { ibuf_data_t * prev; ibuf_data_t * next; } data_list; | |
35493 | ||
35494 | ulint n_inserts; | |
35495 | ||
35496 | ulint n_merges; | |
35497 | ulint n_merged_recs; | |
35498 | }; | |
35499 | ||
35500 | ||
35501 | ||
35502 | ||
35503 | ||
35504 | struct ibuf_struct{ | |
35505 | ulint size; | |
35506 | ||
35507 | ulint max_size; | |
35508 | ||
35509 | ulint meter; | |
35510 | ||
35511 | ||
35512 | ||
35513 | struct { ulint count; ibuf_data_t * start; ibuf_data_t * end; } data_list; | |
35514 | ||
35515 | ||
35516 | }; | |
35517 | ||
35518 | ||
35519 | ||
35520 | ||
35521 | ||
35522 | ||
35523 | ||
35524 | void | |
35525 | ibuf_set_free_bits( | |
35526 | ||
35527 | ulint type, | |
35528 | ib_page_t* page, | |
35529 | ||
35530 | ulint val, | |
35531 | ulint max_val); | |
35532 | ||
35533 | ||
35534 | ||
35535 | ||
35536 | ||
35537 | ||
35538 | static inline | |
35539 | ulint | |
35540 | ibuf_should_try( | |
35541 | ||
35542 | dict_index_t* index, | |
35543 | ulint ignore_sec_unique) | |
35544 | ||
35545 | ||
35546 | ||
35547 | { | |
35548 | if (!(index->type & 1) | |
35549 | && (ignore_sec_unique || !(index->type & 2)) | |
35550 | && ibuf->meter > 50) { | |
35551 | ||
35552 | ibuf_flush_count++; | |
35553 | ||
35554 | if (ibuf_flush_count % 8 == 0) { | |
35555 | ||
35556 | buf_LRU_try_free_flushed_blocks(); | |
35557 | } | |
35558 | ||
35559 | return((1)); | |
35560 | } | |
35561 | ||
35562 | return((0)); | |
35563 | } | |
35564 | ||
35565 | ||
35566 | ||
35567 | static inline | |
35568 | ulint | |
35569 | ibuf_bitmap_page( | |
35570 | ||
35571 | ||
35572 | ulint page_no) | |
35573 | { | |
35574 | if (page_no % (2 * 8192) == 1) { | |
35575 | ||
35576 | return((1)); | |
35577 | } | |
35578 | ||
35579 | return((0)); | |
35580 | } | |
35581 | ||
35582 | ||
35583 | ||
35584 | static inline | |
35585 | ulint | |
35586 | ibuf_index_page_calc_free_bits( | |
35587 | ||
35588 | ||
35589 | ulint max_ins_size) | |
35590 | ||
35591 | { | |
35592 | ulint n; | |
35593 | ||
35594 | n = max_ins_size / ((2 * 8192) / 32); | |
35595 | ||
35596 | if (n == 3) { | |
35597 | n = 2; | |
35598 | } | |
35599 | ||
35600 | if (n > 3) { | |
35601 | n = 3; | |
35602 | } | |
35603 | ||
35604 | return(n); | |
35605 | } | |
35606 | ||
35607 | ||
35608 | ||
35609 | static inline | |
35610 | ulint | |
35611 | ibuf_index_page_calc_free_from_bits( | |
35612 | ||
35613 | ||
35614 | ||
35615 | ulint bits) | |
35616 | { | |
35617 | ; | |
35618 | ||
35619 | if (bits == 3) { | |
35620 | return(4 * (2 * 8192) / 32); | |
35621 | } | |
35622 | ||
35623 | return(bits * (2 * 8192) / 32); | |
35624 | } | |
35625 | ||
35626 | ||
35627 | ||
35628 | static inline | |
35629 | ulint | |
35630 | ibuf_index_page_calc_free( | |
35631 | ||
35632 | ||
35633 | ib_page_t* page) | |
35634 | { | |
35635 | return(ibuf_index_page_calc_free_bits( | |
35636 | page_get_max_insert_size_after_reorganize(page, 1))); | |
35637 | } | |
35638 | ||
35639 | ||
35640 | ||
35641 | ||
35642 | ||
35643 | ||
35644 | static inline | |
35645 | void | |
35646 | ibuf_update_free_bits_if_full( | |
35647 | ||
35648 | dict_index_t* index, | |
35649 | ib_page_t* page, | |
35650 | ||
35651 | ||
35652 | ||
35653 | ||
35654 | ulint max_ins_size, | |
35655 | ||
35656 | ||
35657 | ulint increase) | |
35658 | ||
35659 | ||
35660 | { | |
35661 | ulint before; | |
35662 | ulint after; | |
35663 | ||
35664 | before = ibuf_index_page_calc_free_bits(max_ins_size); | |
35665 | ||
35666 | if (max_ins_size >= increase) { | |
35667 | ; | |
35668 | ||
35669 | after = ibuf_index_page_calc_free_bits(max_ins_size | |
35670 | - increase); | |
35671 | ||
35672 | ||
35673 | ||
35674 | } else { | |
35675 | after = ibuf_index_page_calc_free(page); | |
35676 | } | |
35677 | ||
35678 | if (after == 0) { | |
35679 | ||
35680 | ||
35681 | ||
35682 | ||
35683 | ||
35684 | buf_page_make_young(page); | |
35685 | } | |
35686 | ||
35687 | if (before > after) { | |
35688 | ibuf_set_free_bits(index->type, page, after, before); | |
35689 | } | |
35690 | } | |
35691 | # 305 "./include/ibuf0ibuf.h" 2 | |
35692 | # 35 "buf/buf0buf.c" 2 | |
35693 | # 1 "./include/dict0dict.h" 1 | |
35694 | # 36 "buf/buf0buf.c" 2 | |
35695 | # 1 "./include/log0recv.h" 1 | |
35696 | # 37 "buf/buf0buf.c" 2 | |
35697 | # 1 "./include/log0log.h" 1 | |
35698 | # 38 "buf/buf0buf.c" 2 | |
35699 | # 1 "./include/trx0undo.h" 1 | |
35700 | # 39 "buf/buf0buf.c" 2 | |
35701 | # 1 "./include/srv0srv.h" 1 | |
35702 | # 40 "buf/buf0buf.c" 2 | |
35703 | # 1 "./include/trx0trx.h" 1 | |
35704 | # 41 "buf/buf0buf.c" 2 | |
35705 | ||
35706 | ||
35707 | trx_t* innobase_get_trx(); | |
35708 | # 229 "buf/buf0buf.c" | |
35709 | static const int WAIT_FOR_READ = 20000; | |
35710 | ||
35711 | buf_pool_t* buf_pool = ((void *)0); | |
35712 | # 246 "buf/buf0buf.c" | |
35713 | ulint | |
35714 | buf_calc_page_new_checksum( | |
35715 | ||
35716 | ||
35717 | unsigned char* page) | |
35718 | { | |
35719 | ulint checksum; | |
35720 | # 262 "buf/buf0buf.c" | |
35721 | checksum = ut_fold_binary(page + 4, | |
35722 | 26 - 4) | |
35723 | + ut_fold_binary(page + 38, | |
35724 | (2 * 8192) - 38 | |
35725 | - 8); | |
35726 | checksum = checksum & 0xFFFFFFFFUL; | |
35727 | ||
35728 | return(checksum); | |
35729 | } | |
35730 | # 280 "buf/buf0buf.c" | |
35731 | ulint | |
35732 | buf_calc_page_old_checksum( | |
35733 | ||
35734 | ||
35735 | unsigned char* page) | |
35736 | { | |
35737 | ulint checksum; | |
35738 | ||
35739 | checksum = ut_fold_binary(page, 26); | |
35740 | ||
35741 | checksum = checksum & 0xFFFFFFFFUL; | |
35742 | ||
35743 | return(checksum); | |
35744 | } | |
35745 | ||
35746 | ||
35747 | ||
35748 | ||
35749 | ulint | |
35750 | buf_page_is_corrupted( | |
35751 | ||
35752 | ||
35753 | unsigned char* read_buf) | |
35754 | { | |
35755 | ulint checksum; | |
35756 | ulint old_checksum; | |
35757 | ulint checksum_field; | |
35758 | ulint old_checksum_field; | |
35759 | ||
35760 | dulint current_lsn; | |
35761 | ||
35762 | if (mach_read_from_4(read_buf + 16 + 4) | |
35763 | != mach_read_from_4(read_buf + (2 * 8192) | |
35764 | - 8 + 4)) { | |
35765 | ||
35766 | ||
35767 | ||
35768 | ||
35769 | return((1)); | |
35770 | } | |
35771 | ||
35772 | ||
35773 | if (recv_lsn_checks_on && log_peek_lsn(¤t_lsn)) { | |
35774 | if (ut_dulint_cmp(current_lsn, | |
35775 | mach_read_from_8(read_buf + 16)) | |
35776 | < 0) { | |
35777 | ut_print_timestamp(stderr); | |
35778 | ||
35779 | fprintf(stderr, | |
35780 | " InnoDB: Error: page %lu log sequence number %lu %lu\n" | |
35781 | "InnoDB: is in the future! Current system log sequence number %lu %lu.\n" | |
35782 | "InnoDB: Your database may be corrupt or you may have copied the InnoDB\n" | |
35783 | "InnoDB: tablespace but not the InnoDB log files. See\n" | |
35784 | "InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n" | |
35785 | "InnoDB: for more information.\n", | |
35786 | (ulong) mach_read_from_4(read_buf + 4), | |
35787 | (ulong) ut_dulint_get_high( | |
35788 | mach_read_from_8(read_buf + 16)), | |
35789 | (ulong) ut_dulint_get_low( | |
35790 | mach_read_from_8(read_buf + 16)), | |
35791 | (ulong) ut_dulint_get_high(current_lsn), | |
35792 | (ulong) ut_dulint_get_low(current_lsn)); | |
35793 | } | |
35794 | } | |
35795 | ||
35796 | ||
35797 | ||
35798 | ||
35799 | ||
35800 | ||
35801 | ||
35802 | if (srv_use_checksums) { | |
35803 | old_checksum = buf_calc_page_old_checksum(read_buf); | |
35804 | ||
35805 | old_checksum_field = mach_read_from_4(read_buf + (2 * 8192) | |
35806 | - 8); | |
35807 | ||
35808 | ||
35809 | ||
35810 | ||
35811 | ||
35812 | ||
35813 | if (old_checksum_field != mach_read_from_4(read_buf + 16) | |
35814 | && old_checksum_field != old_checksum | |
35815 | && old_checksum_field != 0xDEADBEEFUL) { | |
35816 | ||
35817 | return((1)); | |
35818 | } | |
35819 | ||
35820 | checksum = buf_calc_page_new_checksum(read_buf); | |
35821 | checksum_field = mach_read_from_4(read_buf + 0); | |
35822 | ||
35823 | ||
35824 | ||
35825 | ||
35826 | if (checksum_field != 0 && checksum_field != checksum | |
35827 | && checksum_field != 0xDEADBEEFUL) { | |
35828 | ||
35829 | return((1)); | |
35830 | } | |
35831 | } | |
35832 | ||
35833 | return((0)); | |
35834 | } | |
35835 | ||
35836 | ||
35837 | ||
35838 | ||
35839 | void | |
35840 | buf_page_print( | |
35841 | ||
35842 | unsigned char* read_buf) | |
35843 | { | |
35844 | dict_index_t* index; | |
35845 | ulint checksum; | |
35846 | ulint old_checksum; | |
35847 | ||
35848 | ut_print_timestamp(stderr); | |
35849 | fprintf(stderr, " InnoDB: Page dump in ascii and hex (%lu bytes):\n", | |
35850 | (ulint)(2 * 8192)); | |
35851 | ut_print_buf(stderr, read_buf, (2 * 8192)); | |
35852 | fputs("InnoDB: End of page dump\n", stderr); | |
35853 | ||
35854 | checksum = srv_use_checksums ? | |
35855 | buf_calc_page_new_checksum(read_buf) : 0xDEADBEEFUL; | |
35856 | old_checksum = srv_use_checksums ? | |
35857 | buf_calc_page_old_checksum(read_buf) : 0xDEADBEEFUL; | |
35858 | ||
35859 | ut_print_timestamp(stderr); | |
35860 | fprintf(stderr, | |
35861 | " InnoDB: Page checksum %lu, prior-to-4.0.14-form checksum %lu\n" | |
35862 | "InnoDB: stored checksum %lu, prior-to-4.0.14-form stored checksum %lu\n", | |
35863 | (ulong) checksum, (ulong) old_checksum, | |
35864 | (ulong) mach_read_from_4(read_buf + 0), | |
35865 | (ulong) mach_read_from_4(read_buf + (2 * 8192) | |
35866 | - 8)); | |
35867 | fprintf(stderr, | |
35868 | "InnoDB: Page lsn %lu %lu, low 4 bytes of lsn at page end %lu\n" | |
35869 | "InnoDB: Page number (if stored to page already) %lu,\n" | |
35870 | "InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) %lu\n", | |
35871 | (ulong) mach_read_from_4(read_buf + 16), | |
35872 | (ulong) mach_read_from_4(read_buf + 16 + 4), | |
35873 | (ulong) mach_read_from_4(read_buf + (2 * 8192) | |
35874 | - 8 + 4), | |
35875 | (ulong) mach_read_from_4(read_buf + 4), | |
35876 | (ulong) mach_read_from_4(read_buf + 34)); | |
35877 | ||
35878 | if (mach_read_from_2(read_buf + 38 + 0) | |
35879 | == 1) { | |
35880 | fprintf(stderr, | |
35881 | "InnoDB: Page may be an insert undo log page\n"); | |
35882 | } else if (mach_read_from_2(read_buf + 38 | |
35883 | + 0) | |
35884 | == 2) { | |
35885 | fprintf(stderr, | |
35886 | "InnoDB: Page may be an update undo log page\n"); | |
35887 | } | |
35888 | ||
35889 | if (fil_page_get_type(read_buf) == 17855) { | |
35890 | fprintf(stderr, | |
35891 | "InnoDB: Page may be an index page where index id is %lu %lu\n", | |
35892 | (ulong) ut_dulint_get_high(btr_page_get_index_id(read_buf)), | |
35893 | (ulong) ut_dulint_get_low(btr_page_get_index_id(read_buf))); | |
35894 | ||
35895 | ||
35896 | ||
35897 | ||
35898 | if (dict_sys != ((void *)0)) { | |
35899 | ||
35900 | index = dict_index_find_on_id_low( | |
35901 | btr_page_get_index_id(read_buf)); | |
35902 | if (index) { | |
35903 | fputs("InnoDB: (", stderr); | |
35904 | dict_index_name_print(stderr, ((void *)0), index); | |
35905 | fputs(")\n", stderr); | |
35906 | } | |
35907 | } | |
35908 | } else if (fil_page_get_type(read_buf) == 3) { | |
35909 | fputs("InnoDB: Page may be an 'inode' page\n", stderr); | |
35910 | } else if (fil_page_get_type(read_buf) == 4) { | |
35911 | fputs("InnoDB: Page may be an insert buffer free list page\n", | |
35912 | stderr); | |
35913 | } | |
35914 | } | |
35915 | ||
35916 | ||
35917 | ||
35918 | static | |
35919 | void | |
35920 | buf_block_init( | |
35921 | ||
35922 | buf_block_t* block, | |
35923 | unsigned char* frame) | |
35924 | ||
35925 | { | |
35926 | block->magic_n = 0; | |
35927 | ||
35928 | block->state = 211; | |
35929 | ||
35930 | block->frame = frame; | |
35931 | ||
35932 | block->awe_info = ((void *)0); | |
35933 | ||
35934 | block->buf_fix_count = 0; | |
35935 | block->io_fix = 0; | |
35936 | ||
35937 | block->modify_clock = ut_dulint_zero; | |
35938 | ||
35939 | block->file_page_was_freed = (0); | |
35940 | ||
35941 | block->check_index_page_at_flush = (0); | |
35942 | block->index = ((void *)0); | |
35943 | ||
35944 | block->in_free_list = (0); | |
35945 | block->in_LRU_list = (0); | |
35946 | ||
35947 | block->n_pointers = 0; | |
35948 | ||
35949 | mutex_create_func((&block->mutex), "buf/buf0buf.c", 498); | |
35950 | mutex_set_level(&block->mutex, 149); | |
35951 | ||
35952 | rw_lock_create_func((&(block->lock)), "buf/buf0buf.c", 501); | |
35953 | ; | |
35954 | ||
35955 | ||
35956 | ||
35957 | ||
35958 | ||
35959 | } | |
35960 | ||
35961 | ||
35962 | ||
35963 | ||
35964 | buf_pool_t* | |
35965 | buf_pool_init( | |
35966 | ||
35967 | ||
35968 | ||
35969 | ulint max_size, | |
35970 | ||
35971 | ulint curr_size, | |
35972 | ||
35973 | ||
35974 | ulint n_frames) | |
35975 | ||
35976 | ||
35977 | ||
35978 | ||
35979 | { | |
35980 | unsigned char* frame; | |
35981 | ulint i; | |
35982 | buf_block_t* block; | |
35983 | ||
35984 | do { if (__builtin_expect(!((ulint)(max_size == curr_size)), (0))) { ut_dbg_assertion_failed("max_size == curr_size", "buf/buf0buf.c", (ulint) 533); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 533); } while (0); } while (0); | |
35985 | do { if (__builtin_expect(!((ulint)(srv_use_awe || n_frames == max_size)), (0))) { ut_dbg_assertion_failed("srv_use_awe || n_frames == max_size", "buf/buf0buf.c", (ulint) 534); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 534); } while (0); } while (0); | |
35986 | ||
35987 | if (n_frames > curr_size) { | |
35988 | fprintf(stderr, | |
35989 | "InnoDB: AWE: Error: you must specify in my.cnf .._awe_mem_mb larger\n" | |
35990 | "InnoDB: than .._buffer_pool_size. Now the former is %lu pages,\n" | |
35991 | "InnoDB: the latter %lu pages.\n", (ulong) curr_size, (ulong) n_frames); | |
35992 | ||
35993 | return(((void *)0)); | |
35994 | } | |
35995 | ||
35996 | buf_pool = mem_alloc_func((sizeof(buf_pool_t)), "buf/buf0buf.c", 545); | |
35997 | ||
35998 | ||
35999 | ||
36000 | mutex_create_func((&(buf_pool->mutex)), "buf/buf0buf.c", 549); | |
36001 | mutex_set_level(&(buf_pool->mutex), 150); | |
36002 | ||
36003 | mutex_create_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 552); | |
36004 | mutex_create_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 553); | |
36005 | mutex_create_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 554); | |
36006 | rw_lock_create_func((&(buf_pool->hash_latch)), "buf/buf0buf.c", 555); | |
36007 | mutex_set_level(&(buf_pool->flush_list_mutex), 3000); | |
36008 | mutex_set_level(&(buf_pool->LRU_mutex), 3000); | |
36009 | mutex_set_level(&(buf_pool->free_mutex), 3000); | |
36010 | rw_lock_set_level(&(buf_pool->hash_latch), 3000); | |
36011 | ||
36012 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 561); | |
36013 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 562); | |
36014 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 563); | |
36015 | rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 564); | |
36016 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 565); | |
36017 | ||
36018 | if (srv_use_awe) { | |
36019 | ||
36020 | ||
36021 | ||
36022 | ||
36023 | buf_pool->frame_mem = os_awe_allocate_virtual_mem_window( | |
36024 | (2 * 8192) * (n_frames + 1)); | |
36025 | ||
36026 | ||
36027 | ||
36028 | ||
36029 | if ((curr_size % ((1024 * 1024) / (2 * 8192))) != 0) { | |
36030 | ||
36031 | fprintf(stderr, | |
36032 | "InnoDB: AWE: Error: physical memory must be allocated in full megabytes.\n" | |
36033 | "InnoDB: Trying to allocate %lu database pages.\n", | |
36034 | (ulong) curr_size); | |
36035 | ||
36036 | return(((void *)0)); | |
36037 | } | |
36038 | ||
36039 | if (!os_awe_allocate_physical_mem(&(buf_pool->awe_info), | |
36040 | curr_size / ((1024 * 1024) / (2 * 8192)))) { | |
36041 | ||
36042 | return(((void *)0)); | |
36043 | } | |
36044 | ||
36045 | } else { | |
36046 | buf_pool->frame_mem = os_mem_alloc_large( | |
36047 | (2 * 8192) * (n_frames + 1), | |
36048 | (1), (0)); | |
36049 | } | |
36050 | ||
36051 | if (buf_pool->frame_mem == ((void *)0)) { | |
36052 | ||
36053 | return(((void *)0)); | |
36054 | } | |
36055 | ||
36056 | buf_pool->blocks = ut_malloc(sizeof(buf_block_t) * max_size); | |
36057 | ||
36058 | if (buf_pool->blocks == ((void *)0)) { | |
36059 | ||
36060 | return(((void *)0)); | |
36061 | } | |
36062 | ||
36063 | buf_pool->max_size = max_size; | |
36064 | buf_pool->curr_size = curr_size; | |
36065 | ||
36066 | buf_pool->n_frames = n_frames; | |
36067 | ||
36068 | ||
36069 | ||
36070 | frame = ut_align(buf_pool->frame_mem, (2 * 8192)); | |
36071 | ||
36072 | buf_pool->frame_zero = frame; | |
36073 | buf_pool->high_end = frame + (2 * 8192) * n_frames; | |
36074 | ||
36075 | if (srv_use_awe) { | |
36076 | ||
36077 | ||
36078 | ||
36079 | ||
36080 | os_awe_map_physical_mem_to_window(buf_pool->frame_zero, | |
36081 | n_frames * | |
36082 | ((2 * 8192) / 4096), | |
36083 | buf_pool->awe_info); | |
36084 | ||
36085 | } | |
36086 | ||
36087 | buf_pool->blocks_of_frames = ut_malloc(sizeof(void*) * n_frames); | |
36088 | ||
36089 | if (buf_pool->blocks_of_frames == ((void *)0)) { | |
36090 | ||
36091 | return(((void *)0)); | |
36092 | } | |
36093 | ||
36094 | ||
36095 | ||
36096 | ||
36097 | ||
36098 | ||
36099 | for (i = 0; i < max_size; i++) { | |
36100 | ||
36101 | block = buf_pool_get_nth_block(buf_pool, i); | |
36102 | ||
36103 | if (i < n_frames) { | |
36104 | frame = buf_pool->frame_zero + i * (2 * 8192); | |
36105 | *(buf_pool->blocks_of_frames + i) = block; | |
36106 | } else { | |
36107 | frame = ((void *)0); | |
36108 | } | |
36109 | ||
36110 | buf_block_init(block, frame); | |
36111 | ||
36112 | if (srv_use_awe) { | |
36113 | ||
36114 | block->awe_info = buf_pool->awe_info | |
36115 | + i * ((2 * 8192) / 4096); | |
36116 | ||
36117 | } | |
36118 | } | |
36119 | ||
36120 | buf_pool->page_hash = hash0_create(2 * max_size); | |
36121 | buf_pool->io_counter_hash = ((void *)0); | |
36122 | buf_pool->io_counter_heap = ((void *)0); | |
36123 | buf_pool->io_counters = 0; | |
36124 | ||
36125 | buf_pool->n_pend_reads = 0; | |
36126 | ||
36127 | buf_pool->last_printout_time = time(((void *)0)); | |
36128 | ||
36129 | buf_pool->n_pages_read = 0; | |
36130 | buf_pool->n_pages_written = 0; | |
36131 | buf_pool->n_pages_created = 0; | |
36132 | buf_pool->n_pages_awe_remapped = 0; | |
36133 | ||
36134 | buf_pool->n_page_gets = 0; | |
36135 | buf_pool->n_page_gets_old = 0; | |
36136 | buf_pool->n_pages_read_old = 0; | |
36137 | buf_pool->n_pages_written_old = 0; | |
36138 | buf_pool->n_pages_created_old = 0; | |
36139 | buf_pool->n_pages_awe_remapped_old = 0; | |
36140 | ||
36141 | ||
36142 | ||
36143 | { (buf_pool->flush_list).count = 0; (buf_pool->flush_list).start = ((void *)0); (buf_pool->flush_list).end = ((void *)0);}; | |
36144 | ||
36145 | for (i = 1; i <= 3; i++) { | |
36146 | buf_pool->n_flush[i] = 0; | |
36147 | buf_pool->init_flush[i] = (0); | |
36148 | buf_pool->no_flush[i] = os_event_create(((void *)0)); | |
36149 | } | |
36150 | ||
36151 | buf_pool->LRU_flush_ended = 0; | |
36152 | ||
36153 | buf_pool->ulint_clock = 1; | |
36154 | buf_pool->freed_page_clock = 0; | |
36155 | ||
36156 | ||
36157 | ||
36158 | { (buf_pool->LRU).count = 0; (buf_pool->LRU).start = ((void *)0); (buf_pool->LRU).end = ((void *)0);}; | |
36159 | ||
36160 | buf_pool->LRU_old = ((void *)0); | |
36161 | ||
36162 | { (buf_pool->awe_LRU_free_mapped).count = 0; (buf_pool->awe_LRU_free_mapped).start = ((void *)0); (buf_pool->awe_LRU_free_mapped).end = ((void *)0);}; | |
36163 | ||
36164 | ||
36165 | { (buf_pool->free).count = 0; (buf_pool->free).start = ((void *)0); (buf_pool->free).end = ((void *)0);}; | |
36166 | ||
36167 | for (i = 0; i < curr_size; i++) { | |
36168 | ||
36169 | block = buf_pool_get_nth_block(buf_pool, i); | |
36170 | ||
36171 | if (block->frame) { | |
36172 | ||
36173 | ||
36174 | ||
36175 | ||
36176 | ||
36177 | ||
36178 | if (srv_use_awe) { | |
36179 | ||
36180 | ||
36181 | ||
36182 | { ; ((buf_pool->awe_LRU_free_mapped).count)++; ((block)->awe_LRU_free_mapped).prev = (buf_pool->awe_LRU_free_mapped).end; ((block)->awe_LRU_free_mapped).next = ((void *)0); if ((buf_pool->awe_LRU_free_mapped).end != ((void *)0)) { (((buf_pool->awe_LRU_free_mapped).end)->awe_LRU_free_mapped).next = (block); } (buf_pool->awe_LRU_free_mapped).end = (block); if ((buf_pool->awe_LRU_free_mapped).start == ((void *)0)) { (buf_pool->awe_LRU_free_mapped).start = (block); }}; | |
36183 | ||
36184 | } | |
36185 | } | |
36186 | ||
36187 | { ; ((buf_pool->free).count)++; ((block)->free).prev = (buf_pool->free).end; ((block)->free).next = ((void *)0); if ((buf_pool->free).end != ((void *)0)) { (((buf_pool->free).end)->free).next = (block); } (buf_pool->free).end = (block); if ((buf_pool->free).start == ((void *)0)) { (buf_pool->free).start = (block); }}; | |
36188 | block->in_free_list = (1); | |
36189 | } | |
36190 | ||
36191 | mutex_exit(&(buf_pool->LRU_mutex)); | |
36192 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
36193 | mutex_exit(&(buf_pool->free_mutex)); | |
36194 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
36195 | mutex_exit(&(buf_pool->mutex)); | |
36196 | ||
36197 | if (srv_use_adaptive_hash_indexes) { | |
36198 | btr_search_sys_create( | |
36199 | curr_size * (2 * 8192) / sizeof(void*) / 64); | |
36200 | } else { | |
36201 | ||
36202 | btr_search_sys_create(1000); | |
36203 | } | |
36204 | ||
36205 | return(buf_pool); | |
36206 | } | |
36207 | ||
36208 | ||
36209 | ||
36210 | ||
36211 | ||
36212 | void | |
36213 | buf_awe_map_page_to_frame( | |
36214 | ||
36215 | buf_block_t* block, | |
36216 | ||
36217 | ulint add_to_mapped_list) | |
36218 | ||
36219 | ||
36220 | ||
36221 | { | |
36222 | buf_block_t* bck; | |
36223 | ||
36224 | ||
36225 | ||
36226 | ||
36227 | ; | |
36228 | ||
36229 | if (block->frame) { | |
36230 | ||
36231 | return; | |
36232 | } | |
36233 | ||
36234 | ||
36235 | ||
36236 | ||
36237 | bck = (buf_pool->awe_LRU_free_mapped).end; | |
36238 | ||
36239 | while (bck) { | |
36240 | ulint skip; | |
36241 | ||
36242 | mutex_enter_func((&bck->mutex), "buf/buf0buf.c", 791); | |
36243 | ||
36244 | skip = (bck->state == 213 | |
36245 | && (bck->buf_fix_count != 0 || bck->io_fix != 0)); | |
36246 | ||
36247 | if (skip) { | |
36248 | mutex_exit(&bck->mutex); | |
36249 | ||
36250 | ||
36251 | bck = (((bck)->awe_LRU_free_mapped).prev); | |
36252 | } else { | |
36253 | ||
36254 | ||
36255 | os_awe_map_physical_mem_to_window( | |
36256 | bck->frame, | |
36257 | (2 * 8192) / 4096, | |
36258 | block->awe_info); | |
36259 | ||
36260 | block->frame = bck->frame; | |
36261 | ||
36262 | *(buf_pool->blocks_of_frames | |
36263 | + (((ulint)(block->frame | |
36264 | - buf_pool->frame_zero)) | |
36265 | >> 14)) | |
36266 | = block; | |
36267 | ||
36268 | bck->frame = ((void *)0); | |
36269 | { ; do { if (__builtin_expect(!((ulint)((buf_pool->awe_LRU_free_mapped).count > 0)), (0))) { ut_dbg_assertion_failed("(buf_pool->awe_LRU_free_mapped).count > 0", "buf/buf0buf.c", (ulint) 820); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 820); } while (0); } while (0); ((buf_pool->awe_LRU_free_mapped).count)--; if (((bck)->awe_LRU_free_mapped).next != ((void *)0)) { ((((bck)->awe_LRU_free_mapped).next)->awe_LRU_free_mapped).prev = ((bck)->awe_LRU_free_mapped).prev; } else { (buf_pool->awe_LRU_free_mapped).end = ((bck)->awe_LRU_free_mapped).prev; } if (((bck)->awe_LRU_free_mapped).prev != ((void *)0)) { ((((bck)->awe_LRU_free_mapped).prev)->awe_LRU_free_mapped).next = ((bck)->awe_LRU_free_mapped).next; } else { (buf_pool->awe_LRU_free_mapped).start = ((bck)->awe_LRU_free_mapped).next; }}; | |
36270 | ||
36271 | ||
36272 | ||
36273 | if (add_to_mapped_list) { | |
36274 | { ; ((buf_pool->awe_LRU_free_mapped).count)++; ((block)->awe_LRU_free_mapped).next = (buf_pool->awe_LRU_free_mapped).start; ((block)->awe_LRU_free_mapped).prev = ((void *)0); if ((buf_pool->awe_LRU_free_mapped).start != ((void *)0)) { (((buf_pool->awe_LRU_free_mapped).start)->awe_LRU_free_mapped).prev = (block); } (buf_pool->awe_LRU_free_mapped).start = (block); if ((buf_pool->awe_LRU_free_mapped).end == ((void *)0)) { (buf_pool->awe_LRU_free_mapped).end = (block); }}; | |
36275 | ||
36276 | ||
36277 | } | |
36278 | ||
36279 | buf_pool->n_pages_awe_remapped++; | |
36280 | ||
36281 | mutex_exit(&bck->mutex); | |
36282 | ||
36283 | return; | |
36284 | } | |
36285 | } | |
36286 | ||
36287 | fprintf(stderr, | |
36288 | "InnoDB: AWE: Fatal error: cannot find a page to unmap\n" | |
36289 | "InnoDB: awe_LRU_free_mapped list length %lu\n", | |
36290 | (ulong) (buf_pool->awe_LRU_free_mapped).count); | |
36291 | ||
36292 | do { if (__builtin_expect(!((ulint)(0)), (0))) { ut_dbg_assertion_failed("0", "buf/buf0buf.c", (ulint) 841); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 841); } while (0); } while (0); | |
36293 | } | |
36294 | ||
36295 | ||
36296 | ||
36297 | static inline | |
36298 | buf_block_t* | |
36299 | buf_block_alloc(void) | |
36300 | ||
36301 | ||
36302 | ||
36303 | ||
36304 | { | |
36305 | buf_block_t* block; | |
36306 | ||
36307 | block = buf_LRU_get_free_block(); | |
36308 | ||
36309 | return(block); | |
36310 | } | |
36311 | ||
36312 | ||
36313 | ||
36314 | ||
36315 | static inline | |
36316 | void | |
36317 | buf_block_make_young( | |
36318 | ||
36319 | buf_block_t* block) | |
36320 | { | |
36321 | ||
36322 | ||
36323 | ||
36324 | ||
36325 | ||
36326 | ||
36327 | ||
36328 | if (buf_pool->freed_page_clock >= block->freed_page_clock | |
36329 | + 1 + (buf_pool->curr_size / 4)) { | |
36330 | ||
36331 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 880); | |
36332 | ||
36333 | ||
36334 | ||
36335 | buf_LRU_make_block_young(block); | |
36336 | mutex_exit(&(buf_pool->LRU_mutex)); | |
36337 | } | |
36338 | } | |
36339 | ||
36340 | ||
36341 | ||
36342 | ||
36343 | ||
36344 | ||
36345 | void | |
36346 | buf_page_make_young( | |
36347 | ||
36348 | buf_frame_t* frame) | |
36349 | { | |
36350 | buf_block_t* block; | |
36351 | ||
36352 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 901); | |
36353 | ||
36354 | block = buf_block_align(frame); | |
36355 | ||
36356 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 905); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 905); } while (0); } while (0); | |
36357 | ||
36358 | buf_LRU_make_block_young(block); | |
36359 | ||
36360 | mutex_exit(&(buf_pool->LRU_mutex)); | |
36361 | } | |
36362 | ||
36363 | ||
36364 | ||
36365 | static inline | |
36366 | void | |
36367 | buf_block_free( | |
36368 | ||
36369 | buf_block_t* block) | |
36370 | { | |
36371 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 920); | |
36372 | ||
36373 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 922); | |
36374 | ||
36375 | do { if (__builtin_expect(!((ulint)(block->state != 213)), (0))) { ut_dbg_assertion_failed("block->state != BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 924); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 924); } while (0); } while (0); | |
36376 | ||
36377 | buf_LRU_block_free_non_file_page(block); | |
36378 | ||
36379 | mutex_exit(&block->mutex); | |
36380 | ||
36381 | mutex_exit(&(buf_pool->free_mutex)); | |
36382 | } | |
36383 | ||
36384 | ||
36385 | ||
36386 | ||
36387 | buf_frame_t* | |
36388 | buf_frame_alloc(void) | |
36389 | ||
36390 | ||
36391 | { | |
36392 | return(buf_block_alloc()->frame); | |
36393 | } | |
36394 | ||
36395 | ||
36396 | ||
36397 | ||
36398 | void | |
36399 | buf_frame_free( | |
36400 | ||
36401 | buf_frame_t* frame) | |
36402 | { | |
36403 | buf_block_free(buf_block_align(frame)); | |
36404 | } | |
36405 | ||
36406 | ||
36407 | ||
36408 | ||
36409 | ||
36410 | ||
36411 | buf_block_t* | |
36412 | buf_page_peek_block( | |
36413 | ||
36414 | ||
36415 | ||
36416 | ||
36417 | ulint space, | |
36418 | ulint offset) | |
36419 | { | |
36420 | buf_block_t* block; | |
36421 | ||
36422 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 971); | |
36423 | ||
36424 | block = buf_page_hash_get(space, offset); | |
36425 | ||
36426 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36427 | ||
36428 | return(block); | |
36429 | } | |
36430 | ||
36431 | ||
36432 | ||
36433 | ||
36434 | ||
36435 | void | |
36436 | buf_reset_check_index_page_at_flush( | |
36437 | ||
36438 | ulint space, | |
36439 | ulint offset) | |
36440 | { | |
36441 | buf_block_t* block; | |
36442 | ||
36443 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 992); | |
36444 | ||
36445 | block = buf_page_hash_get(space, offset); | |
36446 | ||
36447 | if (block) { | |
36448 | block->check_index_page_at_flush = (0); | |
36449 | } | |
36450 | ||
36451 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36452 | } | |
36453 | ||
36454 | ||
36455 | ||
36456 | ||
36457 | ||
36458 | ||
36459 | ulint | |
36460 | buf_page_peek_if_search_hashed( | |
36461 | ||
36462 | ||
36463 | ||
36464 | ulint space, | |
36465 | ulint offset) | |
36466 | { | |
36467 | buf_block_t* block; | |
36468 | ulint is_hashed; | |
36469 | ||
36470 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1019); | |
36471 | ||
36472 | block = buf_page_hash_get(space, offset); | |
36473 | ||
36474 | if (!block) { | |
36475 | is_hashed = (0); | |
36476 | } else { | |
36477 | is_hashed = block->is_hashed; | |
36478 | } | |
36479 | ||
36480 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36481 | ||
36482 | return(is_hashed); | |
36483 | } | |
36484 | ||
36485 | ||
36486 | ||
36487 | ||
36488 | ||
36489 | ulint | |
36490 | buf_page_peek( | |
36491 | ||
36492 | ||
36493 | ||
36494 | ||
36495 | ulint space, | |
36496 | ulint offset) | |
36497 | { | |
36498 | if (buf_page_peek_block(space, offset)) { | |
36499 | ||
36500 | return((1)); | |
36501 | } | |
36502 | ||
36503 | return((0)); | |
36504 | } | |
36505 | ||
36506 | ||
36507 | ||
36508 | ||
36509 | ||
36510 | ||
36511 | ||
36512 | buf_block_t* | |
36513 | buf_page_set_file_page_was_freed( | |
36514 | ||
36515 | ||
36516 | ||
36517 | ulint space, | |
36518 | ulint offset) | |
36519 | { | |
36520 | buf_block_t* block; | |
36521 | ||
36522 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1071); | |
36523 | ||
36524 | block = buf_page_hash_get(space, offset); | |
36525 | ||
36526 | if (block) { | |
36527 | block->file_page_was_freed = (1); | |
36528 | } | |
36529 | ||
36530 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36531 | ||
36532 | return(block); | |
36533 | } | |
36534 | ||
36535 | ||
36536 | ||
36537 | ||
36538 | ||
36539 | ||
36540 | ||
36541 | buf_block_t* | |
36542 | buf_page_reset_file_page_was_freed( | |
36543 | ||
36544 | ||
36545 | ||
36546 | ulint space, | |
36547 | ulint offset) | |
36548 | { | |
36549 | buf_block_t* block; | |
36550 | ||
36551 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1100); | |
36552 | ||
36553 | block = buf_page_hash_get(space, offset); | |
36554 | ||
36555 | if (block) { | |
36556 | block->file_page_was_freed = (0); | |
36557 | } | |
36558 | ||
36559 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36560 | ||
36561 | return(block); | |
36562 | } | |
36563 | ||
36564 | inline void _increment_page_get_statistics(buf_block_t* block, trx_t* trx) | |
36565 | { | |
36566 | ulint block_hash; | |
36567 | ulint block_hash_byte; | |
36568 | unsigned char block_hash_offset; | |
36569 | ||
36570 | ; | |
36571 | ||
36572 | if (!srv_slow_log || !trx || !trx->take_stats) | |
36573 | return; | |
36574 | ||
36575 | if (!trx->distinct_page_access_hash) { | |
36576 | trx->distinct_page_access_hash = mem_alloc_func((8192), "buf/buf0buf.c", 1125); | |
36577 | memset(trx->distinct_page_access_hash, 0, 8192); | |
36578 | } | |
36579 | ||
36580 | block_hash = ut_hash_ulint((block->space << 20) + block->space + | |
36581 | block->offset, 8192 << 3); | |
36582 | block_hash_byte = block_hash >> 3; | |
36583 | block_hash_offset = (unsigned char) block_hash & 0x07; | |
36584 | if (block_hash_byte < 0 || block_hash_byte >= 8192) | |
36585 | fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", block_hash_byte, block_hash_offset); | |
36586 | if (block_hash_offset < 0 || block_hash_offset > 7) | |
36587 | fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", block_hash_byte, block_hash_offset); | |
36588 | if ((trx->distinct_page_access_hash[block_hash_byte] & ((unsigned char) 0x01 << block_hash_offset)) == 0) | |
36589 | trx->distinct_page_access++; | |
36590 | trx->distinct_page_access_hash[block_hash_byte] |= (unsigned char) 0x01 << block_hash_offset; | |
36591 | return; | |
36592 | } | |
36593 | ||
36594 | ||
36595 | ||
36596 | ||
36597 | buf_frame_t* | |
36598 | buf_page_get_gen( | |
36599 | ||
36600 | ||
36601 | ulint space, | |
36602 | ulint offset, | |
36603 | ulint rw_latch, | |
36604 | buf_frame_t* guess, | |
36605 | ulint mode, | |
36606 | ||
36607 | const char* file, | |
36608 | ulint line, | |
36609 | mtr_t* mtr) | |
36610 | { | |
36611 | buf_block_t* block; | |
36612 | ulint accessed; | |
36613 | ulint fix_type; | |
36614 | ulint success; | |
36615 | ulint must_read; | |
36616 | trx_t* trx = ((void *)0); | |
36617 | ulint sec; | |
36618 | ulint ms; | |
36619 | ib_longlong start_time; | |
36620 | ib_longlong finish_time; | |
36621 | ||
36622 | ; | |
36623 | ; | |
36624 | ||
36625 | ||
36626 | ; | |
36627 | ; | |
36628 | ||
36629 | ||
36630 | ; | |
36631 | ||
36632 | if (srv_slow_log) { | |
36633 | trx = innobase_get_trx(); | |
36634 | } | |
36635 | buf_pool->n_page_gets++; | |
36636 | loop: | |
36637 | block = ((void *)0); | |
36638 | ||
36639 | ||
36640 | if (guess) { | |
36641 | block = buf_block_align(guess); | |
36642 | ||
36643 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1192); | |
36644 | if ((offset != block->offset) || (space != block->space) | |
36645 | || (block->state != 213)) { | |
36646 | ||
36647 | mutex_exit(&block->mutex); | |
36648 | block = ((void *)0); | |
36649 | } | |
36650 | } | |
36651 | ||
36652 | if (block == ((void *)0)) { | |
36653 | rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1202); | |
36654 | block = buf_page_hash_get(space, offset); | |
36655 | if(block) { | |
36656 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1205); | |
36657 | } | |
36658 | rw_lock_s_unlock_func(&(buf_pool->hash_latch)); | |
36659 | } | |
36660 | ||
36661 | if (block == ((void *)0)) { | |
36662 | ||
36663 | ||
36664 | ||
36665 | ||
36666 | if (mode == 11) { | |
36667 | ||
36668 | return(((void *)0)); | |
36669 | } | |
36670 | ||
36671 | buf_read_page(space, offset, trx); | |
36672 | # 1229 "buf/buf0buf.c" | |
36673 | goto loop; | |
36674 | } | |
36675 | ||
36676 | ||
36677 | ||
36678 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1234); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1234); } while (0); } while (0); | |
36679 | ||
36680 | must_read = (0); | |
36681 | ||
36682 | if (block->io_fix == 561) { | |
36683 | ||
36684 | must_read = (1); | |
36685 | ||
36686 | if (mode == 11) { | |
36687 | ||
36688 | ||
36689 | mutex_exit(&block->mutex); | |
36690 | ||
36691 | return(((void *)0)); | |
36692 | } | |
36693 | } | |
36694 | ||
36695 | ||
36696 | ||
36697 | ||
36698 | if (block->frame == ((void *)0)) { | |
36699 | do { if (__builtin_expect(!((ulint)(srv_use_awe)), (0))) { ut_dbg_assertion_failed("srv_use_awe", "buf/buf0buf.c", (ulint) 1255); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1255); } while (0); } while (0); | |
36700 | ||
36701 | ||
36702 | ||
36703 | ||
36704 | ||
36705 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 1261); | |
36706 | buf_awe_map_page_to_frame(block, (1)); | |
36707 | mutex_exit(&buf_pool->mutex); | |
36708 | } | |
36709 | ||
36710 | ||
36711 | ||
36712 | ||
36713 | buf_block_buf_fix_inc(block); | |
36714 | ||
36715 | ||
36716 | ||
36717 | ||
36718 | ||
36719 | accessed = block->accessed; | |
36720 | ||
36721 | block->accessed = (1); | |
36722 | ||
36723 | mutex_exit(&block->mutex); | |
36724 | ||
36725 | buf_block_make_young(block); | |
36726 | # 1295 "buf/buf0buf.c" | |
36727 | do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1295); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1295); } while (0); } while (0); | |
36728 | ; | |
36729 | ||
36730 | if (mode == 12) { | |
36731 | if (rw_latch == 1) { | |
36732 | success = rw_lock_s_lock_func_nowait(&(block->lock), | |
36733 | file, line); | |
36734 | fix_type = 1; | |
36735 | } else { | |
36736 | ; | |
36737 | success = rw_lock_x_lock_func_nowait(&(block->lock), | |
36738 | file, line); | |
36739 | fix_type = 2; | |
36740 | } | |
36741 | ||
36742 | if (!success) { | |
36743 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1311); | |
36744 | ||
36745 | ||
36746 | ||
36747 | if (__builtin_expect(block->buf_fix_count == 0, (0))) { | |
36748 | buf_print_diagnostic(mtr, block); | |
36749 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1317); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
36750 | } | |
36751 | ||
36752 | block->buf_fix_count--; | |
36753 | ||
36754 | mutex_exit(&block->mutex); | |
36755 | ||
36756 | ||
36757 | ||
36758 | ||
36759 | return(((void *)0)); | |
36760 | } | |
36761 | } else if (rw_latch == 3) { | |
36762 | ||
36763 | if (must_read) { | |
36764 | ||
36765 | ||
36766 | ||
36767 | if (srv_slow_log && trx && trx->take_stats) | |
36768 | { | |
36769 | ut_usectime(&sec, &ms); | |
36770 | start_time = (ib_longlong)sec * 1000000 + ms; | |
36771 | } | |
36772 | for (;;) { | |
36773 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1341); | |
36774 | ||
36775 | if (block->io_fix == 561) { | |
36776 | ||
36777 | mutex_exit(&block->mutex); | |
36778 | ||
36779 | os_thread_sleep(WAIT_FOR_READ); | |
36780 | } else { | |
36781 | ||
36782 | mutex_exit(&block->mutex); | |
36783 | ||
36784 | break; | |
36785 | } | |
36786 | } | |
36787 | if (srv_slow_log && trx && trx->take_stats && start_time) | |
36788 | { | |
36789 | ut_usectime(&sec, &ms); | |
36790 | finish_time = (ib_longlong)sec * 1000000 + ms; | |
36791 | trx->io_reads_wait_timer += (ulint)(finish_time - start_time); | |
36792 | } | |
36793 | } | |
36794 | ||
36795 | fix_type = 3; | |
36796 | } else if (rw_latch == 1) { | |
36797 | ||
36798 | rw_lock_s_lock_func(&(block->lock), 0, file, line); | |
36799 | ||
36800 | fix_type = 1; | |
36801 | } else { | |
36802 | rw_lock_x_lock_func(&(block->lock), 0, file, line); | |
36803 | ||
36804 | fix_type = 2; | |
36805 | } | |
36806 | ||
36807 | mtr_memo_push(mtr, block, fix_type); | |
36808 | ||
36809 | if (!accessed) { | |
36810 | ||
36811 | ||
36812 | ||
36813 | buf_read_ahead_linear(space, offset, trx); | |
36814 | } | |
36815 | ||
36816 | ||
36817 | ||
36818 | ||
36819 | ||
36820 | if (srv_slow_log) { | |
36821 | _increment_page_get_statistics(block, trx); | |
36822 | } | |
36823 | ||
36824 | return(block->frame); | |
36825 | } | |
36826 | ||
36827 | ||
36828 | ||
36829 | ||
36830 | ||
36831 | ulint | |
36832 | buf_page_optimistic_get_func( | |
36833 | ||
36834 | ||
36835 | ulint rw_latch, | |
36836 | buf_block_t* block, | |
36837 | buf_frame_t* guess, | |
36838 | ||
36839 | dulint modify_clock, | |
36840 | ||
36841 | const char* file, | |
36842 | ulint line, | |
36843 | mtr_t* mtr) | |
36844 | { | |
36845 | ulint accessed; | |
36846 | ulint success; | |
36847 | ulint fix_type; | |
36848 | trx_t* trx = ((void *)0); | |
36849 | ||
36850 | ; | |
36851 | ; | |
36852 | ||
36853 | ||
36854 | ||
36855 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1423); | |
36856 | ||
36857 | if (__builtin_expect(block->state != 213, (0)) | |
36858 | || __builtin_expect(block->frame != guess, (0))) { | |
36859 | ||
36860 | mutex_exit(&block->mutex); | |
36861 | ||
36862 | return((0)); | |
36863 | } | |
36864 | ||
36865 | ||
36866 | ||
36867 | ||
36868 | buf_block_buf_fix_inc(block); | |
36869 | ||
36870 | accessed = block->accessed; | |
36871 | block->accessed = (1); | |
36872 | ||
36873 | mutex_exit(&block->mutex); | |
36874 | ||
36875 | buf_block_make_young(block); | |
36876 | ||
36877 | ||
36878 | ||
36879 | ; | |
36880 | ||
36881 | if (rw_latch == 1) { | |
36882 | success = rw_lock_s_lock_func_nowait(&(block->lock), | |
36883 | file, line); | |
36884 | fix_type = 1; | |
36885 | } else { | |
36886 | success = rw_lock_x_lock_func_nowait(&(block->lock), | |
36887 | file, line); | |
36888 | fix_type = 2; | |
36889 | } | |
36890 | ||
36891 | if (__builtin_expect(!success, (0))) { | |
36892 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1460); | |
36893 | ||
36894 | ||
36895 | ||
36896 | if (__builtin_expect(block->buf_fix_count == 0, (0))) { | |
36897 | buf_print_diagnostic(mtr, block); | |
36898 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1466); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
36899 | } | |
36900 | ||
36901 | block->buf_fix_count--; | |
36902 | ||
36903 | mutex_exit(&block->mutex); | |
36904 | ||
36905 | ||
36906 | ||
36907 | ||
36908 | return((0)); | |
36909 | } | |
36910 | ||
36911 | if (__builtin_expect(!(((modify_clock).low == (block->modify_clock).low) && ((modify_clock).high == (block->modify_clock).high)), (0))) { | |
36912 | ||
36913 | ||
36914 | ||
36915 | if (rw_latch == 1) { | |
36916 | rw_lock_s_unlock_func(&(block->lock)); | |
36917 | } else { | |
36918 | rw_lock_x_unlock_func(&(block->lock)); | |
36919 | } | |
36920 | ||
36921 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1489); | |
36922 | ||
36923 | ||
36924 | ||
36925 | if (__builtin_expect(block->buf_fix_count == 0, (0))) { | |
36926 | buf_print_diagnostic(mtr, block); | |
36927 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1495); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
36928 | } | |
36929 | ||
36930 | block->buf_fix_count--; | |
36931 | ||
36932 | mutex_exit(&block->mutex); | |
36933 | ||
36934 | ||
36935 | ||
36936 | ||
36937 | return((0)); | |
36938 | } | |
36939 | ||
36940 | mtr_memo_push(mtr, block, fix_type); | |
36941 | # 1519 "buf/buf0buf.c" | |
36942 | do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1519); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1519); } while (0); } while (0); | |
36943 | ||
36944 | ; | |
36945 | ||
36946 | ||
36947 | ||
36948 | ||
36949 | if (__builtin_expect(!accessed, (0))) { | |
36950 | ||
36951 | ||
36952 | ||
36953 | buf_read_ahead_linear(buf_frame_get_space_id(guess), | |
36954 | buf_frame_get_page_no(guess), trx); | |
36955 | } | |
36956 | ||
36957 | ||
36958 | ||
36959 | ||
36960 | buf_pool->n_page_gets++; | |
36961 | ||
36962 | if (srv_slow_log) { | |
36963 | trx = innobase_get_trx(); | |
36964 | _increment_page_get_statistics(block, trx); | |
36965 | } | |
36966 | ||
36967 | return((1)); | |
36968 | } | |
36969 | ||
36970 | ||
36971 | ||
36972 | ||
36973 | ||
36974 | ||
36975 | ulint | |
36976 | buf_page_get_known_nowait( | |
36977 | ||
36978 | ||
36979 | ulint rw_latch, | |
36980 | buf_frame_t* guess, | |
36981 | ulint mode, | |
36982 | const char* file, | |
36983 | ulint line, | |
36984 | mtr_t* mtr) | |
36985 | { | |
36986 | buf_block_t* block; | |
36987 | ulint success; | |
36988 | ulint fix_type; | |
36989 | trx_t* trx = ((void *)0); | |
36990 | ||
36991 | ; | |
36992 | ; | |
36993 | ||
36994 | block = buf_block_align(guess); | |
36995 | ||
36996 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1573); | |
36997 | ||
36998 | if (block->state == 215) { | |
36999 | ||
37000 | ||
37001 | ||
37002 | ||
37003 | ||
37004 | ||
37005 | ||
37006 | mutex_exit(&block->mutex); | |
37007 | ||
37008 | return((0)); | |
37009 | } | |
37010 | ||
37011 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1588); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1588); } while (0); } while (0); | |
37012 | ||
37013 | ||
37014 | ||
37015 | ||
37016 | buf_block_buf_fix_inc(block); | |
37017 | ||
37018 | mutex_exit(&block->mutex); | |
37019 | ||
37020 | if (mode == 51) { | |
37021 | buf_block_make_young(block); | |
37022 | } | |
37023 | ||
37024 | ; | |
37025 | ||
37026 | if (rw_latch == 1) { | |
37027 | success = rw_lock_s_lock_func_nowait(&(block->lock), | |
37028 | file, line); | |
37029 | fix_type = 1; | |
37030 | } else { | |
37031 | success = rw_lock_x_lock_func_nowait(&(block->lock), | |
37032 | file, line); | |
37033 | fix_type = 2; | |
37034 | } | |
37035 | ||
37036 | if (!success) { | |
37037 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1614); | |
37038 | ||
37039 | ||
37040 | ||
37041 | if (__builtin_expect(block->buf_fix_count == 0, (0))) { | |
37042 | buf_print_diagnostic(mtr, block); | |
37043 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1620); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
37044 | } | |
37045 | ||
37046 | block->buf_fix_count--; | |
37047 | ||
37048 | mutex_exit(&block->mutex); | |
37049 | ||
37050 | ||
37051 | ||
37052 | ||
37053 | ||
37054 | return((0)); | |
37055 | } | |
37056 | ||
37057 | mtr_memo_push(mtr, block, fix_type); | |
37058 | # 1644 "buf/buf0buf.c" | |
37059 | do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1644); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1644); } while (0); } while (0); | |
37060 | ; | |
37061 | # 1654 "buf/buf0buf.c" | |
37062 | buf_pool->n_page_gets++; | |
37063 | ||
37064 | if (srv_slow_log) { | |
37065 | trx = innobase_get_trx(); | |
37066 | _increment_page_get_statistics(block, trx); | |
37067 | } | |
37068 | ||
37069 | return((1)); | |
37070 | } | |
37071 | ||
37072 | ||
37073 | ||
37074 | ||
37075 | void | |
37076 | buf_page_init_for_backup_restore( | |
37077 | ||
37078 | ulint space, | |
37079 | ulint offset, | |
37080 | ||
37081 | buf_block_t* block) | |
37082 | { | |
37083 | ||
37084 | block->magic_n = 41526563; | |
37085 | ||
37086 | block->state = 213; | |
37087 | block->space = space; | |
37088 | block->offset = offset; | |
37089 | ||
37090 | block->lock_hash_val = 0; | |
37091 | ||
37092 | block->freed_page_clock = 0; | |
37093 | ||
37094 | block->newest_modification = ut_dulint_zero; | |
37095 | block->oldest_modification = ut_dulint_zero; | |
37096 | ||
37097 | block->accessed = (0); | |
37098 | block->buf_fix_count = 0; | |
37099 | block->io_fix = 0; | |
37100 | ||
37101 | block->n_hash_helps = 0; | |
37102 | block->is_hashed = (0); | |
37103 | block->n_fields = 1; | |
37104 | block->n_bytes = 0; | |
37105 | block->side = 1; | |
37106 | ||
37107 | block->file_page_was_freed = (0); | |
37108 | } | |
37109 | ||
37110 | ||
37111 | ||
37112 | static | |
37113 | void | |
37114 | buf_page_init( | |
37115 | ||
37116 | ulint space, | |
37117 | ulint offset, | |
37118 | ||
37119 | buf_block_t* block) | |
37120 | { | |
37121 | ||
37122 | ||
37123 | ||
37124 | ||
37125 | do { if (__builtin_expect(!((ulint)(block->state != 213)), (0))) { ut_dbg_assertion_failed("block->state != BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1717); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1717); } while (0); } while (0); | |
37126 | ||
37127 | ||
37128 | block->magic_n = 41526563; | |
37129 | ||
37130 | block->state = 213; | |
37131 | block->space = space; | |
37132 | block->offset = offset; | |
37133 | ||
37134 | block->check_index_page_at_flush = (0); | |
37135 | block->index = ((void *)0); | |
37136 | ||
37137 | block->lock_hash_val = lock_rec_hash(space, offset); | |
37138 | ||
37139 | ||
37140 | ||
37141 | if (buf_page_hash_get(space, offset)) { | |
37142 | fprintf(stderr, | |
37143 | "InnoDB: Error: page %lu %lu already found from the hash table\n", | |
37144 | (ulong) space, | |
37145 | (ulong) offset); | |
37146 | ||
37147 | ||
37148 | ||
37149 | ||
37150 | ||
37151 | ||
37152 | do { if (__builtin_expect(!((ulint)(0)), (0))) { ut_dbg_assertion_failed("0", "buf/buf0buf.c", (ulint) 1744); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1744); } while (0); } while (0); | |
37153 | } | |
37154 | ||
37155 | do { hash_cell_t* cell3333; buf_block_t* struct3333; (block)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->page_hash, hash_calc_hash(buf_page_address_fold(space, offset), buf_pool->page_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = block; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = block; }} while (0); | |
37156 | ||
37157 | ||
37158 | block->freed_page_clock = 0; | |
37159 | ||
37160 | block->newest_modification = ut_dulint_zero; | |
37161 | block->oldest_modification = ut_dulint_zero; | |
37162 | ||
37163 | block->accessed = (0); | |
37164 | block->buf_fix_count = 0; | |
37165 | block->io_fix = 0; | |
37166 | ||
37167 | block->n_hash_helps = 0; | |
37168 | block->is_hashed = (0); | |
37169 | block->n_fields = 1; | |
37170 | block->n_bytes = 0; | |
37171 | block->side = 1; | |
37172 | ||
37173 | block->file_page_was_freed = (0); | |
37174 | } | |
37175 | # 1780 "buf/buf0buf.c" | |
37176 | buf_block_t* | |
37177 | buf_page_init_for_read( | |
37178 | ||
37179 | ||
37180 | ulint* err, | |
37181 | ulint mode, | |
37182 | ulint space, | |
37183 | ib_longlong tablespace_version, | |
37184 | ||
37185 | ||
37186 | ulint offset) | |
37187 | { | |
37188 | buf_block_t* block; | |
37189 | mtr_t mtr; | |
37190 | ||
37191 | ; | |
37192 | ||
37193 | *err = 10; | |
37194 | ||
37195 | if (mode == 131) { | |
37196 | ||
37197 | ||
37198 | ; | |
37199 | ; | |
37200 | ||
37201 | mtr_start(&mtr); | |
37202 | ||
37203 | if (!ibuf_page_low(space, offset, &mtr)) { | |
37204 | ||
37205 | mtr_commit(&mtr); | |
37206 | ||
37207 | return(((void *)0)); | |
37208 | } | |
37209 | } else { | |
37210 | ; | |
37211 | } | |
37212 | ||
37213 | block = buf_block_alloc(); | |
37214 | ||
37215 | do { if (__builtin_expect(!((ulint)(block)), (0))) { ut_dbg_assertion_failed("block", "buf/buf0buf.c", (ulint) 1819); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1819); } while (0); } while (0); | |
37216 | ||
37217 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 1821); | |
37218 | rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1822); | |
37219 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1823); | |
37220 | ||
37221 | if (fil_tablespace_deleted_or_being_deleted_in_mem(space, | |
37222 | tablespace_version)) { | |
37223 | *err = 44; | |
37224 | } | |
37225 | ||
37226 | if (*err == 44 | |
37227 | || ((void *)0) != buf_page_hash_get(space, offset)) { | |
37228 | ||
37229 | ||
37230 | ||
37231 | ||
37232 | mutex_exit(&block->mutex); | |
37233 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37234 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
37235 | ||
37236 | buf_block_free(block); | |
37237 | ||
37238 | if (mode == 131) { | |
37239 | ||
37240 | mtr_commit(&mtr); | |
37241 | } | |
37242 | ||
37243 | return(((void *)0)); | |
37244 | } | |
37245 | ||
37246 | ; | |
37247 | ||
37248 | buf_page_init(space, offset, block); | |
37249 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
37250 | ||
37251 | ||
37252 | ||
37253 | buf_LRU_add_block(block, (1)); | |
37254 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37255 | ||
37256 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 1860); | |
37257 | ||
37258 | block->io_fix = 561; | |
37259 | ||
37260 | buf_pool->n_pend_reads++; | |
37261 | # 1873 "buf/buf0buf.c" | |
37262 | rw_lock_x_lock_func( (&(block->lock)), (561), "buf/buf0buf.c", 1873); | |
37263 | ||
37264 | mutex_exit(&block->mutex); | |
37265 | mutex_exit(&(buf_pool->mutex)); | |
37266 | ||
37267 | if (mode == 131) { | |
37268 | ||
37269 | mtr_commit(&mtr); | |
37270 | } | |
37271 | ||
37272 | return(block); | |
37273 | } | |
37274 | ||
37275 | ||
37276 | ||
37277 | ||
37278 | ||
37279 | ||
37280 | ||
37281 | buf_frame_t* | |
37282 | buf_page_create( | |
37283 | ||
37284 | ||
37285 | ulint space, | |
37286 | ulint offset, | |
37287 | ||
37288 | mtr_t* mtr) | |
37289 | { | |
37290 | buf_frame_t* frame; | |
37291 | buf_block_t* block; | |
37292 | buf_block_t* free_block = ((void *)0); | |
37293 | ||
37294 | ; | |
37295 | ||
37296 | free_block = buf_LRU_get_free_block(); | |
37297 | ||
37298 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 1909); | |
37299 | rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1910); | |
37300 | ||
37301 | block = buf_page_hash_get(space, offset); | |
37302 | ||
37303 | if (block != ((void *)0)) { | |
37304 | ||
37305 | ||
37306 | ||
37307 | block->file_page_was_freed = (0); | |
37308 | ||
37309 | ||
37310 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37311 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
37312 | ||
37313 | buf_block_free(free_block); | |
37314 | ||
37315 | frame = buf_page_get_gen( space, offset, 3, ((void *)0), 14, "buf/buf0buf.c", 1926, mtr); | |
37316 | ||
37317 | return(frame); | |
37318 | } | |
37319 | # 1940 "buf/buf0buf.c" | |
37320 | block = free_block; | |
37321 | ||
37322 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1942); | |
37323 | ||
37324 | buf_page_init(space, offset, block); | |
37325 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
37326 | ||
37327 | ||
37328 | buf_LRU_add_block(block, (0)); | |
37329 | ||
37330 | ||
37331 | ||
37332 | ||
37333 | buf_block_buf_fix_inc(block); | |
37334 | ||
37335 | buf_pool->n_pages_created++; | |
37336 | ||
37337 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37338 | ||
37339 | mtr_memo_push(mtr, block, 3); | |
37340 | ||
37341 | block->accessed = (1); | |
37342 | ||
37343 | mutex_exit(&block->mutex); | |
37344 | ||
37345 | ||
37346 | ||
37347 | ||
37348 | ibuf_merge_or_delete_for_page(((void *)0), space, offset, (1)); | |
37349 | ||
37350 | ||
37351 | buf_flush_free_margin((0)); | |
37352 | ||
37353 | frame = block->frame; | |
37354 | ||
37355 | ||
37356 | ||
37357 | ||
37358 | ||
37359 | ||
37360 | ||
37361 | memset(frame + 26, 0, 8); | |
37362 | # 1993 "buf/buf0buf.c" | |
37363 | return(frame); | |
37364 | } | |
37365 | ||
37366 | ||
37367 | ||
37368 | ||
37369 | ||
37370 | void | |
37371 | buf_page_io_complete( | |
37372 | ||
37373 | buf_block_t* block) | |
37374 | { | |
37375 | ulint io_type; | |
37376 | ulint read_page_no; | |
37377 | ulint flush_type; | |
37378 | ||
37379 | buf_io_counter_t* io_counter; | |
37380 | ulint fold; | |
37381 | ||
37382 | ; | |
37383 | ||
37384 | do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 2014); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2014); } while (0); } while (0); | |
37385 | ||
37386 | ||
37387 | ||
37388 | ||
37389 | ||
37390 | ||
37391 | ||
37392 | io_type = block->io_fix; | |
37393 | ||
37394 | if (io_type == 561) { | |
37395 | ||
37396 | ||
37397 | ||
37398 | ||
37399 | read_page_no = mach_read_from_4((block->frame) | |
37400 | + 4); | |
37401 | if (read_page_no != 0 | |
37402 | && !trx_doublewrite_page_inside(read_page_no) | |
37403 | && read_page_no != block->offset) { | |
37404 | ||
37405 | fprintf(stderr, | |
37406 | "InnoDB: Error: page n:o stored in the page read in is %lu, should be %lu!\n", | |
37407 | (ulong) read_page_no, (ulong) block->offset); | |
37408 | } | |
37409 | ||
37410 | ||
37411 | ||
37412 | if (buf_page_is_corrupted(block->frame)) { | |
37413 | fprintf(stderr, | |
37414 | "InnoDB: Database page corruption on disk or a failed\n" | |
37415 | "InnoDB: file read of page %lu.\n", (ulong) block->offset); | |
37416 | ||
37417 | fputs( | |
37418 | "InnoDB: You may have to recover from a backup.\n", stderr); | |
37419 | ||
37420 | buf_page_print(block->frame); | |
37421 | ||
37422 | fprintf(stderr, | |
37423 | "InnoDB: Database page corruption on disk or a failed\n" | |
37424 | "InnoDB: file read of page %lu.\n", (ulong) block->offset); | |
37425 | fputs( | |
37426 | "InnoDB: You may have to recover from a backup.\n", stderr); | |
37427 | fputs( | |
37428 | "InnoDB: It is also possible that your operating\n" | |
37429 | "InnoDB: system has corrupted its own file cache\n" | |
37430 | "InnoDB: and rebooting your computer removes the\n" | |
37431 | "InnoDB: error.\n" | |
37432 | "InnoDB: If the corrupt page is an index page\n" | |
37433 | "InnoDB: you can also try to fix the corruption\n" | |
37434 | "InnoDB: by dumping, dropping, and reimporting\n" | |
37435 | "InnoDB: the corrupt table. You can use CHECK\n" | |
37436 | "InnoDB: TABLE to scan your table for corruption.\n" | |
37437 | "InnoDB: See also " | |
37438 | "InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n" | |
37439 | "InnoDB: about forcing recovery.\n", stderr); | |
37440 | ||
37441 | if (srv_force_recovery < 1) { | |
37442 | fputs( | |
37443 | "InnoDB: Ending processing because of a corrupt database page.\n", | |
37444 | stderr); | |
37445 | exit(1); | |
37446 | } | |
37447 | } | |
37448 | ||
37449 | if (recv_recovery_is_on()) { | |
37450 | recv_recover_page((0), (1), block->frame, | |
37451 | block->space, block->offset); | |
37452 | } | |
37453 | ||
37454 | if (!recv_no_ibuf_operations) { | |
37455 | ibuf_merge_or_delete_for_page(block->frame, | |
37456 | block->space, block->offset, (1)); | |
37457 | } | |
37458 | } | |
37459 | # 2098 "buf/buf0buf.c" | |
37460 | if (io_type == 561) { | |
37461 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2099); | |
37462 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2100); | |
37463 | ||
37464 | block->io_fix = 0; | |
37465 | ||
37466 | ||
37467 | ||
37468 | ||
37469 | ||
37470 | ; | |
37471 | buf_pool->n_pend_reads--; | |
37472 | buf_pool->n_pages_read++; | |
37473 | ||
37474 | rw_lock_x_unlock_func(&(block->lock)); | |
37475 | ||
37476 | if (srv_io_pattern && srv_io_pattern_trace_running) { | |
37477 | fold = buf_page_address_fold(block->space, block->offset); | |
37478 | { (io_counter) = (hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(fold, buf_pool->io_counter_hash))->node); while ((io_counter) != ((void *)0)) { if ((io_counter->space == block->space) && (io_counter->offset == block->offset)) { break; } else { (io_counter) = ((io_counter)->hash); } }}; | |
37479 | ||
37480 | if (io_counter == ((void *)0) && buf_pool->io_counters < srv_io_pattern_size_limit) { | |
37481 | io_counter = mem_heap_alloc(buf_pool->io_counter_heap,(sizeof(buf_io_counter_t))); | |
37482 | io_counter->space = block->space; | |
37483 | io_counter->offset = block->offset; | |
37484 | io_counter->n_read = 0; | |
37485 | io_counter->n_write = 0; | |
37486 | do { hash_cell_t* cell3333; buf_io_counter_t* struct3333; (io_counter)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(buf_page_address_fold(block->space, block->offset), buf_pool->io_counter_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = io_counter; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = io_counter; }} while (0); | |
37487 | ||
37488 | buf_pool->io_counters++; | |
37489 | } | |
37490 | if (io_counter != ((void *)0)) { | |
37491 | io_counter->index_id = ut_dulint_get_low(btr_page_get_index_id(buf_block_get_frame(block))); | |
37492 | io_counter->n_read++; | |
37493 | } | |
37494 | } | |
37495 | ||
37496 | mutex_exit(&(buf_pool->mutex)); | |
37497 | mutex_exit(&block->mutex); | |
37498 | ||
37499 | ||
37500 | ||
37501 | ||
37502 | ||
37503 | } else { | |
37504 | ; | |
37505 | ||
37506 | flush_type = block->flush_type; | |
37507 | if (flush_type == 1) { | |
37508 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2146); | |
37509 | } | |
37510 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2148); | |
37511 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2149); | |
37512 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2150); | |
37513 | ||
37514 | block->io_fix = 0; | |
37515 | ||
37516 | ||
37517 | ||
37518 | ||
37519 | buf_flush_write_complete(block); | |
37520 | ||
37521 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
37522 | if (flush_type == 1) { | |
37523 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37524 | } | |
37525 | ||
37526 | rw_lock_s_unlock_func(&(block->lock)); | |
37527 | ||
37528 | if (srv_io_pattern && srv_io_pattern_trace_running) { | |
37529 | fold = buf_page_address_fold(block->space, block->offset); | |
37530 | { (io_counter) = (hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(fold, buf_pool->io_counter_hash))->node); while ((io_counter) != ((void *)0)) { if ((io_counter->space == block->space) && (io_counter->offset == block->offset)) { break; } else { (io_counter) = ((io_counter)->hash); } }}; | |
37531 | ||
37532 | if (io_counter == ((void *)0) && buf_pool->io_counters < srv_io_pattern_size_limit) { | |
37533 | io_counter = mem_heap_alloc(buf_pool->io_counter_heap,(sizeof(buf_io_counter_t))); | |
37534 | io_counter->space = block->space; | |
37535 | io_counter->offset = block->offset; | |
37536 | io_counter->n_read = 0; | |
37537 | io_counter->n_write = 0; | |
37538 | do { hash_cell_t* cell3333; buf_io_counter_t* struct3333; (io_counter)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(buf_page_address_fold(block->space, block->offset), buf_pool->io_counter_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = io_counter; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = io_counter; }} while (0); | |
37539 | ||
37540 | buf_pool->io_counters++; | |
37541 | } | |
37542 | if (io_counter != ((void *)0)) { | |
37543 | io_counter->index_id = ut_dulint_get_low(btr_page_get_index_id(buf_block_get_frame(block))); | |
37544 | io_counter->n_write++; | |
37545 | } | |
37546 | } | |
37547 | ||
37548 | buf_pool->n_pages_written++; | |
37549 | ||
37550 | mutex_exit(&(buf_pool->mutex)); | |
37551 | mutex_exit(&block->mutex); | |
37552 | ||
37553 | ||
37554 | ||
37555 | ||
37556 | ||
37557 | ||
37558 | } | |
37559 | ||
37560 | ||
37561 | ||
37562 | ||
37563 | ||
37564 | ||
37565 | ||
37566 | } | |
37567 | ||
37568 | ||
37569 | ||
37570 | ||
37571 | ||
37572 | ||
37573 | void | |
37574 | buf_pool_invalidate(void) | |
37575 | ||
37576 | { | |
37577 | ulint freed; | |
37578 | ||
37579 | ; | |
37580 | ||
37581 | freed = (1); | |
37582 | ||
37583 | while (freed) { | |
37584 | freed = buf_LRU_search_and_free_block(100); | |
37585 | } | |
37586 | ||
37587 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2225); | |
37588 | ||
37589 | ; | |
37590 | ||
37591 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37592 | } | |
37593 | ||
37594 | ||
37595 | ||
37596 | ||
37597 | ulint | |
37598 | buf_validate(void) | |
37599 | ||
37600 | { | |
37601 | buf_block_t* block; | |
37602 | ulint i; | |
37603 | ulint n_single_flush = 0; | |
37604 | ulint n_lru_flush = 0; | |
37605 | ulint n_list_flush = 0; | |
37606 | ulint n_lru = 0; | |
37607 | ulint n_flush = 0; | |
37608 | ulint n_free = 0; | |
37609 | ulint n_page = 0; | |
37610 | ulint n_single_flush_tmp = 0; | |
37611 | ulint n_lru_flush_tmp = 0; | |
37612 | ulint n_list_flush_tmp = 0; | |
37613 | ||
37614 | ; | |
37615 | ||
37616 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2254); | |
37617 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2255); | |
37618 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2256); | |
37619 | rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 2257); | |
37620 | ||
37621 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2259); | |
37622 | n_single_flush_tmp = buf_pool->n_flush[2]; | |
37623 | n_list_flush_tmp = buf_pool->n_flush[3]; | |
37624 | n_lru_flush_tmp = buf_pool->n_flush[1]; | |
37625 | mutex_exit(&(buf_pool->mutex)); | |
37626 | ||
37627 | for (i = 0; i < buf_pool->curr_size; i++) { | |
37628 | ||
37629 | block = buf_pool_get_nth_block(buf_pool, i); | |
37630 | ||
37631 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2269); | |
37632 | ||
37633 | if (block->state == 213) { | |
37634 | ||
37635 | do { if (__builtin_expect(!((ulint)(buf_page_hash_get(block->space, block->offset) == block)), (0))) { ut_dbg_assertion_failed("buf_page_hash_get(block->space, block->offset) == block", "buf/buf0buf.c", (ulint) 2274); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2274); } while (0); } while (0); | |
37636 | ||
37637 | n_page++; | |
37638 | ||
37639 | ||
37640 | ||
37641 | ||
37642 | ||
37643 | ||
37644 | if (block->io_fix == 562) { | |
37645 | ||
37646 | if (block->flush_type == 1) { | |
37647 | n_lru_flush++; | |
37648 | do { if (__builtin_expect(!((ulint)(rw_lock_is_locked(&(block->lock), 352))), (0))) { ut_dbg_assertion_failed("rw_lock_is_locked(&(block->lock), RW_LOCK_SHARED)", "buf/buf0buf.c", (ulint) 2287); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2287); } while (0); } while (0); | |
37649 | ||
37650 | } else if (block->flush_type == | |
37651 | 3) { | |
37652 | n_list_flush++; | |
37653 | } else if (block->flush_type == | |
37654 | 2) { | |
37655 | n_single_flush++; | |
37656 | } else { | |
37657 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2295); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
37658 | } | |
37659 | ||
37660 | } else if (block->io_fix == 561) { | |
37661 | ||
37662 | do { if (__builtin_expect(!((ulint)(rw_lock_is_locked(&(block->lock), 351))), (0))) { ut_dbg_assertion_failed("rw_lock_is_locked(&(block->lock), RW_LOCK_EX)", "buf/buf0buf.c", (ulint) 2301); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2301); } while (0); } while (0); | |
37663 | ||
37664 | } | |
37665 | ||
37666 | n_lru++; | |
37667 | ||
37668 | if (ut_dulint_cmp(block->oldest_modification, | |
37669 | ut_dulint_zero) > 0) { | |
37670 | n_flush++; | |
37671 | } | |
37672 | ||
37673 | } else if (block->state == 211) { | |
37674 | n_free++; | |
37675 | } | |
37676 | ||
37677 | mutex_exit(&block->mutex); | |
37678 | } | |
37679 | ||
37680 | if (n_lru + n_free > buf_pool->curr_size) { | |
37681 | fprintf(stderr, "n LRU %lu, n free %lu\n", (ulong) n_lru, (ulong) n_free); | |
37682 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2320); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
37683 | } | |
37684 | ||
37685 | do { if (__builtin_expect(!((ulint)((buf_pool->LRU).count == n_lru)), (0))) { ut_dbg_assertion_failed("UT_LIST_GET_LEN(buf_pool->LRU) == n_lru", "buf/buf0buf.c", (ulint) 2323); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2323); } while (0); } while (0); | |
37686 | if ((buf_pool->free).count != n_free) { | |
37687 | fprintf(stderr, "Free list len %lu, free blocks %lu\n", | |
37688 | (ulong) (buf_pool->free).count, (ulong) n_free); | |
37689 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2327); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
37690 | } | |
37691 | do { if (__builtin_expect(!((ulint)((buf_pool->flush_list).count == n_flush)), (0))) { ut_dbg_assertion_failed("UT_LIST_GET_LEN(buf_pool->flush_list) == n_flush", "buf/buf0buf.c", (ulint) 2329); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2329); } while (0); } while (0); | |
37692 | ||
37693 | do { if (__builtin_expect(!((ulint)(n_single_flush_tmp == n_single_flush)), (0))) { ut_dbg_assertion_failed("n_single_flush_tmp == n_single_flush", "buf/buf0buf.c", (ulint) 2331); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2331); } while (0); } while (0); | |
37694 | do { if (__builtin_expect(!((ulint)(n_list_flush_tmp == n_list_flush)), (0))) { ut_dbg_assertion_failed("n_list_flush_tmp == n_list_flush", "buf/buf0buf.c", (ulint) 2332); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2332); } while (0); } while (0); | |
37695 | do { if (__builtin_expect(!((ulint)(n_lru_flush_tmp == n_lru_flush)), (0))) { ut_dbg_assertion_failed("n_lru_flush_tmp == n_lru_flush", "buf/buf0buf.c", (ulint) 2333); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2333); } while (0); } while (0); | |
37696 | ||
37697 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37698 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
37699 | mutex_exit(&(buf_pool->free_mutex)); | |
37700 | rw_lock_x_unlock_func(&(buf_pool->hash_latch)); | |
37701 | ||
37702 | do { if (__builtin_expect(!((ulint)(buf_LRU_validate())), (0))) { ut_dbg_assertion_failed("buf_LRU_validate()", "buf/buf0buf.c", (ulint) 2340); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2340); } while (0); } while (0); | |
37703 | do { if (__builtin_expect(!((ulint)(buf_flush_validate())), (0))) { ut_dbg_assertion_failed("buf_flush_validate()", "buf/buf0buf.c", (ulint) 2341); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2341); } while (0); } while (0); | |
37704 | ||
37705 | return((1)); | |
37706 | } | |
37707 | ||
37708 | ||
37709 | ||
37710 | ||
37711 | void | |
37712 | buf_print(void) | |
37713 | ||
37714 | { | |
37715 | dulint* index_ids; | |
37716 | ulint* counts; | |
37717 | ulint size; | |
37718 | ulint i; | |
37719 | ulint j; | |
37720 | dulint id; | |
37721 | ulint n_found; | |
37722 | buf_frame_t* frame; | |
37723 | dict_index_t* index; | |
37724 | ||
37725 | ; | |
37726 | ||
37727 | size = buf_pool->curr_size; | |
37728 | ||
37729 | index_ids = mem_alloc_func((sizeof(dulint) * size), "buf/buf0buf.c", 2367); | |
37730 | counts = mem_alloc_func((sizeof(ulint) * size), "buf/buf0buf.c", 2368); | |
37731 | ||
37732 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2370); | |
37733 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2371); | |
37734 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2372); | |
37735 | ||
37736 | fprintf(stderr, | |
37737 | "buf_pool size %lu\n" | |
37738 | "database pages %lu\n" | |
37739 | "free pages %lu\n" | |
37740 | "modified database pages %lu\n" | |
37741 | "n pending reads %lu\n" | |
37742 | "n pending flush LRU %lu list %lu single page %lu\n" | |
37743 | "pages read %lu, created %lu, written %lu\n", | |
37744 | (ulong) size, | |
37745 | (ulong) (buf_pool->LRU).count, | |
37746 | (ulong) (buf_pool->free).count, | |
37747 | (ulong) (buf_pool->flush_list).count, | |
37748 | (ulong) buf_pool->n_pend_reads, | |
37749 | (ulong) buf_pool->n_flush[1], | |
37750 | (ulong) buf_pool->n_flush[3], | |
37751 | (ulong) buf_pool->n_flush[2], | |
37752 | (ulong) buf_pool->n_pages_read, buf_pool->n_pages_created, | |
37753 | (ulong) buf_pool->n_pages_written); | |
37754 | ||
37755 | ||
37756 | ||
37757 | n_found = 0; | |
37758 | ||
37759 | for (i = 0; i < size; i++) { | |
37760 | frame = buf_pool_get_nth_block(buf_pool, i)->frame; | |
37761 | ||
37762 | if (fil_page_get_type(frame) == 17855) { | |
37763 | ||
37764 | id = btr_page_get_index_id(frame); | |
37765 | ||
37766 | ||
37767 | j = 0; | |
37768 | ||
37769 | while (j < n_found) { | |
37770 | ||
37771 | if (ut_dulint_cmp(index_ids[j], id) == 0) { | |
37772 | (counts[j])++; | |
37773 | ||
37774 | break; | |
37775 | } | |
37776 | j++; | |
37777 | } | |
37778 | ||
37779 | if (j == n_found) { | |
37780 | n_found++; | |
37781 | index_ids[j] = id; | |
37782 | counts[j] = 1; | |
37783 | } | |
37784 | } | |
37785 | } | |
37786 | ||
37787 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37788 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
37789 | mutex_exit(&(buf_pool->free_mutex)); | |
37790 | ||
37791 | for (i = 0; i < n_found; i++) { | |
37792 | index = dict_index_get_if_in_cache(index_ids[i]); | |
37793 | ||
37794 | fprintf(stderr, | |
37795 | "Block count for index %lu in buffer is about %lu", | |
37796 | (ulong) ut_dulint_get_low(index_ids[i]), | |
37797 | (ulong) counts[i]); | |
37798 | ||
37799 | if (index) { | |
37800 | _IO_putc (' ', stderr); | |
37801 | dict_index_name_print(stderr, ((void *)0), index); | |
37802 | } | |
37803 | ||
37804 | _IO_putc ('\n', stderr); | |
37805 | } | |
37806 | ||
37807 | mem_free_func((index_ids), "buf/buf0buf.c", 2445); | |
37808 | mem_free_func((counts), "buf/buf0buf.c", 2446); | |
37809 | ||
37810 | do { if (__builtin_expect(!((ulint)(buf_validate())), (0))) { ut_dbg_assertion_failed("buf_validate()", "buf/buf0buf.c", (ulint) 2448); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2448); } while (0); } while (0); | |
37811 | } | |
37812 | # 2484 "buf/buf0buf.c" | |
37813 | ulint | |
37814 | buf_get_n_pending_ios(void) | |
37815 | ||
37816 | { | |
37817 | return(buf_pool->n_pend_reads | |
37818 | + buf_pool->n_flush[1] | |
37819 | + buf_pool->n_flush[3] | |
37820 | + buf_pool->n_flush[2]); | |
37821 | } | |
37822 | ||
37823 | ||
37824 | ||
37825 | ||
37826 | ||
37827 | ulint | |
37828 | buf_get_modified_ratio_pct(void) | |
37829 | ||
37830 | { | |
37831 | ulint ratio; | |
37832 | ||
37833 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2504); | |
37834 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2505); | |
37835 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2506); | |
37836 | ||
37837 | ratio = (100 * (buf_pool->flush_list).count) | |
37838 | / (1 + (buf_pool->LRU).count | |
37839 | + (buf_pool->free).count); | |
37840 | ||
37841 | ||
37842 | ||
37843 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37844 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
37845 | mutex_exit(&(buf_pool->free_mutex)); | |
37846 | ||
37847 | return(ratio); | |
37848 | } | |
37849 | ||
37850 | ||
37851 | ||
37852 | ||
37853 | void | |
37854 | buf_print_io( | |
37855 | ||
37856 | FILE* file) | |
37857 | { | |
37858 | time_t current_time; | |
37859 | double time_elapsed; | |
37860 | ulint size; | |
37861 | ||
37862 | ; | |
37863 | size = buf_pool->curr_size; | |
37864 | ||
37865 | mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2536); | |
37866 | mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2537); | |
37867 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2538); | |
37868 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2539); | |
37869 | ||
37870 | if (srv_use_awe) { | |
37871 | fprintf(stderr, | |
37872 | "AWE: Buffer pool memory frames %lu\n", | |
37873 | (ulong) buf_pool->n_frames); | |
37874 | ||
37875 | fprintf(stderr, | |
37876 | "AWE: Database pages and free buffers mapped in frames %lu\n", | |
37877 | (ulong) (buf_pool->awe_LRU_free_mapped).count); | |
37878 | } | |
37879 | fprintf(file, | |
37880 | "Buffer pool size %lu\n" | |
37881 | "Buffer pool size, bytes %lu\n" | |
37882 | "Free buffers %lu\n" | |
37883 | "Database pages %lu\n" | |
37884 | "Modified db pages %lu\n" | |
37885 | "Pending reads %lu\n" | |
37886 | "Pending writes: LRU %lu, flush list %lu, single page %lu\n", | |
37887 | (ulong) size, | |
37888 | (ulong) size * (2 * 8192), | |
37889 | (ulong) (buf_pool->free).count, | |
37890 | (ulong) (buf_pool->LRU).count, | |
37891 | (ulong) (buf_pool->flush_list).count, | |
37892 | (ulong) buf_pool->n_pend_reads, | |
37893 | (ulong) buf_pool->n_flush[1] | |
37894 | + buf_pool->init_flush[1], | |
37895 | (ulong) buf_pool->n_flush[3] | |
37896 | + buf_pool->init_flush[3], | |
37897 | (ulong) buf_pool->n_flush[2]); | |
37898 | ||
37899 | current_time = time(((void *)0)); | |
37900 | time_elapsed = 0.001 + difftime(current_time, | |
37901 | buf_pool->last_printout_time); | |
37902 | buf_pool->last_printout_time = current_time; | |
37903 | ||
37904 | fprintf(file, | |
37905 | "Pages read %lu, created %lu, written %lu\n" | |
37906 | "%.2f reads/s, %.2f creates/s, %.2f writes/s\n", | |
37907 | (ulong) buf_pool->n_pages_read, | |
37908 | (ulong) buf_pool->n_pages_created, | |
37909 | (ulong) buf_pool->n_pages_written, | |
37910 | (buf_pool->n_pages_read - buf_pool->n_pages_read_old) | |
37911 | / time_elapsed, | |
37912 | (buf_pool->n_pages_created - buf_pool->n_pages_created_old) | |
37913 | / time_elapsed, | |
37914 | (buf_pool->n_pages_written - buf_pool->n_pages_written_old) | |
37915 | / time_elapsed); | |
37916 | ||
37917 | if (srv_use_awe) { | |
37918 | fprintf(file, "AWE: %.2f page remaps/s\n", | |
37919 | (buf_pool->n_pages_awe_remapped | |
37920 | - buf_pool->n_pages_awe_remapped_old) | |
37921 | / time_elapsed); | |
37922 | } | |
37923 | ||
37924 | if (buf_pool->n_page_gets > buf_pool->n_page_gets_old) { | |
37925 | fprintf(file, "Buffer pool hit rate %lu / 1000\n", | |
37926 | (ulong) (1000 | |
37927 | - ((1000 * | |
37928 | (buf_pool->n_pages_read - buf_pool->n_pages_read_old)) | |
37929 | / (buf_pool->n_page_gets - buf_pool->n_page_gets_old)))); | |
37930 | } else { | |
37931 | fputs("No buffer pool page gets since the last printout\n", | |
37932 | file); | |
37933 | } | |
37934 | ||
37935 | buf_pool->n_page_gets_old = buf_pool->n_page_gets; | |
37936 | buf_pool->n_pages_read_old = buf_pool->n_pages_read; | |
37937 | buf_pool->n_pages_created_old = buf_pool->n_pages_created; | |
37938 | buf_pool->n_pages_written_old = buf_pool->n_pages_written; | |
37939 | buf_pool->n_pages_awe_remapped_old = buf_pool->n_pages_awe_remapped; | |
37940 | ||
37941 | mutex_exit(&(buf_pool->LRU_mutex)); | |
37942 | mutex_exit(&(buf_pool->flush_list_mutex)); | |
37943 | mutex_exit(&(buf_pool->free_mutex)); | |
37944 | mutex_exit(&(buf_pool->mutex)); | |
37945 | } | |
37946 | ||
37947 | ||
37948 | ||
37949 | ||
37950 | void | |
37951 | buf_refresh_io_stats(void) | |
37952 | ||
37953 | { | |
37954 | buf_pool->last_printout_time = time(((void *)0)); | |
37955 | buf_pool->n_page_gets_old = buf_pool->n_page_gets; | |
37956 | buf_pool->n_pages_read_old = buf_pool->n_pages_read; | |
37957 | buf_pool->n_pages_created_old = buf_pool->n_pages_created; | |
37958 | buf_pool->n_pages_written_old = buf_pool->n_pages_written; | |
37959 | buf_pool->n_pages_awe_remapped_old = buf_pool->n_pages_awe_remapped; | |
37960 | } | |
37961 | ||
37962 | ||
37963 | ||
37964 | ||
37965 | ulint | |
37966 | buf_all_freed(void) | |
37967 | ||
37968 | { | |
37969 | buf_block_t* block; | |
37970 | ulint i; | |
37971 | ||
37972 | ; | |
37973 | ||
37974 | for (i = 0; i < buf_pool->curr_size; i++) { | |
37975 | ||
37976 | block = buf_pool_get_nth_block(buf_pool, i); | |
37977 | ||
37978 | mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2649); | |
37979 | ||
37980 | if (block->state == 213) { | |
37981 | ||
37982 | if (!buf_flush_ready_for_replace(block)) { | |
37983 | ||
37984 | fprintf(stderr, | |
37985 | "Page %lu %lu still fixed or dirty\n", | |
37986 | (ulong) block->space, | |
37987 | (ulong) block->offset); | |
37988 | do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2659); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0); | |
37989 | } | |
37990 | } | |
37991 | ||
37992 | mutex_exit(&block->mutex); | |
37993 | } | |
37994 | ||
37995 | return((1)); | |
37996 | } | |
37997 | ||
37998 | ||
37999 | ||
38000 | ||
38001 | ||
38002 | ulint | |
38003 | buf_pool_check_no_pending_io(void) | |
38004 | ||
38005 | ||
38006 | { | |
38007 | ulint ret; | |
38008 | ||
38009 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2680); | |
38010 | ||
38011 | if (buf_pool->n_pend_reads + buf_pool->n_flush[1] | |
38012 | + buf_pool->n_flush[3] | |
38013 | + buf_pool->n_flush[2]) { | |
38014 | ret = (0); | |
38015 | } else { | |
38016 | ret = (1); | |
38017 | } | |
38018 | ||
38019 | mutex_exit(&(buf_pool->mutex)); | |
38020 | ||
38021 | return(ret); | |
38022 | } | |
38023 | ||
38024 | ||
38025 | ||
38026 | ||
38027 | ulint | |
38028 | buf_get_free_list_len(void) | |
38029 | ||
38030 | { | |
38031 | ulint len; | |
38032 | ||
38033 | mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2704); | |
38034 | ||
38035 | len = (buf_pool->free).count; | |
38036 | ||
38037 | mutex_exit(&(buf_pool->free_mutex)); | |
38038 | ||
38039 | return(len); | |
38040 | } | |
38041 | ||
38042 | ||
38043 | ||
38044 | ||
38045 | void | |
38046 | buf_block_print( | |
38047 | ||
38048 | const buf_block_t* block) | |
38049 | { | |
38050 | fprintf(stderr, | |
38051 | "BLOCK fields\nmagic_n: 0x%lx\n" | |
38052 | "state: %lu frame: 0x%lx space:offset: 0x%lx:0x%lx\n" | |
38053 | "hash value: 0x%lx check_index_page_at_flush: %ld\n" | |
38054 | "newest_modification %lu:%lu oldest_modification %lu:%lu\n" | |
38055 | "flush_type: %lu in_free_list: %ld in_LRU_list: %ld\n" | |
38056 | "LRU_position: %ld freed_page_clock: %lu old: %ld\n" | |
38057 | "accessed: %ld buf_fix_count: %lu io_fix: %ld " | |
38058 | "modify_clock: %lu:%lu\n" | |
38059 | "n_hash_helps: %lu n_fields: %ld n_bytes: %lu side: %lu\n" | |
38060 | "is_hashed: %lu n_pointers: %lu curr_n_fields: %lu\n" | |
38061 | "curr_n_bytes: %lu curr_side: %lu index name: %s\n" | |
38062 | "file_page_was_freed: %lu\n", | |
38063 | block->magic_n, block->state, (ulint) block->frame, | |
38064 | block->space, block->offset, block->lock_hash_val, | |
38065 | block->check_index_page_at_flush, | |
38066 | ut_dulint_get_high(block->newest_modification), | |
38067 | ut_dulint_get_low(block->newest_modification), | |
38068 | ut_dulint_get_high(block->oldest_modification), | |
38069 | ut_dulint_get_low(block->oldest_modification), | |
38070 | block->flush_type, block->in_free_list, block->in_LRU_list, | |
38071 | block->LRU_position, block->freed_page_clock, | |
38072 | block->old, block->accessed, block->buf_fix_count, | |
38073 | block->io_fix, | |
38074 | ut_dulint_get_high(block->modify_clock), | |
38075 | ut_dulint_get_low(block->modify_clock), | |
38076 | block->n_hash_helps, block->n_fields, block->n_bytes, | |
38077 | block->side, block->is_hashed, block->n_pointers, | |
38078 | block->curr_n_fields, block->curr_n_bytes, | |
38079 | block->curr_side, block->index->name, | |
38080 | block->file_page_was_freed); | |
38081 | } | |
38082 | ||
38083 | ||
38084 | ||
38085 | ||
38086 | void | |
38087 | buf_print_diagnostic( | |
38088 | ||
38089 | mtr_t* mtr, | |
38090 | const buf_block_t* block) | |
38091 | { | |
38092 | fprintf(stderr, "=== MTR ===\n"); | |
38093 | mtr_print(mtr); | |
38094 | buf_LRU_print(); | |
38095 | buf_print(); | |
38096 | buf_LRU_validate(); | |
38097 | buf_print_io(stderr); | |
38098 | fprintf(stderr, "=== BLOCK ===\n"); | |
38099 | buf_block_print(block); | |
38100 | } | |
38101 | ||
38102 | buf_block_t* | |
38103 | buf_pool_get_nth_block_no_inline( | |
38104 | ||
38105 | ||
38106 | buf_pool_t* buf_pool, | |
38107 | ulint i) { | |
38108 | ||
38109 | return buf_pool_get_nth_block(buf_pool, i); | |
38110 | ||
38111 | } | |
38112 | ||
38113 | ||
38114 | ||
38115 | ||
38116 | ||
38117 | void | |
38118 | buf_io_counter_control(void) | |
38119 | ||
38120 | { | |
38121 | ulint n; | |
38122 | ||
38123 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2794); | |
38124 | if (srv_io_pattern_trace) { | |
38125 | if (buf_pool->io_counter_hash == ((void *)0)) { | |
38126 | ||
38127 | buf_pool->io_counter_hash = hash0_create(20 * buf_pool->max_size); | |
38128 | buf_pool->io_counter_heap = mem_heap_create_func( (4096 * 1024), ((void *)0), 0, "buf/buf0buf.c", 2799); | |
38129 | buf_pool->io_counters = 0; | |
38130 | ||
38131 | srv_io_pattern = (1); | |
38132 | } | |
38133 | } else { | |
38134 | if (buf_pool->io_counter_hash != ((void *)0)) { | |
38135 | srv_io_pattern = (0); | |
38136 | ||
38137 | for (n = 0; n < buf_pool->io_counter_hash->n_cells; n++) { | |
38138 | (buf_pool->io_counter_hash->array + n)->node = ((void *)0); | |
38139 | } | |
38140 | mem_heap_free_func( (buf_pool->io_counter_heap), "buf/buf0buf.c", 2811); | |
38141 | buf_pool->io_counter_heap = ((void *)0); | |
38142 | buf_pool->io_counters = 0; | |
38143 | ||
38144 | hash_table_free(buf_pool->io_counter_hash); | |
38145 | buf_pool->io_counter_hash = ((void *)0); | |
38146 | } | |
38147 | } | |
38148 | mutex_exit(&(buf_pool->mutex)); | |
38149 | } | |
38150 | ||
38151 | void | |
38152 | buf_io_counter_clear(void) | |
38153 | ||
38154 | { | |
38155 | ulint n; | |
38156 | ||
38157 | mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2828); | |
38158 | if (buf_pool->io_counter_hash != ((void *)0)) { | |
38159 | for (n = 0; n < buf_pool->io_counter_hash->n_cells; n++) { | |
38160 | (buf_pool->io_counter_hash->array + n)->node = ((void *)0); | |
38161 | } | |
38162 | mem_heap_empty(buf_pool->io_counter_heap); | |
38163 | buf_pool->io_counters = 0; | |
38164 | } | |
38165 | mutex_exit(&(buf_pool->mutex)); | |
38166 | } |