#define MEMORY_ATTR_TOTAL BIT(0) /* DATA_TYPE_UINT64 */
#define MEMORY_ATTR_AVAILABLE BIT(1) /* DATA_TYPE_UINT64 */
#define MEMORY_ATTR_FREE BIT(2) /* DATA_TYPE_UINT64 */
+#define MEMORY_ATTR_BUFFER BIT(3) /* DATA_TYPE_UINT64 */
+#define MEMORY_ATTR_CACHED BIT(4) /* DATA_TYPE_UINT64 */
+#define MEMORY_ATTR_CMA_TOTAL BIT(5) /* DATA_TYPE_UINT64 */
+#define MEMORY_ATTR_CMA_FREE BIT(6) /* DATA_TYPE_UINT64 */
/* Battery Resource */
#define BATTERY_ATTR_CAPACITY BIT(0) /* DATA_TYPE_INT */
#define PROC_MEM_INFO_MEM_AVAILABLE "MemAvailable"
#define PROC_MEM_INFO_MEM_FREE "MemFree"
+#define PROC_MEM_INFO_BUFFER "Buffers"
+#define PROC_MEM_INFO_CACHED "Cached"
+#define PROC_MEM_INFO_CMA_FREE "CmaFree"
+
+static int memory_get_cma_total(u_int64_t *val)
+{
+ static u_int64_t cma_total = 0;
+ int ret;
+
+ if (!cma_total) {
+ ret = kernel_get_memory_info("CmaTotal", &cma_total);
+ if (ret < 0) {
+ _E("failed to get system CMA total memory\n");
+ return -EINVAL;
+ }
+ }
+
+ *val = cma_total;
+
+ return 0;
+}
static int memory_get_memory_info(const struct resource *res,
const struct resource_attribute *attr,
case MEMORY_ATTR_FREE:
ret = kernel_get_memory_info(PROC_MEM_INFO_MEM_FREE, val);
break;
+ case MEMORY_ATTR_BUFFER:
+ ret = kernel_get_memory_info(PROC_MEM_INFO_BUFFER, val);
+ break;
+ case MEMORY_ATTR_CACHED:
+ ret = kernel_get_memory_info(PROC_MEM_INFO_CACHED, val);
+ break;
+ case MEMORY_ATTR_CMA_TOTAL:
+ ret = memory_get_cma_total(val);
+ break;
+ case MEMORY_ATTR_CMA_FREE:
+ ret = kernel_get_memory_info(PROC_MEM_INFO_CMA_FREE, val);
+ break;
default:
_E("wrong memory resource attribute\n");
ret = -EINVAL;
.ops = {
.get = memory_get_memory_info,
}
+ }, {
+ .name = "MEMORY_ATTR_BUFFER",
+ .id = MEMORY_ATTR_BUFFER,
+ .type = DATA_TYPE_UINT64,
+ .ops = {
+ .get = memory_get_memory_info,
+ }
+ }, {
+ .name = "MEMORY_ATTR_CACHED",
+ .id = MEMORY_ATTR_CACHED,
+ .type = DATA_TYPE_UINT64,
+ .ops = {
+ .get = memory_get_memory_info,
+ }
+ }, {
+ .name = "MEMORY_ATTR_CMA_TOTAL",
+ .id = MEMORY_ATTR_CMA_TOTAL,
+ .type = DATA_TYPE_UINT64,
+ .ops = {
+ .get = memory_get_memory_info,
+ }
+ }, {
+ .name = "MEMORY_ATTR_CMA_FREE",
+ .id = MEMORY_ATTR_CMA_FREE,
+ .type = DATA_TYPE_UINT64,
+ .ops = {
+ .get = memory_get_memory_info,
+ }
},
};