/* * Copyright (C) 2018 MediaTek Inc. * * 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. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef POB_INT_H #define POB_INT_H #include #define POB_CONTAINER_OF(ptr, type, member) \ ((type *)(((char *)ptr) - offsetof(type, member))) void *pob_alloc_atomic(int i32Size); void pob_free(void *pvBuf); void pob_trace(const char *fmt, ...); /* sysfs */ #define POB_SYSFS_MAX_BUFF_SIZE 1024 #define KOBJ_ATTR_RW(_name) \ struct kobj_attribute kobj_attr_##_name = \ __ATTR(_name, 0660, \ _name##_show, _name##_store) void pob_sysfs_create_file(struct kobject *parent, struct kobj_attribute *kobj_attr); void pob_sysfs_remove_file(struct kobject *parent, struct kobj_attribute *kobj_attr); /* QoS */ int pob_qos_init(struct kobject *pob_kobj); void pob_qos_exit(struct kobject *pob_kobj); int pob_qos_ind_client_isemtpy(void); void pob_qos_tracelog(unsigned long val, void *data); #endif