/* * 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 #include #include #include /* -------------------------------------------------------------------------- */ /* 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 */