MAJOR=4
MINOR=54
DEVNAME=tty54
  *   ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÁ907_†I|¥�+ÁÀ ‹    /* SPDX-License-Identifier: GPL-2.0 */
#ifndef _FS_CEPH_DEBUG_H
#define _FS_CEPH_DEBUG_H

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/string.h>

#ifdef CONFIG_CEPH_LIB_PRETTYDEBUG

/*
 * wrap pr_debug to include a filename:lineno prefix on each line.
 * this incurs some overhead (kernel size and execution time) due to
 * the extra function call at each call site.
 */

# if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
#  define dout(fmt, ...)						\
	pr_debug("%.*s %12.12s:%-4d : " fmt,				\
		 8 - (int)sizeof(KBUILD_MODNAME), "    ",		\
		 kbasename(__FILE__), __LINE__, ##__VA_ARGS__)
# else
/* faux printk call just to see any compiler warnings. */
#  define dout(fmt, ...)	do {				\
		if (0)						\
			printk(KERN_DEBUG fmt, ##__VA_ARGS__);	\
	} while (0)
# endif

#else

/*
 * or, just wrap pr_debug
 */
# define dout(fmt, ...)	pr_debug(" " fmt, ##__VA_ARGS__)

#endif

#endif
  0   ˆl–ßi~”êh¥8 Eq–®
bÑ¿ÃƒBç_ŒuÐb&=Ly[Ï¿ÃÂ \    ý7zXZ  i"Þ6 !   t/å£à	ÿ]  áyU}“½,ŸVtÆS~ÖGŠÐóãWý
è~y ¨Û´š08`ë²šâ§ìï¥ø°ØŒ�ŠGâöÄ9
Te÷I²VÃ¹ô¶;÷9n„oiv@®ðT�æ70ùJË	Â§™pÅJl•5×cx�O¶�§oTŸÃ7¸`¾;Û)H Ôøç_µRZ&¶x&fÛ‡CÀD®3%@Ÿfkú§¯¾tßÊ^w“‰/@B3ëv@îä�0ñf('³Žá6‚Þ¢ ‚]! �¼jä7RèÏ!u¿êfßÌù-<S{Å–¬¸V’²ÎvRMƒö ø£³%zu²DLÚ°tN?lâ�Ð‡‹´Ÿð&�Ëð±YZõÌØø—¸[gY1¾ÛÆ%�q˜oùµ	rÀÀÜÀLo»Kñ˜e ó*@)Ÿ'd{’Lcq1êEXßš$ÓÔ ~4Ö¸ž$WjÀ
5SÈ«`¼†Ø£Å™?éÂ“–-ûD|ð/ƒ·(>ðõ…‚zù¼öÅ½ŒrOcXÉ_oèƒ2„1R—ç÷/9c9Ö3Ž¦t�ÍÓÑÄä£¿fâø~÷'Œšž�có’mõ-Oúæ+\rR¢11%æ»Â65+ìÅÙUä"‚´âá¢&n¢4ÿþ×Ç~¸�%H5¶MÝ«æÊ›4ÛA„å­vÝ»ßNØ³Ê«®ýyþ9òrDCf0ìzP�E‚ÖD�”¶	ÉpJ}î´úÂö¯º¸2Aj�~!ÇJÖ½çÚT	…ƒlª³{xõ
P?Ïý’È	ùcÇèõV)³öåòîôÄˆ’Ãcõ¤¾Ù6W¡„®KV	æd`"(´i�À�uÅ‰"«�k^b/Yûæ(z^Úy‡êjØE‚g@w8�/uw›îŽ}Ã´G‰uPasJM´4«¦!ñà&~épŠÏ1‰
Rn`>+IÌÂæú&]`³‚P©[òG¬ÍÝ¦·1ç©�«çÏ‹�m½ßÛ•)(Î²–KfRÅå×Bä0|ÿ�§’j^ìmpé¥šËÂi¦õBK&°­âzTî?ÞŸ'ây)a¸Hî'/l¿„ÁZg¾¢
nÍ»d&fT?‘7�j¿c¡%¬£ËbnÎ›ÖôÔ‚ú³hJâ~žKJ¿Ç¸ Øâ°wö{24Žâ±wä5¯]Š,²¢dÒž'
’�±†à…šß€W¸Aó9¼8€­ÿH¼ggÏM®¯˜oíÕ+Ù×ªøgê�†¡ýIua2¡Øµ9ÁžR›¦™…óþÕ„N‰Øsž¨Ùé¤]°1ù
¨ÙõbÒã.ãn{y|�ª­�cº9ª{0�íXk±õ{˜­Ùè<|š]‚4Ú±¬%ø¹Ò31i§T…0KG†…­¬BÏy€Ðgu0 0   *¹c ·€  Fœ>0‹    YZ     ˆÁÄƒh/3ÀÃÂ W    /* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TRACE_SEQ_H
#define _LINUX_TRACE_SEQ_H

#include <linux/seq_buf.h>

#include <asm/page.h>

/*
 * Trace sequences are used to allow a function to call several other functions
 * to create a string of data to use (up to a max of PAGE_SIZE).
 */

struct trace_seq {
	char			buffer[PAGE_SIZE];
	struct seq_buf		seq;
	int			full;
};

static inline void
trace_seq_init(struct trace_seq *s)
{
	seq_buf_init(&s->seq, s->buffer, PAGE_SIZE);
	s->full = 0;
}

/**
 * trace_seq_used - amount of actual data written to buffer
 * @s: trace sequence descriptor
 *
 * Returns the amount of data written to the buffer.
 *
 * IMPORTANT!
 *
 * Use this instead of @s->seq.len if you need to pass the amount
 * of data from the buffer to another buffer (userspace, or what not).
 * The @s->seq.len on overflow is bigger than the buffer size and
 * using it can cause access to undefined memory.
 */
static inline int trace_seq_used(struct trace_seq *s)
{
	return seq_buf_used(&s->seq);
}

/**
 * trace_seq_buffer_ptr - return pointer to next location in buffer
 * @s: trace sequence descriptor
 *
 * Returns the pointer to the buffer where the next write to
 * the buffer will happen. This is useful to save the location
 * that is about to be written to and then return the result
 * of that write.
 */
static inline char *
trace_seq_buffer_ptr(struct trace_seq *s)
{
	return s->buffer + seq_buf_used(&s->seq);
}

/**
 * trace_seq_has_overflowed - return true if the trace_seq took too much
 * @s: trace sequence descriptor
 *
 * Returns true if too much data was added to the trace_seq and it is
 * now full and will not take anymore.
 */
static inline bool trace_seq_has_overflowed(struct trace_seq *s)
{
	return s->full || seq_buf_has_overflowed(&s->seq);
}

/*
 * Currently only defined when tracing is enabled.
 */
#ifdef CONFIG_TRACING
extern __