OXIESEC PANEL
- Current Dir:
/
/
usr
/
src
/
linux-headers-4.15.0-197
/
arch
/
parisc
/
include
/
asm
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
11/17/2022 06:42:16 AM
rwxr-xr-x
📄
Kbuild
610 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
agp.h
596 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asm-offsets.h
35 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
asmregs.h
3.04 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
assembly.h
12.94 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
atomic.h
8.24 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
barrier.h
2.44 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
bitops.h
5.89 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
bug.h
2.35 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
bugs.h
340 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
cache.h
1.59 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
cacheflush.h
4.06 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
checksum.h
5.48 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
cmpxchg.h
3.62 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
compat.h
6.52 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
compat_ucontext.h
591 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
delay.h
533 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma-mapping.h
2.42 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
dma.h
5.71 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
dwarf.h
602 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
eisa_bus.h
702 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
eisa_eeprom.h
4.42 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
elf.h
14.31 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
fb.h
403 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
fixmap.h
1.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
floppy.h
6.61 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ftrace.h
379 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
futex.h
2.66 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
grfioctl.h
4.68 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hardirq.h
1.3 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hardware.h
4.09 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hash.h
5.07 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
hugetlb.h
1.67 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ide.h
1.09 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
io.h
8.14 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
irq.h
1.23 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
irqflags.h
1.02 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
kbdleds.h
477 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
kmap_types.h
221 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
ldcw.h
2.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
led.h
1.33 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
linkage.h
759 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
machdep.h
349 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mckinley.h
270 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu.h
195 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmu_context.h
2.08 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
mmzone.h
1.51 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
module.h
527 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
page.h
5.42 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
parisc-device.h
1.92 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
parport.h
358 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
pci.h
6.57 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdc.h
3.93 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdc_chassis.h
15.06 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pdcpat.h
15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
perf.h
1.89 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
perf_event.h
152 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgalloc.h
4.22 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
pgtable.h
18.92 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
prefetch.h
1.12 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
processor.h
9.86 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
psw.h
2.39 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ptrace.h
803 bytes
11/01/2022 04:52:05 PM
rw-r--r--
📄
ropes.h
9.73 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
rt_sigframe.h
745 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
runway.h
320 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
sections.h
283 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
serial.h
124 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
shmparam.h
263 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
signal.h
841 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
smp.h
1.25 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
socket.h
311 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
special_insns.h
1015 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
spinlock.h
4.02 KB
11/01/2022 04:52:05 PM
rw-r--r--
📄
spinlock_types.h
483 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
string.h
247 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
superio.h
3.25 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
switch_to.h
332 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
syscall.h
1.4 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
termios.h
1.72 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
thread_info.h
3.15 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
timex.h
372 bytes
11/01/2022 04:52:05 PM
rw-r--r--
📄
tlb.h
672 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
tlbflush.h
2.63 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
topology.h
900 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
traps.h
468 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
uaccess.h
6.55 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
ucontext.h
327 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
unaligned.h
472 bytes
01/28/2018 09:20:33 PM
rw-r--r--
📄
unistd.h
5.47 KB
01/28/2018 09:20:33 PM
rw-r--r--
📄
unwind.h
2.56 KB
01/28/2018 09:20:33 PM
rw-r--r--
Editing: spinlock.h
Close
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __ASM_SPINLOCK_H #define __ASM_SPINLOCK_H #include <asm/barrier.h> #include <asm/ldcw.h> #include <asm/processor.h> #include <asm/spinlock_types.h> static inline int arch_spin_is_locked(arch_spinlock_t *x) { volatile unsigned int *a = __ldcw_align(x); return *a == 0; } #define arch_spin_lock(lock) arch_spin_lock_flags(lock, 0) static inline void arch_spin_lock_flags(arch_spinlock_t *x, unsigned long flags) { volatile unsigned int *a; a = __ldcw_align(x); while (__ldcw(a) == 0) while (*a == 0) if (flags & PSW_SM_I) { local_irq_enable(); cpu_relax(); local_irq_disable(); } else cpu_relax(); } #define arch_spin_lock_flags arch_spin_lock_flags static inline void arch_spin_unlock(arch_spinlock_t *x) { volatile unsigned int *a; a = __ldcw_align(x); mb(); *a = 1; } static inline int arch_spin_trylock(arch_spinlock_t *x) { volatile unsigned int *a; int ret; a = __ldcw_align(x); ret = __ldcw(a) != 0; return ret; } /* * Read-write spinlocks, allowing multiple readers but only one writer. * Linux rwlocks are unfair to writers; they can be starved for an indefinite * time by readers. With care, they can also be taken in interrupt context. * * In the PA-RISC implementation, we have a spinlock and a counter. * Readers use the lock to serialise their access to the counter (which * records how many readers currently hold the lock). * Writers hold the spinlock, preventing any readers or other writers from * grabbing the rwlock. */ /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ static __inline__ void arch_read_lock(arch_rwlock_t *rw) { unsigned long flags; local_irq_save(flags); arch_spin_lock_flags(&rw->lock, flags); rw->counter++; arch_spin_unlock(&rw->lock); local_irq_restore(flags); } /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ static __inline__ void arch_read_unlock(arch_rwlock_t *rw) { unsigned long flags; local_irq_save(flags); arch_spin_lock_flags(&rw->lock, flags); rw->counter--; arch_spin_unlock(&rw->lock); local_irq_restore(flags); } /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to grab the same read lock */ static __inline__ int arch_read_trylock(arch_rwlock_t *rw) { unsigned long flags; retry: local_irq_save(flags); if (arch_spin_trylock(&rw->lock)) { rw->counter++; arch_spin_unlock(&rw->lock); local_irq_restore(flags); return 1; } local_irq_restore(flags); /* If write-locked, we fail to acquire the lock */ if (rw->counter < 0) return 0; /* Wait until we have a realistic chance at the lock */ while (arch_spin_is_locked(&rw->lock) && rw->counter >= 0) cpu_relax(); goto retry; } /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to read_trylock() this lock */ static __inline__ void arch_write_lock(arch_rwlock_t *rw) { unsigned long flags; retry: local_irq_save(flags); arch_spin_lock_flags(&rw->lock, flags); if (rw->counter != 0) { arch_spin_unlock(&rw->lock); local_irq_restore(flags); while (rw->counter != 0) cpu_relax(); goto retry; } rw->counter = -1; /* mark as write-locked */ mb(); local_irq_restore(flags); } static __inline__ void arch_write_unlock(arch_rwlock_t *rw) { rw->counter = 0; arch_spin_unlock(&rw->lock); } /* Note that we have to ensure interrupts are disabled in case we're * interrupted by some other code that wants to read_trylock() this lock */ static __inline__ int arch_write_trylock(arch_rwlock_t *rw) { unsigned long flags; int result = 0; local_irq_save(flags); if (arch_spin_trylock(&rw->lock)) { if (rw->counter == 0) { rw->counter = -1; result = 1; } else { /* Read-locked. Oh well. */ arch_spin_unlock(&rw->lock); } } local_irq_restore(flags); return result; } #endif /* __ASM_SPINLOCK_H */