1 /* 2 * Intel MIC Platform Software Stack (MPSS) 3 * 4 * Copyright(c) 2013 Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License, version 2, as 8 * published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 * 15 * The full GNU General Public License is included in this distribution in 16 * the file called "COPYING". 17 * 18 * Intel MIC User Space Tools. 19 */ 20 #ifndef _MPSSD_H_ 21 #define _MPSSD_H_ 22 23 #include <stdio.h> 24 #include <stdlib.h> 25 #include <string.h> 26 #include <fcntl.h> 27 #include <unistd.h> 28 #include <dirent.h> 29 #include <libgen.h> 30 #include <pthread.h> 31 #include <stdarg.h> 32 #include <time.h> 33 #include <errno.h> 34 #include <sys/dir.h> 35 #include <sys/ioctl.h> 36 #include <sys/poll.h> 37 #include <sys/types.h> 38 #include <sys/socket.h> 39 #include <sys/stat.h> 40 #include <sys/types.h> 41 #include <sys/mman.h> 42 #include <sys/utsname.h> 43 #include <sys/wait.h> 44 #include <netinet/in.h> 45 #include <arpa/inet.h> 46 #include <netdb.h> 47 #include <pthread.h> 48 #include <signal.h> 49 #include <limits.h> 50 #include <syslog.h> 51 #include <getopt.h> 52 #include <net/if.h> 53 #include <linux/if_tun.h> 54 #include <linux/if_tun.h> 55 #include <linux/virtio_ids.h> 56 57 #define MICSYSFSDIR "/sys/class/mic" 58 #define LOGFILE_NAME "/var/log/mpssd" 59 #define PAGE_SIZE 4096 60 61 struct mic_console_info { 62 pthread_t console_thread; 63 int virtio_console_fd; 64 void *console_dp; 65 }; 66 67 struct mic_net_info { 68 pthread_t net_thread; 69 int virtio_net_fd; 70 int tap_fd; 71 void *net_dp; 72 }; 73 74 struct mic_virtblk_info { 75 pthread_t block_thread; 76 int virtio_block_fd; 77 void *block_dp; 78 volatile sig_atomic_t signaled; 79 char *backend_file; 80 int backend; 81 void *backend_addr; 82 long backend_size; 83 }; 84 85 struct mic_info { 86 int id; 87 char *name; 88 pthread_t config_thread; 89 pthread_t init_thread; 90 pid_t pid; 91 struct mic_console_info mic_console; 92 struct mic_net_info mic_net; 93 struct mic_virtblk_info mic_virtblk; 94 int restart; 95 int boot_on_resume; 96 struct mic_info *next; 97 }; 98 99 __attribute__((format(printf, 1, 2))) 100 void mpsslog(char *format, ...); 101 char *readsysfs(char *dir, char *entry); 102 int setsysfs(char *dir, char *entry, char *value); 103 #endif 104