/**
@file     procfs_manager.h
@brief    Manager for procfs events
@details  Copyright (c) 2025 Acronis International GmbH
@author   Denis Kopyrin (denis.kopyrin@acronis.com)
@since    $Id: $
*/

#pragma once

#include <linux/dcache.h>
#include <linux/fs.h>

#include "si_common.h"
#include "task_info_map.h"
#include "transport_protocol.h"

int procfs_manager_init(void);
void procfs_manager_deinit(void);
void procfs_manager_activate(void);
void procfs_manager_deactivate(void);

typedef struct PACKED
{
	uint64_t caller_pid_version;
	uint64_t target_pid_version;
	SiProcfsAccessType access_type;
} hashtable_procfs_key_t;

bool procfs_should_send(task_info_t *caller_task_info, const struct path *target_path,
						hashtable_procfs_key_t *out_key, task_info_t **target_task_info);