Skip to content
Snippets Groups Projects
Commit a151c8da authored by Ezekiel Dohmen's avatar Ezekiel Dohmen
Browse files

Cleanup, better names and adding dolphin_daemon to cmake build

parent 342e6d5a
No related branches found
No related tags found
3 merge requests!439RCG 5.0 release fro deb 10,!415Cdsrfm to use new dolphin interface,!411Userspace dolphin daemon, netlink dolphin setup for real time models
......@@ -4,6 +4,7 @@ add_subdirectory(args)
add_subdirectory(epics)
add_subdirectory(gds)
add_subdirectory(daqd)
add_subdirectory(dolphin_daemon)
#add_subdirectory(dv)
add_subdirectory(nds)
add_subdirectory(simple_pv)
......
project (dolphin_daemon)
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/DolphinKernelProxy.cpp)
target_include_directories(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include/
${CMAKE_CURRENT_SOURCE_DIR}/../include/
)
target_link_libraries(${PROJECT_NAME}
PRIVATE
fmt
pthread
)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
INCS:= -Iinclude/ -I../include/ -I/opt/DIS/include/ -I/opt/DIS/include/dis
SRCS:= src/main.cpp
SRCS+= src/DolphinKernelProxy.cpp
#SRCS+= src/DolphinNetlinkServer.cpp
#SRCS+= src/Dolphin_SISCI_Resource.cpp
default:
$(CXX) -g -std=c++17 $(SRCS) -o main $(INCS) -L/opt/DIS/lib64 -l:libsisci.a -lpthread -lfmt
clean:
rm -f main
......@@ -19,7 +19,7 @@ DOLPHIN_INCS:= -DOS_IS_LINUX=1 -D_DIS_KERNEL_=1 -I$(DISDIR)/src/IRM_GX/drv/src -
INCS:=-I$(mkfile_dir)/../include/ -I$(mkfile_dir)/../../include/ $(DOLPHIN_INCS)
obj-m += rts_netlink_dolphin.o
obj-m += dolphin_proxy_km.o
ccflags-y := -std=gnu99 -Wno-declaration-after-statement $(INCS)
......
......@@ -5,3 +5,4 @@
*.d
*.o.d
temp/
usp_mcast_socket_ex
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
mkfile_dir := $(dir $(mkfile_path))
# Set the path to the Kernel build utils.
KBUILD=/lib/modules/$(shell uname -r)/build/
KERNEL_DIR=/usr/src/kernel-headers-$(shell uname -r)
obj-m += netlink_test.o
obj-m += ex_requestor_km.o
ccflags-y := -std=gnu99 -Wno-declaration-after-statement -I$(mkfile_dir)/../include/ -I$(mkfile_dir)/../../include/
all:
$(CC) -Wall recv.c -o recv
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
$(CC) -Wall -I$(mkfile_dir)/../include/ -I$(mkfile_dir)/../../include/ usp_mcast_socket_ex.c -o usp_mcast_socket_ex
make -C $(KBUILD) M=$(PWD) modules
clean:
rm -f recv
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
rm -f usp_mcast_socket_ex
make -C $(KBUILD) M=$(PWD) clean
/*
* This example application shows how a multicast netlink socket
* can be used from userspace. This is how the dolphin_deamon binds
* and listens for requests from kernel modules. You need to run this
* app with sudo.
*
*
*
*
*/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
......@@ -6,17 +17,14 @@
#include <sys/socket.h>
#include <linux/netlink.h>
#define MYGRP 17
#define MAX_PAYLOAD 1024 /* maximum payload size*/
#include "daemon_messages.h" //DOLPHIN_DAEMON_REQ_GRP_ID, DOLPHIN_DAEMON_MAX_PAYLOAD
void read_event(int sock)
{
struct sockaddr_nl nladdr;
struct msghdr msg;
struct iovec iov;
char buffer[65536];
char buffer[DOLPHIN_DAEMON_MAX_PAYLOAD];
int ret;
iov.iov_base = (void *) buffer;
......@@ -33,19 +41,12 @@ void read_event(int sock)
printf("Received %d bytes from kernel.\n", ret);
//char *payload = NLMSG_DATA((struct nlmsghdr *) &buffer);
//printf("Received from kernel: %s\n", payload);
}
int main(int argc, char **argv)
{
struct sockaddr_nl src_addr;
//struct sockaddr_nl dest_addr;
//struct nlmsghdr *nlh;
//struct msghdr msg;
//struct iovec iov;
int sock_fd;
//int rc;
sock_fd = socket(PF_NETLINK, SOCK_RAW, NETLINK_USERSOCK);
......@@ -62,7 +63,7 @@ int main(int argc, char **argv)
bind(sock_fd, (struct sockaddr*)&src_addr, sizeof(src_addr));
int group = MYGRP;
int group = DOLPHIN_DAEMON_REQ_GRP_ID;
if (setsockopt(sock_fd, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP, &group, sizeof(group)) < 0) {
printf("setsockopt(NETLINK_ADD_MEMBERSHIP): %s\n", strerror(errno));
close(sock_fd);
......
#include "DolphinKernelProxy.hpp"
#include "Dolphin_SISCI_Resource.hpp"
//libspdlog-dev
#include "spdlog/spdlog.h"
......
......@@ -7,7 +7,6 @@
#include "spdlog/cfg/env.h"
#include "LIGO_Thread.hpp"
#include "DolphinNetlinkServer.hpp"
#include "DolphinKernelProxy.hpp"
using namespace std;
......
......@@ -775,7 +775,7 @@ fe_start_controller( void )
#else
/// \> Update duotone diag information
if ( syncSource == SYNC_SRC_TDS ||
syncSource == SYNC_SRC_LTC && usloop == 0 )
(syncSource == SYNC_SRC_LTC && usloop == 0 ) )
{
dt_diag.dac[ ( hkp_cycle + DT_SAMPLE_OFFSET ) % IOP_IO_RATE ] =
dWord[ ADC_DUOTONE_BRD ][ DAC_DUOTONE_CHAN ][ usloop ];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment