3 .type add_request_to_runlist, @function
4 add_request_to_runlist
:
5 movq runlist
(%rip
), %rdx
15 movq
%rdi
, runlist
(%rip
)
32 .size add_request_to_runlist, .-add_request_to_runlist
33 .section __libc_freeres_fn,"ax",@progbits
35 .type free_res, @function
37 movq pool_max_size
(%rip
), %rax
44 leaq
(%r12,%rax
,8), %rbp
60 .size free_res, .-free_res
63 .globl __aio_free_request
64 .type __aio_free_request, @function
66 movq freelist
(%rip
), %rax
68 movq
%rdi
, freelist
(%rip
)
71 .size __aio_free_request, .-__aio_free_request
74 .type __aio_find_req, @function
76 movq requests
(%rip
), %rax
116 .size __aio_find_req, .-__aio_find_req
118 .globl __aio_find_req_fd
119 .type __aio_find_req_fd, @function
121 movq requests
(%rip
), %rax
149 .size __aio_find_req_fd, .-__aio_find_req_fd
150 .section .rodata.str1.1,"aMS",@progbits,1
152 .string "../sysdeps/pthread/aio_misc.c"
153 .section .rodata.str1.8,"aMS",@progbits,1
156 .string "req->running == yes || req->running == queued || req->running == done"
159 .globl __aio_remove_request
160 .type __aio_remove_request, @function
161 __aio_remove_request
:
221 movq runlist
(%rip
), %rdx
241 movq
%rdx
, requests
(%rip
)
244 leaq __PRETTY_FUNCTION__.9979
(%rip
), %rcx
245 leaq
.LC0(%rip), %rsi
246 leaq
.LC1(%rip), %rdi
249 call __assert_fail@PLT
259 movq
%rdx
, requests
(%rip
)
263 movq
%rax
, runlist
(%rip
)
265 .size __aio_remove_request, .-__aio_remove_request
266 .section .rodata.str1.1
268 .string "runp->running == allocated"
270 .string "runp->running == yes"
273 .type handle_fildes_io, @function
279 leaq __aio_requests_mutex
(%rip
), %r12
285 call pthread_self@PLT
290 call pthread_getschedparam@PLT
315 call pthread_setschedparam@PLT
327 movq errno@gottpoff
(%rip
), %rax
332 call pthread_mutex_lock@PLT
339 call __aio_notify@PLT
346 call __aio_remove_request
350 call add_request_to_runlist
352 movq freelist
(%rip
), %rax
354 movq
%rbx
, freelist
(%rip
)
356 movq runlist
(%rip
), %rbx
365 movq
%rax
, runlist
(%rip
)
367 movl idle_thread_count
(%rip
), %eax
370 movl nthreads
(%rip
), %eax
371 cmpl %eax
, optim
(%rip
)
375 call pthread_mutex_unlock@PLT
380 call pthread_mutex_lock@PLT
381 movq runlist
(%rip
), %rbx
387 movl
24+optim
(%rip
), %edx
392 addl $
1, idle_thread_count
(%rip
)
393 call __clock_gettime@PLT
394 movslq
24+optim
(%rip
), %rax
397 cmpq $
999999999, %rdx
403 leaq __aio_new_request_notification
(%rip
), %rdi
405 call pthread_cond_timedwait@PLT
406 movq runlist
(%rip
), %rbx
407 subl $
1, idle_thread_count
(%rip
)
411 leaq __aio_requests_mutex
(%rip
), %rdi
412 subl $
1, nthreads
(%rip
)
413 call pthread_mutex_unlock@PLT
426 movq errno@gottpoff
(%rip
), %rcx
427 movl
%fs:(%rcx
), %edx
435 call __libc_pread@PLT
442 call pthread_mutex_lock@PLT
446 movq errno@gottpoff
(%rip
), %rax
447 movl
%fs:(%rax
), %eax
453 movq errno@gottpoff
(%rip
), %rcx
454 movl
%fs:(%rcx
), %edx
462 call __libc_pwrite@PLT
469 movq errno@gottpoff
(%rip
), %rdx
483 movq errno@gottpoff
(%rip
), %rdx
497 leaq __aio_new_request_notification
(%rip
), %rdi
498 call pthread_cond_signal@PLT
526 subq $
1000000000, %rdx
536 call pthread_attr_init@PLT
539 call pthread_attr_setdetachstate@PLT
541 leaq handle_fildes_io
(%rip
), %rdx
544 call pthread_create@PLT
547 addl $
1, nthreads
(%rip
)
573 leaq __PRETTY_FUNCTION__.10019
(%rip
), %rcx
574 leaq
.LC0(%rip), %rsi
575 leaq
.LC2(%rip), %rdi
577 call __assert_fail@PLT
579 leaq __PRETTY_FUNCTION__.10019
(%rip
), %rcx
580 leaq
.LC0(%rip), %rsi
581 leaq
.LC2(%rip), %rdi
583 call __assert_fail@PLT
585 leaq __PRETTY_FUNCTION__.10019
(%rip
), %rcx
586 leaq
.LC0(%rip), %rsi
587 leaq
.LC3(%rip), %rdi
589 call __assert_fail@PLT
590 .size handle_fildes_io, .-handle_fildes_io
593 .type __aio_init, @function
597 leaq __aio_requests_mutex
(%rip
), %rdi
598 call pthread_mutex_lock@PLT
605 movl
%eax
, 24+optim
(%rip
)
608 leaq __aio_requests_mutex
(%rip
), %rdi
609 jmp pthread_mutex_unlock@PLT
618 movl
%eax
, optim
(%rip
)
624 movl
%eax
, 4+optim
(%rip
)
626 .size __aio_init, .-__aio_init
628 .set aio_init,__aio_init
630 .globl __aio_enqueue_request
631 .type __aio_enqueue_request, @function
632 __aio_enqueue_request
:
648 call pthread_self@PLT
652 call pthread_getschedparam@PLT
655 leaq __aio_requests_mutex
(%rip
), %rdi
657 call pthread_mutex_lock@PLT
658 movq requests
(%rip
), %r8
679 movq freelist
(%rip
), %rbp
687 movl
%r14d
, 104(%r13)
690 movq
%rax
, freelist
(%rip
)
712 movl nthreads
(%rip
), %eax
713 cmpl %eax
, optim
(%rip
)
715 movl idle_thread_count
(%rip
), %r8d
720 call add_request_to_runlist
726 leaq __aio_requests_mutex
(%rip
), %rdi
727 call pthread_mutex_unlock@PLT
742 cmpl %r14d
, 104(%rdx
)
763 movq
%rbp
, requests
(%rip
)
781 call pthread_attr_init@PLT
784 call pthread_attr_setdetachstate@PLT
786 call __pthread_get_minstack@PLT
789 call pthread_attr_setstacksize@PLT
798 # 56 "../sysdeps/unix/sysv/linux/aio_misc.h" 1
803 leaq handle_fildes_io
(%rip
), %rdx
807 call pthread_create@PLT
815 # 62 "../sysdeps/unix/sysv/linux/aio_misc.h" 1
821 call pthread_attr_destroy@PLT
824 addl $
1, nthreads
(%rip
)
830 movq pool_size
(%rip
), %rdx
831 movq pool_max_size
(%rip
), %rax
851 movq pool
(%rip
), %rsi
853 movq
%r9, pool_size
(%rip
)
854 movq
%rax
, (%rsi
,%rdx
,8)
872 leaq __aio_new_request_notification
(%rip
), %rdi
873 call pthread_cond_signal@PLT
878 movslq
4+optim
(%rip
), %rdi
885 movq pool
(%rip
), %rdi
889 leaq
0(,%r15,8), %rsi
893 movq
%r15, pool_max_size
(%rip
)
894 movq
%rax
, pool
(%rip
)
914 movl nthreads
(%rip
), %eax
918 movl idle_thread_count
(%rip
), %r8d
926 call __aio_remove_request
927 movq freelist
(%rip
), %rax
929 movq
%rbp
, freelist
(%rip
)
931 movq errno@gottpoff
(%rip
), %rax
934 movl
%ebx
, %fs:(%rax
)
939 movq errno@gottpoff
(%rip
), %rax
946 leaq __aio_requests_mutex
(%rip
), %rdi
947 call pthread_mutex_unlock@PLT
948 movq errno@gottpoff
(%rip
), %rax
951 .size __aio_enqueue_request, .-__aio_enqueue_request
952 .section .rodata.str1.16,"aMS",@progbits,1
954 .type __PRETTY_FUNCTION__.10019, @object
955 .size __PRETTY_FUNCTION__.10019, 17
956 __PRETTY_FUNCTION__.10019
:
957 .string "handle_fildes_io"
959 .type __PRETTY_FUNCTION__.9979, @object
960 .size __PRETTY_FUNCTION__.9979, 21
961 __PRETTY_FUNCTION__.9979
:
962 .string "__aio_remove_request"
963 .section __libc_subfreeres,"aw",@progbits
965 .type __elf_set___libc_subfreeres_element_free_res__, @object
966 .size __elf_set___libc_subfreeres_element_free_res__, 8
967 __elf_set___libc_subfreeres_element_free_res__
:
969 .globl __aio_new_request_notification
972 .type __aio_new_request_notification, @object
973 .size __aio_new_request_notification, 48
974 __aio_new_request_notification
:
976 .globl __aio_requests_mutex
979 .type __aio_requests_mutex, @object
980 .size __aio_requests_mutex, 40
981 __aio_requests_mutex
:
1003 .local idle_thread_count
1004 .comm idle_thread_count,4,4
1015 .local pool_max_size
1016 .comm pool_max_size,8,8