diff options
| author | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2017-08-30 08:25:59 +0000 |
| commit | 8e4bff4cab0ddac6060645b0715210484d02ff40 (patch) | |
| tree | 3a5c3024371a04692a3a6d9974d001cdff8ebf84 /drivers/net/wireless/sc2331/sc2331_mem_alloc | |
Diffstat (limited to 'drivers/net/wireless/sc2331/sc2331_mem_alloc')
3 files changed, 107 insertions, 0 deletions
diff --git a/drivers/net/wireless/sc2331/sc2331_mem_alloc/Kconfig b/drivers/net/wireless/sc2331/sc2331_mem_alloc/Kconfig new file mode 100644 index 00000000..22050189 --- /dev/null +++ b/drivers/net/wireless/sc2331/sc2331_mem_alloc/Kconfig @@ -0,0 +1,3 @@ +config SC2331_MEM_ALLOC + bool "sprdwl mem alloc " + default y diff --git a/drivers/net/wireless/sc2331/sc2331_mem_alloc/Makefile b/drivers/net/wireless/sc2331/sc2331_mem_alloc/Makefile new file mode 100644 index 00000000..087301d3 --- /dev/null +++ b/drivers/net/wireless/sc2331/sc2331_mem_alloc/Makefile @@ -0,0 +1 @@ +obj-$(CONFIG_SC2331_MEM_ALLOC) += sprdwl_mem_alloc.o diff --git a/drivers/net/wireless/sc2331/sc2331_mem_alloc/sprdwl_mem_alloc.c b/drivers/net/wireless/sc2331/sc2331_mem_alloc/sprdwl_mem_alloc.c new file mode 100644 index 00000000..2f032622 --- /dev/null +++ b/drivers/net/wireless/sc2331/sc2331_mem_alloc/sprdwl_mem_alloc.c @@ -0,0 +1,103 @@ +#include <linux/proc_fs.h>
+#include <linux/sipc.h>
+#include <linux/mutex.h>
+#include <linux/spinlock.h>
+#include <linux/ieee80211.h>
+#include <linux/printk.h>
+#include <linux/inetdevice.h>
+#include <linux/spinlock.h>
+#include <net/cfg80211.h>
+#include <linux/kernel.h>
+#include <linux/errno.h>
+#include <linux/module.h>
+#include <linux/netdevice.h>
+#include <linux/skbuff.h>
+#include <net/ieee80211_radiotap.h>
+#include <linux/etherdevice.h>
+#include <linux/wireless.h>
+#include <net/iw_handler.h>
+#include <linux/string.h>
+#include <linux/delay.h>
+#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/wakelock.h>
+#include <linux/workqueue.h>
+#include <linux/ipv6.h>
+#include <linux/ip.h>
+#include <linux/inetdevice.h>
+#include <asm/byteorder.h>
+#include <linux/platform_device.h>
+#include <linux/atomic.h>
+#include <linux/wait.h>
+#include <linux/semaphore.h>
+#include <linux/vmalloc.h>
+#include <linux/kthread.h>
+#include <linux/time.h>
+#include <linux/delay.h>
+#include <linux/timer.h>
+#include <linux/completion.h>
+#include <asm/atomic.h>
+#include <linux/ieee80211.h>
+#include <linux/delay.h>
+
+#define WIFI_MEM_BLOCK_NUM (2)
+
+typedef struct
+{
+ int status;
+ unsigned char *mem;
+}m_mem_t;
+
+static m_mem_t wifi_mem[WIFI_MEM_BLOCK_NUM] = {0};
+unsigned char *wifi_256k_alloc(void)
+{
+ unsigned char *p= NULL;
+ int i;
+ for(i=0; i< WIFI_MEM_BLOCK_NUM; i++)
+ {
+ if( (0 == wifi_mem[i].status) && (NULL != wifi_mem[i].mem) )
+ {
+ p = wifi_mem[i].mem;
+ wifi_mem[i].status = 1;
+ printk("\001" "0" "[wifi_256k_alloc][%d][0x%x]\n", i, wifi_mem[i].mem );
+ break;
+ }
+ }
+ return p;
+}
+EXPORT_SYMBOL_GPL(wifi_256k_alloc);
+
+int wifi_256k_free(unsigned char *mem)
+{
+ int i;
+ for(i=0; i< WIFI_MEM_BLOCK_NUM; i++)
+ {
+ if(mem == wifi_mem[i].mem)
+ {
+ wifi_mem[i].status = 0;
+ printk("\001" "0" "[wifi_256k_free][%d][0x%x]\n", i, wifi_mem[i].mem );
+ return 0;
+ }
+ }
+ return -1;
+}
+EXPORT_SYMBOL_GPL(wifi_256k_free);
+
+static int sprdwl_mem_alloc(void)
+{
+ int i;
+ printk("[%s]\n", __func__);
+ for(i = 0; i < WIFI_MEM_BLOCK_NUM; i++)
+ {
+ wifi_mem[i].mem = kmalloc( 256*1024, GFP_ATOMIC);
+ printk("\001" "0" "[wifi_mem][%d][0x%x]\n", i, wifi_mem[i].mem );
+ }
+ return 0;
+}
+
+arch_initcall(sprdwl_mem_alloc);
+
+MODULE_AUTHOR("jinglong.chen");
+MODULE_DESCRIPTION("256k mem alloc");
+MODULE_LICENSE("GPL");
+
|
