Home
last modified time | relevance | path

Searched refs:lock (Results 1 – 25 of 132) sorted by relevance

123456

/DragonOS/kernel/src/common/
H A Dspinlock.h22 int8_t lock; // 1:unlocked 0:locked member
25 extern void __arch_spin_lock(spinlock_t *lock);
26 extern void __arch_spin_unlock(spinlock_t *lock);
28 extern void __arch_spin_lock_no_preempt(spinlock_t *lock);
29 extern void __arch_spin_unlock_no_preempt(spinlock_t *lock);
31 extern long __arch_spin_trylock(spinlock_t *lock);
38 void spin_lock(spinlock_t *lock) in spin_lock() argument
40 __arch_spin_lock(lock); in spin_lock()
48 void spin_unlock(spinlock_t *lock) in spin_unlock() argument
50 __arch_spin_unlock(lock); in spin_unlock()
[all …]
/DragonOS/kernel/src/arch/x86_64/asm/
H A Dspinlock.c4 void __arch_spin_lock(spinlock_t *lock) in __arch_spin_lock() argument
15 : "=m"(lock->lock)::"memory"); in __arch_spin_lock()
19 void __arch_spin_unlock(spinlock_t *lock) in __arch_spin_unlock() argument
21 __asm__ __volatile__("movb $1, %0 \n\t" : "=m"(lock->lock)::"memory"); in __arch_spin_unlock()
25 void __arch_spin_lock_no_preempt(spinlock_t *lock) in __arch_spin_lock_no_preempt() argument
36 : "=m"(lock->lock)::"memory"); in __arch_spin_lock_no_preempt()
39 void __arch_spin_unlock_no_preempt(spinlock_t *lock) in __arch_spin_unlock_no_preempt() argument
41 __asm__ __volatile__("movb $1, %0 \n\t" : "=m"(lock->lock)::"memory"); in __arch_spin_unlock_no_preempt()
44 long __arch_spin_trylock(spinlock_t *lock) in __arch_spin_trylock() argument
50 : "=q"(tmp_val), "=m"(lock->lock) in __arch_spin_trylock()
/DragonOS/kernel/src/libs/
H A Dspinlock.rs18 lock: AtomicBool, field
28 lock: &'a SpinLock<T>, field
48 unsafe { &mut *this.lock.data.get() } in leak()
53 self.lock.force_unlock(); in unlock_no_preempt()
65 lock: AtomicBool::new(false), in new()
71 pub fn lock(&self) -> SpinLockGuard<T> { in lock() method
107 lock: self, in try_lock()
122 .lock in inner_try_lock()
133 lock: self, in try_lock_irqsave()
147 lock: self, in try_lock_no_preempt()
[all …]
H A Drwlock.rs39 lock: AtomicU32, field
47 lock: &'a AtomicU32, field
79 lock: AtomicU32::new(0), in new()
106 let value = self.lock.fetch_add(READER, Ordering::Acquire); in current_reader()
110 self.lock.fetch_sub(READER, Ordering::Release); in current_reader()
143 self.lock.fetch_sub(READER, Ordering::Release); in inner_try_read()
148 lock: &self.lock, in inner_try_read()
195 let state = self.lock.load(Ordering::Relaxed); in reader_count()
203 return (self.lock.load(Ordering::Relaxed) & WRITER) / WRITER; in writer_count()
241 .lock in inner_try_write()
[all …]
H A Dmutex.rs40 lock: &'a Mutex<T>, field
62 pub fn lock(&self) -> MutexGuard<T> { in lock() method
64 let mut inner: SpinLockGuard<MutexInner> = self.inner.lock(); in lock()
84 return MutexGuard { lock: self }; in lock()
93 let mut inner = self.inner.lock(); in try_lock()
101 return Ok(MutexGuard { lock: self }); in try_lock()
117 let mut inner: SpinLockGuard<MutexInner> = self.inner.lock(); in unlock()
153 return unsafe { &*self.lock.data.get() }; in deref()
160 return unsafe { &mut *self.lock.data.get() }; in deref_mut()
167 self.lock.unlock(); in drop()
/DragonOS/kernel/src/arch/riscv64/asm/
H A Dspinlock.c4 void __arch_spin_lock(spinlock_t *lock) in __arch_spin_lock() argument
10 void __arch_spin_unlock(spinlock_t *lock) in __arch_spin_unlock() argument
16 void __arch_spin_lock_no_preempt(spinlock_t *lock) in __arch_spin_lock_no_preempt() argument
21 void __arch_spin_unlock_no_preempt(spinlock_t *lock) in __arch_spin_unlock_no_preempt() argument
26 long __arch_spin_trylock(spinlock_t *lock) in __arch_spin_trylock() argument
/DragonOS/kernel/src/driver/input/serio/i8042/
H A Di8042_driver.rs47 r.inner.lock().self_ref = Arc::downgrade(&r); in new()
74 device.set_driver(Some(self.inner.lock().self_ref.clone())); in probe()
107 self.inner.lock().devices.clone() in devices()
111 let mut guard = self.inner.lock(); in add_device()
121 let mut guard = self.inner.lock(); in delete_device()
126 self.inner.lock().bus = bus; in set_bus()
130 self.inner.lock().bus.clone() in bus()
140 self.inner.lock().kernfs_inode = inode; in set_inode()
144 self.inner.lock().kernfs_inode.clone() in inode()
148 self.inner.lock().parent.clone() in parent()
[all …]
/DragonOS/kernel/src/filesystem/ramfs/
H A Dmod.rs140 let mut root_guard: SpinLockGuard<RamFSInode> = result.root_inode.0.lock(); in new()
163 let mut inode = self.0.lock(); in truncate()
200 let inode: SpinLockGuard<RamFSInode> = self.0.lock(); in read_at()
233 let mut inode: SpinLockGuard<RamFSInode> = self.0.lock(); in write_at()
253 return self.0.lock().fs.upgrade().unwrap(); in fs()
261 let inode = self.0.lock(); in metadata()
269 let mut inode = self.0.lock(); in set_metadata()
281 let mut inode = self.0.lock(); in resize()
299 let mut inode = self.0.lock(); in create_with_data()
337 result.0.lock().self_ref = Arc::downgrade(&result); in create_with_data()
[all …]
/DragonOS/docs/kernel/locking/
H A Dmutex.md49 &emsp;&emsp;当需要读取、修改Mutex保护的数据时,请先使用Mutex的`lock()`方法。该方法会返回一个`MutexGuard`。您可以使用被保护的数据的成员函数来进行一些操作。或…
56 let mut g :MutexGuard<Vec<i32>>= x.lock();
101 ### 4.2. lock - 加锁
106 pub fn lock(&self) -> MutexGuard<T>
145 **`void mutex_init(mutex_t *lock)`**
151 **`void mutex_lock(mutex_t *lock)`**
157 **`void mutex_unlock(mutex_t *lock)`**
163 **`void mutex_trylock(mutex_t *lock)`**
169 **`void mutex_is_locked(mutex_t *lock)`**
H A Dspinlock.md19 需要先调用`lock()`方法,然后当离开临界区时,手动调用`unlock()`方法。我们并没有向编译器显式地指定该自旋锁到底保护的是哪些数据。
39 lock: RawSpinlock,
55 &emsp;&emsp;当需要读取、修改SpinLock保护的数据时,请先使用SpinLock的`lock()`方法。该方法会返回一个`SpinLockGuard`。您可以使用被保护的数据的成员函数…
62 let mut g :SpinLockGuard<Vec<i32>>= x.lock();
94 &emsp;&emsp;`SpinLock`之所以能够实现编译期检查,是因为它引入了一个`SpinLockGuard`作为守卫。我们在编写代码的时候,保证只有调用`SpinLock`的`lock()…
/DragonOS/kernel/src/driver/open_firmware/
H A Ddevice_node.rs62 self.inner.lock().properties.push(prop); in add_property()
66 self.inner.lock().properties.clone() in properties()
70 self.inner.lock().parent.upgrade() in parent()
74 self.inner.lock().parent = Arc::downgrade(&parent); in set_parent()
78 self.inner.lock().children.clone() in children()
82 self.inner.lock().children.push(child); in add_child()
86 self.inner.lock().sibling.as_ref().and_then(|s| s.upgrade()) in sibling()
90 self.inner.lock().sibling = Some(Arc::downgrade(&sibling)); in set_sibling()
94 self.inner.lock().private_data.clone() in private_data()
98 self.inner.lock().private_data = Some(data); in set_private_data()
/DragonOS/kernel/src/driver/input/ps2_mouse/
H A Dps_mouse_driver.rs97 r.inner.lock().self_ref = Arc::downgrade(&r); in new()
103 let guard = self.inner.lock(); in process_packet()
132 self.inner.lock().devices.clone() in devices()
136 let mut guard = self.inner.lock(); in add_device()
146 let mut guard = self.inner.lock(); in delete_device()
151 self.inner.lock().bus = bus; in set_bus()
155 self.inner.lock().bus.clone() in bus()
165 self.inner.lock().kernfs_inode = inode; in set_inode()
169 self.inner.lock().kernfs_inode.clone() in inode()
173 self.inner.lock().parent.clone() in parent()
[all …]
/DragonOS/user/apps/test-for-robustfutex/
H A DREADME.md1 # 测试robust lock机制
4 1、robust lock机制中的两个系统调用是否能正常使用
/DragonOS/kernel/src/driver/disk/ahci/
H A Dahci_inode.rs63 result.0.lock().self_ref = Arc::downgrade(&result); in new()
71 self.0.lock().fs = fs; in set_fs()
93 return Ok(self.0.lock().metadata.clone()); in metadata()
97 return self.0.lock().fs.upgrade().unwrap(); in fs()
105 let mut inode = self.0.lock(); in set_metadata()
129 return self.0.lock().disk.read_at_bytes(offset, len, buf); in read_at()
148 return self.0.lock().disk.write_at_bytes(offset, len, buf); in write_at()
/DragonOS/kernel/src/virt/kvm/
H A Dmod.rs25 let mut vm_list = VM_LIST.lock(); in push_vm()
36 let mut vm_list = VM_LIST.lock(); in remove_vm()
47 let mut vm_list = VM_LIST.lock(); in update_vm()
52 let vm_list = VM_LIST.lock(); in vm()
H A Dvcpu_dev.rs90 result.0.lock().self_ref = Arc::downgrade(&result); in new()
115 return Ok(self.0.lock().metadata.clone()); in metadata()
119 return self.0.lock().fs.upgrade().unwrap(); in fs()
127 let mut inode = self.0.lock(); in set_metadata()
166 vcpu.lock().virtualize_cpu()?; in ioctl()
187 vcpu.lock().set_regs(kvm_regs)?; in ioctl()
/DragonOS/kernel/src/filesystem/procfs/
H A Dmod.rs360 let mut root_guard: SpinLockGuard<ProcFSInode> = result.root_inode.0.lock(); in new()
379 meminfo_file.0.lock().fdata.pid = Pid::new(0); in new()
380 meminfo_file.0.lock().fdata.ftype = ProcFileType::ProcMeminfo; in new()
392 kmsg_file.0.lock().fdata.pid = Pid::new(1); in new()
393 kmsg_file.0.lock().fdata.ftype = ProcFileType::ProcKmsg; in new()
423 status_file.0.lock().fdata.pid = pid; in register_pid()
424 status_file.0.lock().fdata.ftype = ProcFileType::ProcStatus; in register_pid()
458 let mut inode: SpinLockGuard<ProcFSInode> = self.0.lock(); in open()
481 let guard: SpinLockGuard<ProcFSInode> = self.0.lock(); in close()
503 let inode: SpinLockGuard<ProcFSInode> = self.0.lock(); in read_at()
[all …]
/DragonOS/kernel/crates/intertrait/
H A D.gitignore1 # Cargo lock in subs
2 **/Cargo.lock
/DragonOS/kernel/src/filesystem/devfs/
H A Dnull_dev.rs58 result.0.lock().self_ref = Arc::downgrade(&result); in new()
66 self.0.lock().fs = fs; in set_fs()
88 return Ok(self.0.lock().metadata.clone()); in metadata()
92 return self.0.lock().fs.upgrade().unwrap(); in fs()
100 let mut inode = self.0.lock(); in set_metadata()
H A Dzero_dev.rs58 result.0.lock().self_ref = Arc::downgrade(&result); in new()
66 self.0.lock().fs = fs; in set_fs()
88 return Ok(self.0.lock().metadata.clone()); in metadata()
92 return self.0.lock().fs.upgrade().unwrap(); in fs()
100 let mut inode = self.0.lock(); in set_metadata()
H A Dmod.rs84 let mut root_guard: SpinLockGuard<DevFSInode> = devfs.root_inode.0.lock(); in new()
155 device.set_fs(dev_char_inode.0.lock().fs.clone()); in register_device()
173 device.set_fs(dev_block_inode.0.lock().fs.clone()); in register_device()
297 let guard: SpinLockGuard<DevFSInode> = self.0.lock(); in add_dir()
320 let mut this = self.0.lock(); in add_dev()
333 .lock() in remove()
385 result.0.lock().self_ref = Arc::downgrade(&result); in do_create_with_data()
418 let guard: SpinLockGuard<DevFSInode> = self.0.lock(); in create_with_data()
424 let inode = self.0.lock(); in find()
449 return self.0.lock().fs.upgrade().unwrap(); in fs()
[all …]
/DragonOS/kernel/src/filesystem/
H A Deventfd.rs112 let val = self.eventfd.lock().count; in read_at()
118 .lock() in read_at()
127 let mut eventfd = self.eventfd.lock(); in read_at()
167 let eventfd = self.eventfd.lock(); in write_at()
180 let mut eventfd = self.eventfd.lock(); in write_at()
196 if self.eventfd.lock().count != 0 { in poll()
199 if self.eventfd.lock().count != u64::MAX { in poll()
226 self.epitems.lock().push_back(epitem); in kernel_ioctl()
/DragonOS/kernel/src/ipc/
H A Dpipe.rs103 self.epitems.lock().push_back(epitem); in add_epoll()
161 let mut guard = result.inner.lock(); in new()
173 let inode = self.inner.lock(); in readable()
178 let inode = self.inner.lock(); in writeable()
206 let mut inode = self.inner.lock(); in read_at()
231 inode = self.inner.lock(); in read_at()
281 let mut guard = self.inner.lock(); in open()
300 let inode = self.inner.lock(); in metadata()
314 let mut guard = self.inner.lock(); in close()
361 let mut inode = self.inner.lock(); in write_at()
[all …]
/DragonOS/kernel/src/driver/base/map/
H A Dmod.rs67 .lock() in kobj_map()
88 .lock() in kobj_unmap()
107 if let Some(map) = domain.0.lock().0.get((dev_t.major().data() % 255) as usize) { in kobj_lookup()
131 pub fn lock(&self) -> SpinLockGuard<DevsMap> { in lock() method
132 self.0.lock() in lock()
/DragonOS/kernel/src/filesystem/vfs/
H A Dfile.rs138 .lock() in fmt()
161 let mut guard = self.xarray.lock(); in add_page()
167 let mut guard = self.xarray.lock(); in get_page()
174 let mut guard = self.xarray.lock(); in remove_page()
224 f.inode.open(f.private_data.lock(), &mode)?; in new()
302 .read_at(offset, len, buf, self.private_data.lock()) in do_read()
344 .write_at(offset, len, buf, self.private_data.lock()) in do_write()
430 let mut readdir_subdirs_name = self.readdir_subdirs_name.lock(); in readdir()
495 readdir_subdirs_name: SpinLock::new(self.readdir_subdirs_name.lock().clone()), in try_clone()
496 private_data: SpinLock::new(self.private_data.lock().clone()), in try_clone()
[all …]

123456