00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <signal.h>
00026 #include <pthread.h>
00027 #include <semaphore.h>
00028 #include <time.h>
00029 #include <assert.h>
00030 #include <unistd.h>
00031 #include <sys/types.h>
00032 #include <sys/ioctl.h>
00033
00034 #include <adjust.h>
00035 #include <mostdef1.h>
00036 #include <mostns1.h>
00037 #include <mostnetsdll.h>
00038 #include <par_cp.h>
00039
00040 #include "global.h"
00041 #include "most-netservice.h"
00042 #include "service.h"
00043
00044
00045
00046 void MnsRequest(word flags)
00047 {
00048 union sigval val;
00049
00050 PRINT_TRACE("flags = %d", flags);
00051
00052 val.sival_int = MNS_INT;
00053
00054
00055
00056
00057
00058
00059
00060 sigqueue(getpid(), MOST_RT_SIGNAL, val);
00061 }
00062
00063
00064 void MnsRequestTimer(void)
00065 {
00066 union sigval val;
00067
00068 PRINT_TRACE();
00069
00070 val.sival_int = 0;
00071
00072
00073 sigqueue(getpid(), MOST_RT_SIGNAL_TIMER, val);
00074 }
00075
00076
00077 byte Most_Por_Int(void)
00078 {
00079 int ret;
00080
00081 PRINT_TRACE();
00082 CHECK_FILEDESCRIPTOR_RET_VAL(-1);
00083
00084 ret = ioctl(g_control_fd, MOST_NETS_READ_INT);
00085 if (ret < 0) {
00086 PERR_DEBUG("Reading interrupt register failed");
00087 return FALSE;
00088 }
00089
00090 PRINT_TRACE("Interrupt status: %s", ret ? "active" : "not active");
00091
00092 return ret;
00093 }
00094
00095
00096 void MostResetInt(byte mask)
00097 {
00098 int ret;
00099
00100 PRINT_TRACE();
00101 CHECK_FILEDESCRIPTOR_RET();
00102
00103 ret = ioctl(g_control_fd, MOST_NETS_IRQ_RESET, &mask);
00104 if (ret != 0) {
00105 PERR_DEBUG("MOST_NETS_IRQ_RESET failed");
00106 }
00107 }
00108
00109