Lines Matching full:let
177 if let Some(thread) = self.ready_threads.pop_front() { in push_work()
187 let sync = work.should_sync_wakeup(); in push_work()
225 let push = node.update_refcount_locked(inc, strong, count, self); in update_node_refcount()
229 if let Some(node) = push { in update_node_refcount()
230 if let Some(thread) = othread { in update_node_refcount()
233 let _ = self.push_work(node); in update_node_refcount()
247 let strong_count = if strong { 1 } else { 0 }; in new_node_ref()
258 let push = match wrapper { in new_node_ref_with_thread()
264 if let Some(node) = push { in new_node_ref_with_thread()
267 let strong_count = if strong { 1 } else { 0 }; in new_node_ref_with_thread()
278 let (_, node_cookie) = node.get_id(); in get_existing_node()
301 let mut cursor = self.delivered_deaths.cursor_front(); in pull_delivered_death()
302 while let Some(next) = cursor.peek_next() { in pull_delivered_death()
312 if let Some(death) = ListArc::try_from_arc_or_drop(death) { in death_delivered()
487 let defer; in run()
489 let mut inner = me.inner.lock(); in run()
505 let current = kernel::current!(); in new()
506 let process = Arc::pin_init::<Error>( in new()
536 let inner = self.inner.lock(); in debug_print_stats()
545 if let Some(mapping) = &inner.mapping { in debug_print_stats()
562 let mut refs = self.node_refs.lock(); in debug_print_stats()
563 let (mut count, mut weak, mut strong) = (0, 0, 0); in debug_print_stats()
565 let node_ref = r.node_ref(); in debug_print_stats()
566 let (nstrong, nweak) = node_ref.get_count(); in debug_print_stats()
584 let mut all_threads = KVec::new(); in debug_print()
585 let mut all_nodes = KVec::new(); in debug_print()
587 let inner = self.inner.lock(); in debug_print()
588 let num_threads = inner.threads.iter().count(); in debug_print()
589 let num_nodes = inner.nodes.iter().count(); in debug_print()
600 let _ = all_threads.push(thread.clone(), GFP_ATOMIC); in debug_print()
605 let _ = all_nodes.push(node.clone(), GFP_ATOMIC); in debug_print()
615 let mut inner = self.inner.lock(); in debug_print()
624 let mut refs = self.node_refs.lock(); in debug_print()
626 let node_ref = r.node_ref(); in debug_print()
627 let dead = node_ref.node.owner.inner.lock().is_dead; in debug_print()
628 let (strong, weak) = node_ref.get_count(); in debug_print()
629 let debug_id = node_ref.node.debug_id; in debug_print()
641 let inner = self.inner.lock(); in debug_print()
648 if let Some(mapping) = &inner.mapping { in debug_print()
671 let mut inner = self.inner.lock(); in get_work_or_register()
673 if let Some(work) = inner.work.pop_front() { in get_work_or_register()
682 let id = { in get_current_thread()
683 let current = kernel::current!(); in get_current_thread()
692 let inner = self.inner.lock(); in get_current_thread()
693 if let Some(thread) = inner.threads.get(&id) { in get_current_thread()
699 let reservation = RBTreeNodeReservation::new(GFP_KERNEL)?; in get_current_thread()
700 let ta: Arc<Thread> = Thread::new(id, self.into())?; in get_current_thread()
702 let mut inner = self.inner.lock(); in get_current_thread()
717 let res = self.inner.lock().push_work(work); in push_work()
732 let (ptr, cookie, flags) = if let Some(obj) = info { in set_as_manager()
743 let node_ref = self.get_node(ptr, cookie, flags as _, true, thread)?; in set_as_manager()
744 let node = node_ref.node.clone(); in set_as_manager()
749 let mut owner_inner = node.owner.inner.lock(); in set_as_manager()
765 let mut inner = self.inner.lock(); in get_node_inner()
766 if let Some(node) = inner.get_existing_node(ptr, cookie)? { in get_node_inner()
772 let node = DTRWrap::arc_pin_init(Node::new(ptr, cookie, flags, self.into()))?.into_arc(); in get_node_inner()
773 let rbnode = RBTreeNode::new(ptr, node.clone(), GFP_KERNEL)?; in get_node_inner()
774 let mut inner = self.inner.lock(); in get_node_inner()
775 if let Some(node) = inner.get_existing_node(ptr, cookie)? { in get_node_inner()
782 let node_ref = inner in get_node_inner()
797 let mut wrapper = None; in get_node()
818 let mut refs = self.node_refs.lock(); in insert_or_update_handle()
821 if let Some(handle_ref) = refs.by_node.get(&node_ref.node.global_id()) { in insert_or_update_handle()
822 let handle = *handle_ref; in insert_or_update_handle()
823 let info = refs.by_handle.get_mut(&handle).unwrap(); in insert_or_update_handle()
830 let reserve1 = RBTreeNodeReservation::new(GFP_KERNEL)?; in insert_or_update_handle()
831 let reserve2 = RBTreeNodeReservation::new(GFP_KERNEL)?; in insert_or_update_handle()
832 let info = UniqueArc::new_uninit(GFP_KERNEL)?; in insert_or_update_handle()
834 let mut refs_lock = self.node_refs.lock(); in insert_or_update_handle()
835 let mut refs = &mut *refs_lock; in insert_or_update_handle()
837 let (unused_id, by_handle_slot) = loop { in insert_or_update_handle()
839 let start = if is_manager { 0 } else { 1 }; in insert_or_update_handle()
841 if let Some(res) = refs.handle_is_present.find_unused_id(start) { in insert_or_update_handle()
853 let grow_request = refs.handle_is_present.grow_request().ok_or(ENOMEM)?; in insert_or_update_handle()
855 let resizer = grow_request.realloc(GFP_KERNEL)?; in insert_or_update_handle()
860 let handle = unused_id.as_u32(); in insert_or_update_handle()
863 if let Some(handle_ref) = refs.by_node.get(&node_ref.node.global_id()) { in insert_or_update_handle()
864 let handle = *handle_ref; in insert_or_update_handle()
865 let info = refs.by_handle.get_mut(&handle).unwrap(); in insert_or_update_handle()
870 let gid = node_ref.node.global_id(); in insert_or_update_handle()
871 let (info_proc, info_node) = { in insert_or_update_handle()
872 let info_init = NodeRefInfo::new(node_ref, handle, self.into()); in insert_or_update_handle()
919 let mut inner = self.inner.lock(); in remove_from_delivered_deaths()
921 let removed = unsafe { inner.delivered_deaths.remove(death) }; in remove_from_delivered_deaths()
933 if let Ok(node_ref) = self.ctx.get_manager_node(strong) { in update_ref()
937 let _ = self.insert_or_update_handle(node_ref, true); in update_ref()
944 let mut refs = self.node_refs.lock(); in update_ref()
945 if let Some(info) = refs.by_handle.get_mut(&handle) { in update_ref()
948 if let Some(death) = info.death().take() { in update_ref()
958 let id = info.node_ref().node.global_id(); in update_ref()
963 if let Some(shrink) = refs.handle_is_present.shrink_request() { in update_ref()
966 if let Ok(new_bitmap) = shrink.realloc(GFP_KERNEL) { in update_ref()
983 let mut inner = self.inner.lock(); in update_node()
984 if let Ok(Some(node)) = inner.get_existing_node(ptr, cookie) { in update_node()
990 let ptr = reader.read::<u64>()?; in inc_ref_done()
991 let cookie = reader.read::<u64>()?; in inc_ref_done()
992 let mut inner = self.inner.lock(); in inc_ref_done()
993 if let Ok(Some(node)) = inner.get_existing_node(ptr, cookie) { in inc_ref_done()
994 if let Some(node) = node.inc_ref_done_locked(strong, &mut inner) { in inc_ref_done()
996 let _ = inner.push_work(node); in inc_ref_done()
1011 let mut reserve_new_args = ReserveNewArgs { in buffer_alloc()
1019 let (new_alloc, addr) = loop { in buffer_alloc()
1020 let mut inner = self.inner.lock(); in buffer_alloc()
1021 let mapping = inner.mapping.as_mut().ok_or_else(BinderError::new_dead)?; in buffer_alloc()
1022 let alloc_request = match mapping.alloc.reserve_new(reserve_new_args)? { in buffer_alloc()
1031 let res = Allocation::new( in buffer_alloc()
1065 let mut inner = self.inner.lock(); in buffer_get()
1066 let mapping = inner.mapping.as_mut()?; in buffer_get()
1067 let offset = ptr.checked_sub(mapping.address)?; in buffer_get()
1068 let (size, debug_id, odata) = mapping.alloc.reserve_existing(offset).ok()?; in buffer_get()
1069 let mut alloc = Allocation::new(self.clone(), debug_id, offset, size, ptr, false); in buffer_get()
1070 if let Some(data) = odata { in buffer_get()
1077 let mut inner = self.inner.lock(); in buffer_raw_free()
1078 if let Some(ref mut mapping) = &mut inner.mapping { in buffer_raw_free()
1079 let offset = match ptr.checked_sub(mapping.address) { in buffer_raw_free()
1084 let freed_range = match mapping.alloc.reservation_abort(offset) { in buffer_raw_free()
1106 let mut inner = self.inner.lock(); in buffer_make_freeable()
1107 if let Some(ref mut mapping) = &mut inner.mapping { in buffer_make_freeable()
1116 let size = usize::min(vma.end() - vma.start(), bindings::SZ_4M as usize); in create_mapping()
1117 let mapping = Mapping::new(vma.start(), size); in create_mapping()
1118 let page_count = self.pages.register_with_vma(vma)?; in create_mapping()
1155 let (mut reader, mut writer) = data.reader_writer(); in get_node_debug_info()
1158 let ptr = reader.read::<BinderNodeDebugInfo>()?.ptr; in get_node_debug_info()
1159 let mut out = BinderNodeDebugInfo::default(); in get_node_debug_info()
1162 let inner = self.inner.lock(); in get_node_debug_info()
1175 let (mut reader, mut writer) = data.reader_writer(); in get_node_info_from_ref()
1176 let mut out = reader.read::<BinderNodeInfoForRef>()?; in get_node_info_from_ref()
1193 let mut node_refs = self.node_refs.lock(); in get_node_info_from_ref()
1194 let node_info = node_refs.by_handle.get_mut(&out.handle).ok_or(ENOENT)?; in get_node_info_from_ref()
1195 let node_ref = node_info.node_ref(); in get_node_info_from_ref()
1196 let owner_inner = node_ref.node.owner.inner.lock(); in get_node_info_from_ref()
1205 let mut inner = self.inner.lock(); in needs_thread()
1206 let ret = inner.requested_thread_count == 0 in needs_thread()
1220 let handle: u32 = reader.read()?; in request_death()
1221 let cookie: u64 = reader.read()?; in request_death()
1224 let death = UniqueArc::new_uninit(GFP_KERNEL).inspect_err(|_| { in request_death()
1227 let mut refs = self.node_refs.lock(); in request_death()
1228 let Some(info) = refs.by_handle.get_mut(&handle) else { in request_death()
1239 let death = { in request_death()
1240 let death_init = NodeDeath::new(info.node_ref().node.clone(), self.clone(), cookie); in request_death()
1250 let owner = info.node_ref2().node.owner.clone(); in request_death()
1251 let mut owner_inner = owner.inner.lock(); in request_death()
1253 let death = Arc::from(death); in request_death()
1258 let death = ListArc::from(death); in request_death()
1267 let handle: u32 = reader.read()?; in clear_death()
1268 let cookie: u64 = reader.read()?; in clear_death()
1270 let mut refs = self.node_refs.lock(); in clear_death()
1271 let Some(info) = refs.by_handle.get_mut(&handle) else { in clear_death()
1276 let Some(death) = info.death().take() else { in clear_death()
1289 if let Some(death) = ListArc::try_from_arc_or_drop(death) { in clear_death()
1290 let _ = thread.push_work_if_looper(death); in clear_death()
1298 let death = self.inner.lock().pull_delivered_death(cookie); in dead_binder_done()
1299 if let Some(death) = death { in dead_binder_done()
1309 let mut inner = self.inner.lock(); in lock_with_nodes()
1317 let inner = self.inner.lock(); in deferred_flush()
1324 let is_manager = { in deferred_release()
1325 let mut inner = self.inner.lock(); in deferred_release()
1339 let binderfs_file = self.inner.lock().binderfs_file.take(); in deferred_release()
1343 let threads = { in deferred_release()
1344 let mut inner = self.inner.lock(); in deferred_release()
1345 let threads = take(&mut inner.threads); in deferred_release()
1346 let ready = take(&mut inner.ready_threads); in deferred_release()
1358 while let Some(node) = { in deferred_release()
1359 let mut lock = self.inner.lock(); in deferred_release()
1372 let death = if let Some(existing) = info.death().take() { in deferred_release()
1381 let freeze_listeners = take(&mut self.node_refs.lock().freeze_listeners); in deferred_release()
1389 let mut refs = self.node_refs.lock(); in deferred_release()
1390 let by_handle = take(&mut refs.by_handle); in deferred_release()
1391 let by_node = take(&mut refs.by_node); in deferred_release()
1398 while let Some(work) = self.get_work() { in deferred_release()
1405 while let Some(delivered_death) = { self.inner.lock().delivered_deaths.pop_front() } { in deferred_release()
1410 let omapping = self.inner.lock().mapping.take(); in deferred_release()
1411 if let Some(mut mapping) = omapping { in deferred_release()
1412 let address = mapping.address; in deferred_release()
1416 let ptr = offset + address; in deferred_release()
1417 let mut alloc = in deferred_release()
1419 if let Some(data) = odata { in deferred_release()
1431 let wake = { in drop_outstanding_txn()
1432 let mut inner = self.inner.lock(); in drop_outstanding_txn()
1448 let msgs = self.prepare_freeze_messages()?; in ioctl_freeze()
1449 let mut inner = self.inner.lock(); in ioctl_freeze()
1458 let mut inner = self.inner.lock(); in ioctl_freeze()
1464 let mut jiffies = kernel::time::msecs_to_jiffies(info.timeout_ms); in ioctl_freeze()
1509 let (mut reader, mut writer) = data.reader_writer(); in get_frozen_status()
1511 let mut info = reader.read::<BinderFrozenStatusInfo>()?; in get_frozen_status()
1514 let mut found = false; in get_frozen_status()
1520 let inner = proc.inner.lock(); in get_frozen_status()
1521 let txns_pending = inner.txns_pending_locked(); in get_frozen_status()
1538 let info = reader.read::<BinderFreezeInfo>()?; in ioctl_freeze()
1542 let mut procs = KVec::with_capacity(3, GFP_KERNEL)?; in ioctl_freeze()
1544 let ctxs = crate::context::get_all_contexts()?; in ioctl_freeze()
1568 let thread = this.get_current_thread()?; in ioctl_write_only()
1594 let thread = this.get_current_thread()?; in ioctl_write_read()
1595 let blocking = (file.flags() & file::flags::O_NONBLOCK) == 0; in ioctl_write_read()
1616 let binderfs_file; in release()
1617 let should_schedule; in release()
1619 let mut inner = this.inner.lock(); in release()
1628 let _ = workqueue::system().enqueue(this); in release()
1635 let should_schedule; in flush()
1637 let mut inner = this.inner.lock(); in flush()
1645 let _ = workqueue::system().enqueue(Arc::from(this)); in flush()
1656 let user_slice = UserSlice::new(UserPtr::from_addr(arg), _IOC_SIZE(cmd)); in ioctl()
1693 let thread = this.get_current_thread()?; in poll()
1694 let (from_proc, mut mask) = thread.poll(file, table); in poll()
1713 if let Ok(list_arc) = ListArc::try_from_arc(thread.clone()) { in new()
1727 let mut inner = self.thread.process.inner.lock(); in drop()