blob: 7137e2e20628daf220384a424b40bff34edb3455 [file] [log] [blame]
/* Copyright (c) 2008-2014, 2017 The Linux Foundation. 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 and
* only 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.
*/
#ifndef DIAGMEM_H
#define DIAGMEM_H
#include "diagchar.h"
#define POOL_TYPE_COPY 0
#define POOL_TYPE_HDLC 1
#define POOL_TYPE_USER 2
#define POOL_TYPE_MUX_APPS 3
#define POOL_TYPE_DCI 4
#define POOL_TYPE_LOCAL_LAST 5
#define POOL_TYPE_REMOTE_BASE POOL_TYPE_LOCAL_LAST
#define POOL_TYPE_MDM POOL_TYPE_REMOTE_BASE
#define POOL_TYPE_MDM2 (POOL_TYPE_REMOTE_BASE + 1)
#define POOL_TYPE_MDM_DCI (POOL_TYPE_REMOTE_BASE + 2)
#define POOL_TYPE_MDM2_DCI (POOL_TYPE_REMOTE_BASE + 3)
#define POOL_TYPE_MDM_MUX (POOL_TYPE_REMOTE_BASE + 4)
#define POOL_TYPE_MDM2_MUX (POOL_TYPE_REMOTE_BASE + 5)
#define POOL_TYPE_MDM_DCI_WRITE (POOL_TYPE_REMOTE_BASE + 6)
#define POOL_TYPE_MDM2_DCI_WRITE (POOL_TYPE_REMOTE_BASE + 7)
#define POOL_TYPE_QSC_MUX (POOL_TYPE_REMOTE_BASE + 8)
#define POOL_TYPE_REMOTE_LAST (POOL_TYPE_REMOTE_BASE + 9)
#ifdef CONFIG_DIAGFWD_BRIDGE_CODE
#define NUM_MEMORY_POOLS POOL_TYPE_REMOTE_LAST
#else
#define NUM_MEMORY_POOLS POOL_TYPE_LOCAL_LAST
#endif
#define DIAG_MEMPOOL_NAME_SZ 24
#define DIAG_MEMPOOL_GET_NAME(x) (diag_mempools[x].name)
struct diag_mempool_t {
int id;
char name[DIAG_MEMPOOL_NAME_SZ];
mempool_t *pool;
unsigned int itemsize;
unsigned int poolsize;
int count;
spinlock_t lock;
} __packed;
extern struct diag_mempool_t diag_mempools[NUM_MEMORY_POOLS];
void diagmem_setsize(int pool_idx, int itemsize, int poolsize);
void *diagmem_alloc(struct diagchar_dev *driver, int size, int pool_type);
void diagmem_free(struct diagchar_dev *driver, void *buf, int pool_type);
void diagmem_init(struct diagchar_dev *driver, int type);
void diagmem_exit(struct diagchar_dev *driver, int type);
#endif