summaryrefslogtreecommitdiffstats
path: root/sys/contrib/octeon-sdk/cvmx-shmem.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/octeon-sdk/cvmx-shmem.h')
-rw-r--r--sys/contrib/octeon-sdk/cvmx-shmem.h139
1 files changed, 139 insertions, 0 deletions
diff --git a/sys/contrib/octeon-sdk/cvmx-shmem.h b/sys/contrib/octeon-sdk/cvmx-shmem.h
new file mode 100644
index 0000000..25472d1
--- /dev/null
+++ b/sys/contrib/octeon-sdk/cvmx-shmem.h
@@ -0,0 +1,139 @@
+/***********************license start***************
+ * Copyright (c) 2003-2010 Cavium Inc. (support@cavium.com). All rights
+ * reserved.
+ *
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+
+ * * Neither the name of Cavium Inc. nor the names of
+ * its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written
+ * permission.
+
+ * This Software, including technical data, may be subject to U.S. export control
+ * laws, including the U.S. Export Administration Act and its associated
+ * regulations, and may be subject to export or import regulations in other
+ * countries.
+
+ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
+ * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
+ * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
+ * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
+ * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
+ * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
+ * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
+ * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
+ * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
+ * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
+ ***********************license end**************************************/
+
+
+#ifndef __CVMX_SHMEM_H__
+#define __CVMX_SHMEM_H__
+
+/**
+ * @file
+ *
+ * cvmx-shmem provides APIs for setting up shared memory between Linux
+ * and simple executive applications.
+ *
+ * <hr>$Revision: 41586 $<hr>
+ */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "cvmx-spinlock.h"
+
+#define CVMX_SHMEM_NUM_DSCPTR 8
+#define CVMX_SHMEM_DSCPTR_NAME "SMDR"
+
+#define CVMX_SHMEM_O_RDONLY 0x00
+#define CVMX_SHMEM_O_WRONLY 0x01
+#define CVMX_SHMEM_O_RDWR 0x02
+#define CVMX_SHMEM_O_CREAT 0x04
+
+#define CVMX_SHMEM_MAP_PROT_READ 0x01
+#define CVMX_SHMEM_MAP_PROT_WRITE 0x02
+#define CVMX_SHMEM_MAP_EXEC 0x04
+
+#define CVMX_SHMEM_OWNER_NONE 0xff
+
+#define CVMX_SHMEM_VADDR64_START 0x500000000ULL
+#define CVMX_SHMEM_VADDR64_END 0x600000000ULL
+
+#define CVMX_SHMEM_VADDR32_START 0x10000000
+#define CVMX_SHMEM_VADDR32_END 0x18000000
+
+struct cvmx_shmem_dscptr {
+ cvmx_spinlock_t lock;
+ uint64_t owner: 8;
+ uint64_t is_named_block: 1;
+ uint64_t p_wronly: 1;
+ uint64_t p_rdwr: 1;
+ int32_t use_count; /* must use atomic operation to maintain count */
+ const char *name;
+ void *vaddr;
+ uint64_t paddr;
+ uint32_t size;
+ uint64_t alignment;
+};
+
+struct cvmx_shmem_smdr {
+ cvmx_spinlock_t lock;
+ struct cvmx_shmem_dscptr shmd[CVMX_SHMEM_NUM_DSCPTR];
+ void *break64; /* Keep track of unused 64 bit virtual address space */
+};
+
+
+struct cvmx_shmem_smdr *cvmx_shmem_init(void);
+
+/**
+ * Create a piece memory out of named block
+ *
+ * @param name Named block name
+ * @param flag create flag
+ */
+struct cvmx_shmem_dscptr *cvmx_shmem_named_block_open(char *name, uint32_t size, int oflag);
+
+/**
+ * Update TLB mapping based on the descriptor
+ */
+void* cvmx_shmem_map(struct cvmx_shmem_dscptr *desc, int pflag);
+
+/**
+ * Remove the TLB mapping created for the descriptor
+ */
+void cvmx_shmem_unmap(struct cvmx_shmem_dscptr *desc);
+
+
+/**
+ * Close the share memory,
+ *
+ * @Param remove Remove the named block if it is created by the application
+ */
+int cvmx_shmem_close(struct cvmx_shmem_dscptr *desc, int remove);
+
+/**
+ * Debug function, dump all SMDR descriptors
+ */
+void cvmx_shmem_show(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
OpenPOWER on IntegriCloud