Lines Matching refs:aiocb

93 /// Newtype that adds Send and Sync to libc::aiocb, which contains raw pointers
95 struct LibcAiocb(libc::aiocb);
109 aiocb: LibcAiocb,
121 pin_utils::unsafe_unpinned!(aiocb: LibcAiocb);
126 let p: *mut libc::aiocb = &mut self.aiocb.0;
134 libc::aio_cancel(self.aiocb.0.aio_fildes, &mut self.aiocb.0)
150 let mut a = unsafe { mem::zeroed::<libc::aiocb>() };
155 aiocb: LibcAiocb(a),
161 let r = unsafe { libc::aio_error(&self.aiocb().0) };
188 self.aiocb.0.aio_sigevent = SigEvent::new(sigev_notify).sigevent();
195 .field("aiocb", &self.aiocb.0)
253 /// let mut aiocb = Box::pin(AioWrite::new(f.as_raw_fd(),
258 /// aiocb.as_mut().submit().unwrap();
259 /// let cs = aiocb.as_mut().cancel().unwrap();
261 /// while (aiocb.as_mut().error() == Err(Errno::EINPROGRESS)) {
266 /// let _ = aiocb.as_mut().aio_return();
294 /// let mut aiocb = Box::pin(AioWrite::new(f.as_raw_fd(),
299 /// aiocb.as_mut().submit().unwrap();
300 /// while (aiocb.as_mut().error() == Err(Errno::EINPROGRESS)) {
303 /// assert_eq!(aiocb.as_mut().aio_return().unwrap(), WBUF.len());
363 self.aiocb().cancel()
367 self.aiocb().error()
371 self.aiocb.aiocb.0.aio_fildes
375 self.aiocb.in_progress()
379 self.aiocb.aiocb.0.aio_reqprio
383 self.aiocb.set_sigev_notify(sev)
387 SigEvent::from(&self.aiocb.aiocb.0.aio_sigevent)
394 self.aiocb().aio_return()
398 let p: *mut libc::aiocb = &mut self.as_mut().aiocb().aiocb.0;
400 self.aiocb().set_in_progress();
433 aiocb: AioCb,
438 unsafe_pinned!(aiocb: AioCb);
442 AioFsyncMode::try_from(self.aiocb.aiocb.0.aio_lio_opcode).unwrap()
462 let mut aiocb = AioCb::common_init(fd, prio, sigev_notify);
467 aiocb.aiocb.0.aio_lio_opcode = mode as libc::c_int;
469 aiocb,
481 self.aiocb().aio_return().map(drop)
485 let aiocb = &mut self.as_mut().aiocb().aiocb.0;
486 let mode = mem::replace(&mut aiocb.aio_lio_opcode, 0);
487 let p: *mut libc::aiocb = aiocb;
489 self.aiocb().set_in_progress();
496 impl AsRef<libc::aiocb> for AioFsync {
497 fn as_ref(&self) -> &libc::aiocb {
498 &self.aiocb.aiocb.0
546 aiocb: AioCb,
552 unsafe_pinned!(aiocb: AioCb);
560 self.aiocb.aiocb.0.aio_nbytes
582 let mut aiocb = AioCb::common_init(fd, prio, sigev_notify);
583 aiocb.aiocb.0.aio_nbytes = buf.len();
584 aiocb.aiocb.0.aio_buf = buf.as_mut_ptr() as *mut c_void;
585 aiocb.aiocb.0.aio_lio_opcode = libc::LIO_READ;
586 aiocb.aiocb.0.aio_offset = offs;
588 aiocb,
596 self.aiocb.aiocb.0.aio_offset
606 impl<'a> AsMut<libc::aiocb> for AioRead<'a> {
607 fn as_mut(&mut self) -> &mut libc::aiocb {
608 &mut self.aiocb.aiocb.0
612 impl<'a> AsRef<libc::aiocb> for AioRead<'a> {
613 fn as_ref(&self) -> &libc::aiocb {
614 &self.aiocb.aiocb.0
667 aiocb: AioCb,
674 unsafe_pinned!(aiocb: AioCb);
678 self.aiocb.aiocb.0.aio_nbytes
701 let mut aiocb = AioCb::common_init(fd, prio, sigev_notify);
704 aiocb.aiocb.0.aio_nbytes = bufs.len();
705 aiocb.aiocb.0.aio_buf = bufs.as_mut_ptr() as *mut c_void;
706 aiocb.aiocb.0.aio_lio_opcode = libc::LIO_READV;
707 aiocb.aiocb.0.aio_offset = offs;
709 aiocb,
717 self.aiocb.aiocb.0.aio_offset
729 impl<'a> AsMut<libc::aiocb> for AioReadv<'a> {
730 fn as_mut(&mut self) -> &mut libc::aiocb {
731 &mut self.aiocb.aiocb.0
736 impl<'a> AsRef<libc::aiocb> for AioReadv<'a> {
737 fn as_ref(&self) -> &libc::aiocb {
738 &self.aiocb.aiocb.0
778 aiocb: AioCb,
784 unsafe_pinned!(aiocb: AioCb);
792 self.aiocb.aiocb.0.aio_nbytes
814 let mut aiocb = AioCb::common_init(fd, prio, sigev_notify);
815 aiocb.aiocb.0.aio_nbytes = buf.len();
818 // it. Type Safety guarantees that we'll never pass aiocb to
820 aiocb.aiocb.0.aio_buf = buf.as_ptr() as *mut c_void;
821 aiocb.aiocb.0.aio_lio_opcode = libc::LIO_WRITE;
822 aiocb.aiocb.0.aio_offset = offs;
824 aiocb,
832 self.aiocb.aiocb.0.aio_offset
842 impl<'a> AsMut<libc::aiocb> for AioWrite<'a> {
843 fn as_mut(&mut self) -> &mut libc::aiocb {
844 &mut self.aiocb.aiocb.0
848 impl<'a> AsRef<libc::aiocb> for AioWrite<'a> {
849 fn as_ref(&self) -> &libc::aiocb {
850 &self.aiocb.aiocb.0
896 aiocb: AioCb,
903 unsafe_pinned!(aiocb: AioCb);
907 self.aiocb.aiocb.0.aio_nbytes
930 let mut aiocb = AioCb::common_init(fd, prio, sigev_notify);
933 aiocb.aiocb.0.aio_nbytes = bufs.len();
936 // it. Type Safety guarantees that we'll never pass aiocb to
938 aiocb.aiocb.0.aio_buf = bufs.as_ptr() as *mut c_void;
939 aiocb.aiocb.0.aio_lio_opcode = libc::LIO_WRITEV;
940 aiocb.aiocb.0.aio_offset = offs;
942 aiocb,
950 self.aiocb.aiocb.0.aio_offset
962 impl<'a> AsMut<libc::aiocb> for AioWritev<'a> {
963 fn as_mut(&mut self) -> &mut libc::aiocb {
964 &mut self.aiocb.aiocb.0
969 impl<'a> AsRef<libc::aiocb> for AioWritev<'a> {
970 fn as_ref(&self) -> &libc::aiocb {
971 &self.aiocb.aiocb.0
993 /// let mut aiocb = Box::pin(AioWrite::new(f.as_raw_fd(),
998 /// aiocb.as_mut().submit().unwrap();
1001 /// while (aiocb.as_mut().error() == Err(Errno::EINPROGRESS)) {
1006 /// let _ = aiocb.as_mut().aio_return();
1038 /// let mut aiocb = Box::pin(AioWrite::new(f.as_raw_fd(),
1043 /// aiocb.as_mut().submit().unwrap();
1044 /// aio_suspend(&[&*aiocb], None).expect("aio_suspend failed");
1045 /// assert_eq!(aiocb.as_mut().aio_return().unwrap() as usize, WBUF.len());
1051 list: &[&dyn AsRef<libc::aiocb>],
1054 let p = list as *const [&dyn AsRef<libc::aiocb>]
1055 as *const [*const libc::aiocb] as *const *const libc::aiocb;
1177 list: &mut [Pin<&mut dyn AsMut<libc::aiocb>>],
1180 let p = list as *mut [Pin<&mut dyn AsMut<libc::aiocb>>]
1181 as *mut [*mut libc::aiocb] as *mut *mut libc::aiocb;
1194 /// aio_suspend relies on casting Rust Aio* struct pointers to libc::aiocb
1201 aiof.as_ref() as *const libc::aiocb,
1202 &aiof as *const AioFsync as *const libc::aiocb
1208 aior.as_ref() as *const libc::aiocb,
1209 &aior as *const AioRead as *const libc::aiocb
1215 aiow.as_ref() as *const libc::aiocb,
1216 &aiow as *const AioWrite as *const libc::aiocb
1229 aiorv.as_ref() as *const libc::aiocb,
1230 &aiorv as *const AioReadv as *const libc::aiocb
1237 aiowv.as_ref() as *const libc::aiocb,
1238 &aiowv as *const AioWritev as *const libc::aiocb