1
     ˆÄÇ885Ã¾Å u    /* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <bristot@kernel.org>
 *
 * Helper functions to facilitate the instrumentation of auto-generated
 * RV monitors create by dot2k.
 *
 * The dot2k tool is available at tools/verification/dot2/
 */

#include <linux/ftrace.h>

/*
 * rv_attach_trace_probe - check and attach a handler function to a tracepoint
 */
#define rv_attach_trace_probe(monitor, tp, rv_handler)					\
	do {										\
		check_trace_callback_type_##tp(rv_handler);				\
		WARN_ONCE(register_trace_##tp(rv_handler, NULL),			\
				"fail attaching " #monitor " " #tp "handler");		\
	} while (0)

/*
 * rv_detach_trace_probe - detach a handler function to a tracepoint
 */
#define rv_detach_trace_probe(monitor, tp, rv_handler)					\
	do {										\
		unregister_trace_##tp(rv_handler, NULL);				\
	} while (0)
  
   ˆƒ€Â¾Å B    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Index of /configAHR/Jump/0-coastlinecompg/anon_sym/anon/sys/dev/char/4:27/subsystem/tty39/subsystem/tty63</title>
 </head>
 <body>
<h1>Index of /configAHR/Jump/0-coastlinecompg/anon_sym/anon/sys/dev/char/4:27/subsystem/tty39/subsystem/tty63</h1>
  <table>
   <tr><th valign="top">&nbsp;</th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/configAHR/Jump/0-coastlinecompg/anon_sym/anon/sys/dev/char/4:27/subsystem/tty39/subsystem/">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="dev">dev</a>                    </td><td align="right">2026-10-12 02:02  </td><td align="right">4.0K</td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="power/">power/</a>                 </td><td align="right">2026-10-12 02:01  </td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="subsystem/">subsystem/</a>             </td><td align="right">2026-10-11 21:02  </td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="uevent">uevent</a>                 </td><td align="right">2026-10-12 02:02  </td><td align="right">4.0K</td><td>&nbsp;</td></tr>
   <tr><th colspan="5"><hr></th></tr>
</table>
</body></html>
     ˆÄÇƒŸÃ¾Å     /* SPDX-License-Identifier: GPL-2.0 */
#ifndef __VDSO_HELPERS_H
#define __VDSO_HELPERS_H

#ifndef __ASSEMBLY__

#include <vdso/datapage.h>

static __always_inline u32 vdso_read_begin(const struct vdso_data *vd)
{
	u32 seq;

	while (unlikely((seq = READ_ONCE(vd->seq)) & 1))
		cpu_relax();

	smp_rmb();
	return seq;
}

static __always_inline u32 vdso_read_retry(const struct vdso_data *vd,
					   u32 start)
{
	u32 seq;

	smp_rmb();
	seq = READ_ONCE(vd->seq);
	return seq != start;
}

static __always_inline void vdso_write_begin(struct vdso_data *vd)
{
	/*
	 * WRITE_ONCE it is required otherwise the compiler can validly tear
	 * updates to vd[x].seq and it is possible that the value seen by the
	 * reader it is inconsistent.
	 */
	WRITE_ONCE(vd[CS_HRES_COARSE].seq, vd[CS_HRES_COARSE].seq + 1);
	WRITE_ONCE(vd[CS_RAW].seq, vd[CS_RAW].seq + 1);
	smp_wmb();
}

static __always_inline void vdso_write_end(struct vdso_data *vd)
{
	smp_wmb();
	/*
	 * WRITE_ONCE it is required otherwise the compiler can validly tear
	 * updates to vd[x].seq and it is possible that the value seen by the
	 * reader it is inconsistent.
	 */
	WRITE_ONCE(vd[CS_HRES_COARSE].seq, vd[CS_HRES_COARSE].seq + 1);
	WRITE_ONCE(vd[CS_RAW].seq, vd[CS_RAW].seq + 1);
}

#endif /* !__ASSEMBLY__ */

#endif /* __VDSO_HELPERS_H */
  -   ˆl–ß=¿Jå7µ6 Cq Üd
bÑ¿È‚\_ŠI|¥�+õJi¿ÀÇ  t    #
# depmod.conf
#

# override default search ordering for kmod packaging
search updates extra built-in weak-updates
  
   ˆƒnÄÀÇ     <!DOCTYPE HTM