0
     ;ˆÂÇƒ[gÁÀÊ i    ;/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  include/linux/eventfd.h
 *
 *  Copyright (C) 2007  Davide Libenzi <davidel@xmailserver.org>
 *
 */

#ifndef _LINUX_EVENTFD_H
#define _LINUX_EVENTFD_H

#include <linux/wait.h>
#include <linux/err.h>
#include <linux/percpu-defs.h>
#include <linux/percpu.h>
#include <linux/sched.h>
#include <uapi/linux/eventfd.h>

/*
 * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining
 * new flags, since they might collide with O_* ones. We want
 * to re-use O_* flags that couldn't possibly have a meaning
 * from eventfd, in order to leave a free define-space for
 * shared O_* flags.
 */
#define EFD_SHARED_FCNTL_FLAGS (O_CLOEXEC | O_NONBLOCK)
#define EFD_FLAGS_SET (EFD_SHARED_FCNTL_FLAGS | EFD_SEMAPHORE)

struct eventfd_ctx;
struct file;

#ifdef CONFIG_EVENTFD

void eventfd_ctx_put(struct eventfd_ctx *ctx);
struct file *eventfd_fget(int fd);
struct eventfd_ctx *eventfd_ctx_fdget(int fd);
struct eventfd_ctx *eventfd_ctx_fileget(struct file *file);
void eventfd_signal_mask(struct eventfd_ctx *ctx, __poll_t mask);
int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_entry_t *wait,
				  __u64 *cnt);
void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt);

static inline bool eventfd_signal_allowed(void)
{
	return !current->in_eventfd;
}

#else /* CONFIG_EVENTFD */

/*
 * Ugly ugly ugly error layer to support modules that uses eventfd but
 * pretend to work in !CONFIG_EVENTFD configurations. Namely, AIO.
 */

static inline struct eventfd_ctx *eventfd_ctx_fdget(int fd)
{
	return ERR_PTR(-ENOSYS);
}

static inline void eventfd_signal_mask(struct eventfd_ctx *ctx, __poll_t mask)
{
}

static inline void eventfd_ctx_put(struct eventfd_ctx *ctx)
{

}

static inline int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx,
						wait_queue_entry_t *wait, __u64 *cnt)
{
	return -ENOSYS;
}

static inline bool eventfd_signal_allowed(void)
{
	return true;
}

static inline void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt)
{

}

#endif

static inline void eventfd_signal(struct eventfd_ctx *ctx)
{
	eventfd_signal_mask(ctx, 0);
}

#endif /* _LINUX_EVENTFD_H */

     =�ÌÀÊ       =File not found.
       =  #   ?ˆl–ß=¿J*h¥8 pLÜi¥1hßÈ„iðïÁË ?÷     ?Þ•    ®     Œ  A  ü       $     $     $     #$     3$     F$  3  V$  _  Š(  Œ  ê)     w,     ˆ,  ý   ›,     ™-     ¨-     ¶-     È-     Ù-     â-     ÿ-  +   .     ;.  #   [.  9   .     ¹.  &   Ò.     ù.     /     %/  F   >/  @   …/  #   Æ/  #   ê/     0     #0  !   >0     `0     x0     …0     ”0     ±0     Â0     Ð0     ×0  +   æ0  (   1     ;1  ;   Q1  ,   �1  6   º1  %   ñ1  .   2     F2     [2  %   {2     ¡2     °2      ¿2     à2      3     3  "   63  4   Y3  !   Ž3  $   °3  -   Õ3     4  *    4  +   K4     w4     —4     °4  )   Ê4  )   ô4  .   5  0   M5  !   ~5  '    5  !   È5  +   ê5  +   6  <   B6  #   6  d   £6  A   7  9   J7     „7     ¢7     ¾7  A   Ù7  C   8  B   _8  >   ¢8  ?   á8  7   !9  2   Y9  #   Œ9  !   °9  4   Ò9  ?   :  8   G:  "   €:     £:  .   »:  I   ê:     4;  #   Q;  2   u;     ¨;  #   Ä;  1   è;  <   <     W<     j<  *   Š<  "   µ<      Ø<  /   ù<     )=  :   G=  $   ‚=  @   §=  /   è=  +   >     D>  >   _>  6   ž>  )   Õ>  8   ÿ>  <   8?  F   u?  3   ¼?     ð?  %   @  $   *@  I   O@  .   ™@     È@  5   ç@  q   A  )   �A  :   ¹A  $   ôA  '   B  R   AB  =   ”B  -   ÒB  '    C  )   (C  *   RC  (   }C  '   ¦C  @   ÎC  (   D  #   8D     \D  '   lD  2   ”D  ?   ÇD  �   E  -   •E      ÃE     äE  ,   F     .F  3   JF  %   ~F  
   ¤F  (   ¯F     ØF     ÷F     G  (   %G  9   NG  .   ˆG  )   ·G  %   áG  E   H  +   MH  =   yH  6   ·H  G   îH     6I  0   UI  7   †I     ¾I  5   ÙI  (   J  3   8J  A   lJ     ®J  '   ÀJ  ,   èJ  3   K  3   IK     }K  5   šK  '   ÐK  5   øK  ,   .L  &   [L  :   ‚L     ½L     ÙL  .   ùL  =   (M     fM  C   xM  '   ¼M  "   äM      N  !   (N  7   JN  ?   ‚N  A   ÂN  V   O  “   [O  >   ïO  +   .P  '   ZP  ,   ‚P  0   ¯P  L   àP  *   -Q 