openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

linux-uk-proxy.h (2609B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  */
      7 
      8 #ifndef __LINUX_UK_PROXY_H__
      9 #define __LINUX_UK_PROXY_H__
     10 
     11 #ifndef __KERNEL__
     12 #include <stdint.h>
     13 #endif
     14 
     15 /* Device Info */
     16 #define LUK_DEVICE_NAME "/dev/linux-uk-proxy"
     17 #define LUK_DEVICE_MAJOR 125
     18 #define LUK_DEVICE_MINOR 0
     19 
     20 #define LUK_MAX_SERVICE_NAME 64
     21 #define LUK_MAX_DATA_SIZE (5*1024)
     22 
     23 /* Control structure passed to all ioctls */
     24 typedef struct {
     25     uint32_t v;
     26 } luk_ioctl_version_t;
     27 
     28 typedef struct {
     29     uint32_t q_size;
     30     uint32_t flags;
     31 } luk_ioctl_create_t;
     32 
     33 typedef struct {
     34     uint32_t flags;
     35 } luk_ioctl_destroy_t;
     36 
     37 typedef struct {
     38     uint64_t data;
     39     uint32_t len;
     40 } luk_ioctl_recv_t;
     41 
     42 typedef struct {
     43     uint64_t data;
     44     uint32_t len;
     45 } luk_ioctl_send_t;    
     46     
     47 typedef struct  {
     48     char service[LUK_MAX_SERVICE_NAME]; 
     49     int rc;                               /* Operation Return Code */    
     50     union {
     51         luk_ioctl_version_t version;
     52         luk_ioctl_create_t  create;
     53         luk_ioctl_destroy_t destroy;
     54         luk_ioctl_recv_t    recv;
     55         luk_ioctl_send_t    send;
     56     } args;
     57 } luk_ioctl_t;
     58 
     59 /* Linux User/Kernel Proxy ioctls */
     60 #define LUK_MAGIC 'L'
     61 
     62 #define LUK_VERSION 		_IO(LUK_MAGIC, 0)
     63 #define LUK_SERVICE_CREATE	_IO(LUK_MAGIC, 1)
     64 #define LUK_SERVICE_DESTROY	_IO(LUK_MAGIC, 2)
     65 #define LUK_SERVICE_RECV	_IO(LUK_MAGIC, 3)
     66 #define LUK_SERVICE_SEND	_IO(LUK_MAGIC, 4)
     67 #define LUK_SERVICE_SUSPEND	_IO(LUK_MAGIC, 5)
     68 #define LUK_SERVICE_RESUME	_IO(LUK_MAGIC, 6)
     69 
     70 #ifdef __KERNEL__
     71 
     72 #include <linux/ioctl.h>
     73 
     74 /* Kernel API */
     75 extern int linux_uk_proxy_service_create(const char *service, uint32_t q_size, uint32_t flags); 
     76 extern int linux_uk_proxy_send(const char *service, void *data, uint32_t len); 
     77 extern int linux_uk_proxy_recv(const char *service, void *data, uint32_t *len); 
     78 extern int linux_uk_proxy_service_destroy(const char *service); 
     79 
     80 #else
     81 
     82 /* User API */
     83 extern int linux_uk_proxy_open(void); 
     84 extern int linux_uk_proxy_service_create(const char *service, uint32_t q_size, uint32_t flags); 
     85 extern int linux_uk_proxy_service_destroy(const char *service); 
     86 extern int linux_uk_proxy_send(const char *service, void *data, uint32_t len); 
     87 extern int linux_uk_proxy_recv(const char *service, void *data, uint32_t *len); 
     88 extern int linux_uk_proxy_suspend(const char *service); 
     89 extern int linux_uk_proxy_resume(const char *service); 
     90 extern int linux_uk_proxy_close(void); 
     91 
     92 #endif /* __KERNEL__ */
     93 
     94 #endif /* __LINUX_UK_PROXY_H__ */