0x00020000
     ˆÆÅ22ÄÁÇ      #include <asm/user.h>
  "   ˆl–Ým_J*j"Tâ�À;q–”Å£Æƒh¹ÂÈ      MAJOR=4
MINOR=54
DEVNAME=tty54
     ˆ¿Æƒh¹ÂÈ      5:2
     �ÄÂÈ      File not found.
  #   ˆÇÆƒÏ¹Åa–Ým_J*j"Tâ�À†ãBS�ÿÉ h    /* SPDX-License-Identifier: GPL-2.0 */
/*
 * mux/consumer.h - definitions for the multiplexer consumer interface
 *
 * Copyright (C) 2017 Axentia Technologies AB
 *
 * Author: Peter Rosin <peda@axentia.se>
 */

#ifndef _LINUX_MUX_CONSUMER_H
#define _LINUX_MUX_CONSUMER_H

#include <linux/compiler.h>

struct device;
struct mux_control;
struct mux_state;

unsigned int mux_control_states(struct mux_control *mux);
int __must_check mux_control_select_delay(struct mux_control *mux,
					  unsigned int state,
					  unsigned int delay_us);
int __must_check mux_state_select_delay(struct mux_state *mstate,
					unsigned int delay_us);
int __must_check mux_control_try_select_delay(struct mux_control *mux,
					      unsigned int state,
					      unsigned int delay_us);
int __must_check mux_state_try_select_delay(struct mux_state *mstate,
					    unsigned int delay_us);

static inline int __must_check mux_control_select(struct mux_control *mux,
						  unsigned int state)
{
	return mux_control_select_delay(mux, state, 0);
}

static inline int __must_check mux_state_select(struct mux_state *mstate)
{
	return mux_state_select_delay(mstate, 0);
}

static inline int __must_check mux_control_try_select(struct mux_control *mux,
						      unsigned int state)
{
	return mux_control_try_select_delay(mux, state, 0);
}

static inline int __must_check mux_state_try_select(struct mux_state *mstate)
{
	return mux_state_try_select_delay(mstate, 0);
}

int mux_control_deselect(struct mux_control *mux);
int mux_state_deselect(struct mux_state *mstate);

struct mux_control *mux_control_get(struct device *dev, const char *mux_name);
void mux_control_put(struct mux_control *mux);

struct mux_control *devm_mux_control_get(struct device *dev,
					 const char *mux_name);
struct mux_state *devm_mux_state_get(struct device *dev,
				     const char *mux_name);

#endif /* _LINUX_MUX_CONSUMER_H */
     !�Å¾É      !File not found.
     #ˆÈÇƒh Æ¾É     #/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_TIMENS_H
#define _LINUX_TIMENS_H


#include <linux/sched.h>
#include <linux/nsproxy.h>
#include <linux/ns_common.h>
#include <linux/err.h>

struct user_namespace;
extern struct user_namespace init_user_ns;

struct seq_file;
struct vm_area_struct;

struct timens_offsets {
	struct timespec64 monotonic;
	struct timespec64 boottime;
};

struct time_namespace {
	struct user_namespace	*user_ns;
	struct ucounts		*ucounts;
	struct ns_common	ns;
	struct timens_offsets	offsets;
	struct page		*vvar_page;
	/* If set prevents changing offsets after any task joined namespace. */
	bool			frozen_offsets;
} __randomize_layout;

extern struct time_namespace init_time_ns;

#ifdef CONFIG_TIME_NS
extern int vdso_join_timens(struct task_struct *task,
			    struct time_namespace *ns);
extern void timens_commit(struct task_struct *tsk, struct time_namespace *ns);

static inline struct time_namespace *get_time_ns(struct time_namespace *ns)
{
	refcount_inc(&ns->ns.count);
	return ns;
}

struct time_namespace *copy_time_ns(unsigned long flags,
				    struct user_namespace *user_ns,
				    struct time_namespace *old_ns);
void free_time_ns(struct time_namespace *ns);
void timens_on_fork(struct nsproxy *nsproxy, struct task_struct *tsk);
struct page *find_timens_vvar_page(struct vm_area_struct *vma);

static inline void put_time_ns(struct time_namespace *ns)
{
	if (refcount_dec_and_test(&ns->ns.count))
		free_time_ns(ns);
}

void proc_timens_show_offsets(struct task_struct *p, struct seq_file *m);

struct proc_timens_offset {
	int			clockid;
	struct timespec64	val;
};

int proc_timens_set_offset(struct file *file, struct task_struct *p,
			   struct proc_timens_offset *offsets, int n);

static inline void timens_add_monotonic(struct timespec64 *ts)
{
	struct timens_offsets *ns_offsets = &current->nsproxy-