6db4831e98
Android 14
106 lines
3.8 KiB
C
106 lines
3.8 KiB
C
/*
|
|
* Copyright (c) 2020-2021 Samsung Electronics Co., Ltd. All Rights Reserved
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2
|
|
* as published by the Free Software Foundation.
|
|
*/
|
|
|
|
#ifndef _DSMS_TEST_H
|
|
#define _DSMS_TEST_H
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* macros to allow testing static functions and initialization code */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
#if defined(DSMS_KUNIT_ENABLED)
|
|
|
|
#define __kunit_init
|
|
#define __kunit_exit
|
|
|
|
#else
|
|
|
|
#define __visible_for_testing static
|
|
#define __kunit_init __init
|
|
#define __kunit_exit __init
|
|
|
|
#endif /* defined(DSMS_KUNIT_ENABLED) */
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Functions exported for each module (using __visible_for_testing) */
|
|
/* -------------------------------------------------------------------------- */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
#if defined(DSMS_KUNIT_ENABLED)
|
|
|
|
#include <kunit/mock.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/types.h>
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* kmalloc and kmalloc_array mock */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
extern void *security_dsms_test_kmalloc_mock(size_t size, gfp_t flags);
|
|
extern void *security_dsms_test_kmalloc_array_mock(size_t n, size_t size, gfp_t flags);
|
|
|
|
#define kmalloc security_dsms_test_kmalloc_mock
|
|
#define kmalloc_array security_dsms_test_kmalloc_array_mock
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* dsms_access_control */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
struct dsms_policy_entry;
|
|
|
|
extern int compare_policy_entries(const void *function_name, const void *entry);
|
|
extern struct dsms_policy_entry *find_policy_entry(const char *function_name);
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* dsms_init */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
extern int __kunit_init dsms_init(void);
|
|
extern void __kunit_exit dsms_exit(void);
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* dsms_netlink */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
extern atomic_t daemon_ready;
|
|
extern int dsms_send_netlink_message(const char *feature_code,
|
|
const char *detail,
|
|
int64_t value);
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* dsms_preboot_buffer */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
struct dsms_message;
|
|
extern atomic_t message_counter;
|
|
extern struct task_struct *sender_thread;
|
|
extern struct dsms_message *create_message(const char *feature_code,
|
|
const char *detail,
|
|
int64_t value);
|
|
extern void destroy_message(struct dsms_message *message);
|
|
extern struct dsms_message_node *create_node(struct dsms_message *message);
|
|
extern void destroy_node(struct dsms_message_node *node);
|
|
extern struct dsms_message *dsms_preboot_buffer_get(void);
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* dsms_rate_limit */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
extern int dsms_message_count;
|
|
extern u64 dsms_round_start_ms;
|
|
|
|
extern int dsms_get_max_messages_per_round(void);
|
|
extern u64 round_end_ms(u64 round_start_ms);
|
|
extern int is_new_round(u64 now_ms, u64 last_round_start_ms);
|
|
extern u64 dsms_get_time_ms(void);
|
|
|
|
#endif /* !defined(DSMS_KUNIT_ENABLED) */
|
|
#endif /* _DSMS_TEST_H */
|