[Feature][T106]ZXW P56U09 code

Only Configure: Yes
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I3cbd8b420271eb20c2b40ebe5c78f83059cd42f3
diff --git a/ap/os/linux/linux-3.4.x/ipc/shm_ctrl.h b/ap/os/linux/linux-3.4.x/ipc/shm_ctrl.h
new file mode 100755
index 0000000..4726ea8
--- /dev/null
+++ b/ap/os/linux/linux-3.4.x/ipc/shm_ctrl.h
@@ -0,0 +1,66 @@
+/*
+ * linux/ipc/shm_ctrl.h
+ * Copyright (C) 2023 Sanechips Technology Co., Ltd.
+ */
+#ifndef _SHM_CTRL_H
+#define _SHM_CTRL_H
+
+#ifdef CONFIG_SYSVIPC_CROSS_SHM
+/**
+ * ºê¶¨Òå
+ */
+#include <linux/slab.h>
+#include <linux/mm.h>
+#include <linux/shm.h>
+#include <linux/io.h> 
+#include <linux/init.h>
+#include <linux/file.h>
+#include <linux/list.h>
+#include <linux/mman.h>
+#include <linux/shmem_fs.h>
+#include <linux/audit.h>
+#include <linux/capability.h>
+#include <linux/ptrace.h>
+#include <linux/rwsem.h>
+#include <linux/nsproxy.h>
+#include <linux/ipc_namespace.h> 
+#include <linux/module.h>
+#include <linux/dma-mapping.h>
+#include <mach/spinlock.h>
+
+/**
+ * ºê¶¨Òå
+*/
+#define TRUE   1
+#define FALSE  0
+
+#define SHM_CTRL_OK               (0)
+#define SHM_CTRL_ERROR            (-1)
+#define SHM_CTRL_VMA_LINK_NUM     (2)
+#define SHM_CTRL_MEMSYNC_CHANNEL  (15)
+#define SHM_CTRL_CHANNEL_SIZE     (0x40)
+#define SHM_CTRL_LONG_32BIT       (32)
+#define SHM_REMOTE_SYSV_YES       (0x73797376) /*SYSV ASCIIÂë*/
+#define SHM_REMOTE_POSIX_YES      (0x706F7378)  /*POSX ASCIIÂë*/
+#define SHM_REMOTE_SYSV_MASK      (0xFFFFF800) /*(key:-1~-2047)*/
+
+/**
+ * Êý¾ÝÀàÐͶ¨Òå
+ */
+struct shm_pool_msg
+{
+    unsigned int shm_len;
+    unsigned int key_manage_len;
+    phys_addr_t  shm_memory_phy;
+    phys_addr_t  key_manage_phy;
+};
+
+extern int shm_remote_free_pages(key_t key);
+extern key_t shm_hash_name_to_key(const char *name, int len);
+extern int shm_do_newseg_check(key_t key, unsigned long len);
+extern int shm_do_remote_map_vma(struct vm_area_struct *vma, key_t key);
+extern void shm_unmap_page_range(struct mm_struct *mm, struct vm_area_struct *vma,
+                                 unsigned long addr, unsigned long end);
+#endif
+#endif // _SHM_CTRL_H
+