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 61struct mic_console_info { 62 pthread_t console_thread; 63 int virtio_console_fd; 64 void *console_dp; 65}; 66 67struct mic_net_info { 68 pthread_t net_thread; 69 int virtio_net_fd; 70 int tap_fd; 71 void *net_dp; 72}; 73 74struct 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 85struct 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))) 100void mpsslog(char *format, ...); 101char *readsysfs(char *dir, char *entry); 102int setsysfs(char *dir, char *entry, char *value); 103#endif 104