base/ipc/netrpc/netrpc.c File Reference

Include dependency graph for netrpc.c:

Go to the source code of this file.

Data Structures

struct  portslot_t
struct  recovery_msg
struct  req_rel_msg
struct  par_t
struct  reply_t

Defines

#define COMPILE_ANYHOW
#define SOFT_RTNET   1
#define HARD_RTNET   0
#define MSG_SOFT   0
#define MSG_HARD   0
#define hard_rt_socket(a, b, c)   portslot[i].socket[0]
#define hard_rt_bind(a, b, c)
#define hard_rt_close(a)
#define hard_rt_socket_callback   soft_rt_socket_callback
#define hard_rt_recvfrom   soft_rt_recvfrom
#define hard_rt_sendto   soft_rt_sendto
#define LOCALHOST   "127.0.0.1"
#define BASEPORT   (NETRPC_BASEPORT)
#define NETRPC_STACK_SIZE   6000
#define MAX_DFUN_EXT   16
#define PRTSRVNAME   0xFFFFFFFF
#define NETRPC_TIMER_FREQ   50
#define recv_mach   (sizeof(long))
#define ADRSZ   sizeof(struct sockaddr)
#define MOD_SIZE(indx)   ((indx) < mbx->size ? (indx) : (indx) - mbx->size)
#define RETURN_ERR(err)
#define SYSCALL_BGN()   do { int retval; mm_segment_t svdfs = get_fs(); set_fs(KERNEL_DS)
#define SYSCALL_END()   set_fs(svdfs); return retval; } while (0)
#define DECLARE_MUTEX_LOCKED(name)   struct semaphore name = __SEMAPHORE_INITIALIZER(name, 0)

Functions

 MODULE_LICENSE ("GPL")
 RTAI_MODULE_PARM (MaxStubs, ulong)
 RTAI_MODULE_PARM (MaxSocks, ulong)
 RTAI_MODULE_PARM (StackSize, int)
 RTAI_MODULE_PARM (ThisNode, charp)
 RTAI_MODULE_PARM (ThisSoftNode, charp)
 RTAI_MODULE_PARM (ThisHardNode, charp)
static struct portslot_tget_portslot (void)
static int gvb_portslot (struct portslot_t *portslotp)
static void check_portslot (unsigned long node, int port, struct portslot_t **p)
static void timer_fun (unsigned long none)
void set_netrpc_encoding (void *encode_fun, void *decode_fun, void *ext)
static int argconv (void *ain, void *aout, int send_mach, int argsize, unsigned int partypes)
static void net_resume_task (int sock, struct portslot_t *p)
int get_min_tasks_cpuid (void)
int set_rtext (RT_TASK *, int, int, void(*)(void), unsigned int, void *)
int clr_rtext (RT_TASK *)
void rt_schedule_soft (RT_TASK *)
static int soft_rt_fun_call (RT_TASK *task, void *fun, void *arg)
static long long soft_rt_genfun_call (RT_TASK *task, void *fun, void *args, int argsize)
void rt_daemonize (void)
static void thread_fun (RT_TASK *task)
static int soft_kthread_init (RT_TASK *task, long fun, long arg, int priority)
static int soft_kthread_delete (RT_TASK *task)
static int get_stub (unsigned long long owner)
static int gvb_stub (int slot, unsigned long long owner)
static int find_stub (unsigned long long owner)
static void soft_stub_fun (struct portslot_t *portslotp)
static void hard_stub_fun (struct portslot_t *portslotp)
static void port_server_fun (RT_TASK *port_server)
RTAI_SYSCALL_MODE int rt_send_req_rel_port (unsigned long node, int op, unsigned long id, MBX *mbx, int hard)
RTAI_SYSCALL_MODE int rt_set_netrpc_timeout (int port, RTIME timeout)
RTAI_SYSCALL_MODE RT_TASKrt_find_asgn_stub (unsigned long long owner, int asgn)
RTAI_SYSCALL_MODE int rt_rel_stub (unsigned long long owner)
RTAI_SYSCALL_MODE int rt_waiting_return (unsigned long node, int port)
static void mbx_signal (MBX *mbx)
static void mbxput (MBX *mbx, char **msg, int msg_size)
static void mbx_send_if (MBX *mbx, void *msg, int msg_size)
RTAI_SYSCALL_MODE long long _rt_net_rpc (long fun_ext_timed, long type, void *args, int argsize, int space, unsigned long partypes)
int rt_get_net_rpc_ret (MBX *mbx, unsigned long long *retval, void *msg1, int *msglen1, void *msg2, int *msglen2, RTIME timeout, int type)
RTAI_SYSCALL_MODE unsigned
long 
ddn2nl (const char *ddn)
RTAI_SYSCALL_MODE unsigned
long 
rt_set_this_node (const char *ddn, unsigned long node, int hard)
int set_rt_fun_entries (struct rt_native_fun_entry *entry)
void reset_rt_fun_entries (struct rt_native_fun_entry *entry)
static int init_softrtnet (void)
static void cleanup_softrtnet (void)
void do_mod_timer (void)
int soft_rt_socket (int domain, int type, int protocol)
int soft_rt_close (int sock)
int soft_rt_bind (int sock, struct sockaddr *addr, int addrlen)
int soft_rt_socket_callback (int sock, int(*func)(int sock, void *arg), void *arg)
int soft_rt_sendto (int sock, const void *msg, int msglen, unsigned int sflags, struct sockaddr *to, int tolen)
int soft_rt_recvfrom (int sock, void *msg, int msglen, unsigned int flags, struct sockaddr *from, long *fromlen)
static int kpoll (struct pollfd *ufds, unsigned int nfds, int timeout)
static int ksocket (int family, int type, int protocol)
static int kbind (int fd, struct sockaddr *umyaddr, int addrlen)
static int kconnect (int fd, struct sockaddr *serv_addr, int addrlen)
static int klisten (int fd, int backlog)
static int kaccept (int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen)
static int kgetsockname (int fd, struct sockaddr *usockaddr, int *usockaddr_len)
static int kgetpeername (int fd, struct sockaddr *usockaddr, int *usockaddr_len)
static int ksocketpair (int family, int type, int protocol, int *usockvec)
static int ksendto (int fd, void *buff, size_t len, unsigned flags, struct sockaddr *addr, int addr_len)
static int krecvfrom (int fd, void *ubuf, size_t len, unsigned flags, struct sockaddr *addr, int *addr_len)
static int kshutdown (int fd, int how)
static int ksetsockopt (int fd, int level, int optname, void *optval, int optlen)
static int kgetsockopt (int fd, int level, int optname, char *optval, int *optlen)
static int ksendmsg (int fd, struct msghdr *msg, unsigned flags)
static int krecvmsg (int fd, struct msghdr *msg, unsigned flags)
static int ksend (int fd, void *buff, size_t len, unsigned flags)
static int krecv (int fd, void *ubuf, size_t size, unsigned flags)
static DECLARE_MUTEX_LOCKED (mtx)
static void send_thread (void)
static void recv_thread (void)
static void softrtnet_hdl (void)
int __rtai_netrpc_init (void)
void __rtai_netrpc_exit (void)
 module_init (__rtai_netrpc_init)
 module_exit (__rtai_netrpc_exit)
 EXPORT_SYMBOL (set_netrpc_encoding)
 EXPORT_SYMBOL (rt_send_req_rel_port)
 EXPORT_SYMBOL (rt_find_asgn_stub)
 EXPORT_SYMBOL (rt_rel_stub)
 EXPORT_SYMBOL (rt_waiting_return)
 EXPORT_SYMBOL (_rt_net_rpc)
 EXPORT_SYMBOL (rt_get_net_rpc_ret)
 EXPORT_SYMBOL (rt_set_this_node)
 EXPORT_SYMBOL (rt_set_netrpc_timeout)
 EXPORT_SYMBOL (soft_rt_socket)
 EXPORT_SYMBOL (soft_rt_close)
 EXPORT_SYMBOL (soft_rt_bind)
 EXPORT_SYMBOL (soft_rt_socket_callback)
 EXPORT_SYMBOL (soft_rt_sendto)
 EXPORT_SYMBOL (soft_rt_recvfrom)
 EXPORT_SYMBOL (ddn2nl)
 EXPORT_SYMBOL (rt_net_rpc_fun_hook)

Variables

static unsigned long MaxStubs = MAX_STUBS
static int MaxStubsMone
static unsigned long MaxSocks = MAX_SOCKS
static int StackSize = NETRPC_STACK_SIZE
static char * ThisNode = LOCALHOST
static char * ThisSoftNode = 0
static char * ThisHardNode = 0
static struct rt_fun_entry * rt_net_rpc_fun_ext [MAX_DFUN_EXT]
static unsigned long this_node [2]
static spinlock_t portslot_lock = SPIN_LOCK_UNLOCKED
static volatile int portslotsp
static spinlock_t stub_lock = SPIN_LOCK_UNLOCKED
static volatile int stubssp = 1
static struct portslot_tportslot
static struct sockaddr_in SPRT_ADDR
struct {
   int   in
   int   out
   recovery_msg *   msg
recovery
static spinlock_t recovery_lock = SPIN_LOCK_UNLOCKED
static struct timer_list timer
static SEM timer_sem
static int(*) encode (struct portslot_t *portslotp, void *msg, int size, int where)
static int(*) decode (struct portslot_t *portslotp, void *msg, int size, int where)
static int mod_timer_srq
rt_native_fun_entry rt_netrpc_entries []
static RT_TASKport_server
static struct sock_tsocks
static int MaxSockSrq
struct {
   int   srq
   int   in
   int   out
   int *   sockindx
sysrq
static spinlock_t sysrq_lock = SPIN_LOCK_UNLOCKED
int errno
void * sys_call_table []
static unsigned long end_softrtnet
static struct pollfd * pollv
static struct task_struct * recv_handle
void ** rt_net_rpc_fun_hook = (void *)rt_net_rpc_fun_ext


Define Documentation

#define ADRSZ   sizeof(struct sockaddr)

Definition at line 376 of file netrpc.c.

Referenced by __rtai_netrpc_init(), _rt_net_rpc(), hard_stub_fun(), init_softrtnet(), port_server_fun(), rt_send_req_rel_port(), send_thread(), and soft_stub_fun().

#define BASEPORT   (NETRPC_BASEPORT)

Definition at line 78 of file netrpc.c.

Referenced by __rtai_netrpc_init(), gvb_stub(), hard_stub_fun(), init_softrtnet(), port_server_fun(), and soft_stub_fun().

#define COMPILE_ANYHOW

Definition at line 37 of file netrpc.c.

#define DECLARE_MUTEX_LOCKED ( name   )     struct semaphore name = __SEMAPHORE_INITIALIZER(name, 0)

Definition at line 1614 of file netrpc.c.

#define hard_rt_bind ( a,
b,
 ) 

Definition at line 69 of file netrpc.c.

Referenced by __rtai_netrpc_init().

#define hard_rt_close (  ) 

Definition at line 70 of file netrpc.c.

Referenced by __rtai_netrpc_exit().

#define hard_rt_recvfrom   soft_rt_recvfrom

Definition at line 72 of file netrpc.c.

Referenced by _rt_net_rpc(), hard_stub_fun(), and net_resume_task().

#define hard_rt_sendto   soft_rt_sendto

Definition at line 73 of file netrpc.c.

Referenced by _rt_net_rpc(), and hard_stub_fun().

#define hard_rt_socket ( a,
b,
 )     portslot[i].socket[0]

Definition at line 68 of file netrpc.c.

Referenced by __rtai_netrpc_init().

#define hard_rt_socket_callback   soft_rt_socket_callback

Definition at line 71 of file netrpc.c.

Referenced by __rtai_netrpc_init().

#define HARD_RTNET   0

Definition at line 48 of file netrpc.c.

#define LOCALHOST   "127.0.0.1"

Definition at line 76 of file netrpc.c.

#define MAX_DFUN_EXT   16

Definition at line 101 of file netrpc.c.

#define MOD_SIZE ( indx   )     ((indx) < mbx->size ? (indx) : (indx) - mbx->size)

Definition at line 913 of file netrpc.c.

#define MSG_HARD   0

Definition at line 67 of file netrpc.c.

Referenced by port_server_fun(), rt_send_req_rel_port(), and rt_set_this_node().

#define MSG_SOFT   0

Definition at line 66 of file netrpc.c.

Referenced by port_server_fun(), rt_send_req_rel_port(), and rt_set_this_node().

#define NETRPC_STACK_SIZE   6000

Definition at line 80 of file netrpc.c.

#define NETRPC_TIMER_FREQ   50

Definition at line 186 of file netrpc.c.

Referenced by do_mod_timer(), rt_send_req_rel_port(), soft_kthread_delete(), soft_kthread_init(), and timer_fun().

#define PRTSRVNAME   0xFFFFFFFF

Definition at line 106 of file netrpc.c.

Referenced by __rtai_netrpc_init(), and rt_send_req_rel_port().

#define recv_mach   (sizeof(long))

Referenced by argconv().

#define RETURN_ERR ( err   ) 

Value:

do { \
        union { long long ll; long l; } retval; \
        retval.l = err; \
        return retval.ll; \
    } while (0)

Definition at line 965 of file netrpc.c.

Referenced by _rt_net_rpc().

#define SOFT_RTNET   1

Definition at line 43 of file netrpc.c.

 
#define SYSCALL_BGN (  )     do { int retval; mm_segment_t svdfs = get_fs(); set_fs(KERNEL_DS)

Definition at line 1317 of file netrpc.c.

Referenced by kaccept(), kbind(), kconnect(), kgetpeername(), kgetsockname(), kgetsockopt(), klisten(), kpoll(), krecvfrom(), krecvmsg(), ksendmsg(), ksendto(), ksetsockopt(), kshutdown(), ksocket(), and ksocketpair().

 
#define SYSCALL_END (  )     set_fs(svdfs); return retval; } while (0)

Definition at line 1319 of file netrpc.c.

Referenced by kaccept(), kbind(), kconnect(), kgetpeername(), kgetsockname(), kgetsockopt(), klisten(), kpoll(), krecvfrom(), krecvmsg(), ksendmsg(), ksendto(), ksetsockopt(), kshutdown(), ksocket(), and ksocketpair().


Function Documentation

void __rtai_netrpc_exit ( void   ) 

Definition at line 1817 of file netrpc.c.

References cleanup_softrtnet(), hard_rt_close, MaxSocks, MaxStubs, portslot, reset_rt_fun_entries(), rt_free_srq(), rt_sem_delete(), rt_task_delete, soft_kthread_delete(), soft_rt_close(), task, and timer_sem.

Here is the call graph for this function:

int __rtai_netrpc_init ( void   ) 

Definition at line 1752 of file netrpc.c.

References portslot_t::addr, ADRSZ, BASEPORT, BIN_SEM, ddn2nl(), do_mod_timer(), FIFO_Q, portslot_t::hard, hard_rt_bind, hard_rt_socket, hard_rt_socket_callback, portslot_t::indx, init_softrtnet(), MaxSocks, MaxStubs, MaxStubsMone, portslot_t::name, net_resume_task(), NET_RPC_EXT, OWNER, portslot_t::owner, portslot_t::place, port_server, port_server_fun(), portslot, portslotsp, printk(), PRTSRVNAME, recovery, rt_free_srq(), rt_fun_lxrt, rt_net_rpc_fun_ext, rt_request_srq(), RT_SCHED_LOWEST_PRIORITY, rt_task_resume(), rt_typed_sem_init(), set_rt_fun_entries(), portslot_t::socket, soft_kthread_init(), soft_rt_bind(), soft_rt_socket(), soft_rt_socket_callback(), SPRT_ADDR, portslot_t::task, this_node, ThisHardNode, ThisNode, ThisSoftNode, portslot_t::timeout, timer_fun(), and timer_sem.

Here is the call graph for this function:

RTAI_SYSCALL_MODE long long _rt_net_rpc ( long  fun_ext_timed,
long  type,
void *  args,
int  argsize,
int  space,
unsigned long  partypes 
)

Definition at line 972 of file netrpc.c.

References par_t::a, portslot_t::addr, ADRSZ, par_t::argsize, par_t::base_priority, decode, encode, FUN, par_t::fun_ext_timed, portslot_t::hard, hard_rt_recvfrom, hard_rt_sendto, par_t::mach, MAX_MSG_SIZE, portslot_t::mbx, mbx_send_if(), reply_t::msg, portslot_t::msg, reply_t::myport, portslot_t::name, par_t::owner, portslot_t::owner, par_t::partypes, PORT, port, PORT_SHF, portslot, par_t::priority, RETURN_ERR, reply_t::retval, RPC_RCV, RPC_REQ, par_t::rsize, rt_sem_wait(), rt_sem_wait_if(), rt_sem_wait_timed(), RTE_CHGPORTERR, RTE_CHGPORTOK, RTE_NETIMOUT, RTE_TIMOUT, portslot_t::sem, portslot_t::socket, soft_rt_recvfrom(), soft_rt_sendto(), SYNC_NET_RPC, portslot_t::task, task, portslot_t::timeout, par_t::type, reply_t::w2size, and reply_t::wsize.

Here is the call graph for this function:

static int argconv ( void *  ain,
void *  aout,
int  send_mach,
int  argsize,
unsigned int  partypes 
) [inline, static]

Definition at line 215 of file netrpc.c.

References in, out, recv_mach, reset_kadr(), RTIM, SINT, UINT, VADR, WDW, and WDWMSK.

Referenced by hard_stub_fun(), and soft_stub_fun().

Here is the call graph for this function:

static void check_portslot ( unsigned long  node,
int  port,
struct portslot_t **  p 
) [inline, static]

Definition at line 165 of file netrpc.c.

References portslot_t::addr, MaxStubs, portslot_t::p, portslot, and portslotsp.

Referenced by rt_send_req_rel_port().

static void cleanup_softrtnet ( void   )  [static]

Definition at line 1724 of file netrpc.c.

References current, kshutdown(), MaxSocks, pollv, rt_free_srq(), socks, softrtnet_hdl(), and sysrq.

Referenced by __rtai_netrpc_exit().

Here is the call graph for this function:

int clr_rtext ( RT_TASK  ) 

Definition at line 1158 of file sched.c.

Referenced by __task_delete(), __task_init(), kthread_fun(), rt_task_delete(), and soft_kthread_delete().

RTAI_SYSCALL_MODE unsigned long ddn2nl ( const char *  ddn  ) 

Definition at line 1159 of file netrpc.c.

static DECLARE_MUTEX_LOCKED ( mtx   )  [static]

void do_mod_timer ( void   ) 

Definition at line 1231 of file netrpc.c.

References NETRPC_TIMER_FREQ.

Referenced by __rtai_netrpc_init().

EXPORT_SYMBOL ( rt_net_rpc_fun_hook   ) 

EXPORT_SYMBOL ( ddn2nl   ) 

EXPORT_SYMBOL ( soft_rt_recvfrom   ) 

EXPORT_SYMBOL ( soft_rt_sendto   ) 

EXPORT_SYMBOL ( soft_rt_socket_callback   ) 

EXPORT_SYMBOL ( soft_rt_bind   ) 

EXPORT_SYMBOL ( soft_rt_close   ) 

EXPORT_SYMBOL ( soft_rt_socket   ) 

EXPORT_SYMBOL ( rt_set_netrpc_timeout   ) 

EXPORT_SYMBOL ( rt_set_this_node   ) 

EXPORT_SYMBOL ( rt_get_net_rpc_ret   ) 

EXPORT_SYMBOL ( _rt_net_rpc   ) 

EXPORT_SYMBOL ( rt_waiting_return   ) 

EXPORT_SYMBOL ( rt_rel_stub   ) 

EXPORT_SYMBOL ( rt_find_asgn_stub   ) 

EXPORT_SYMBOL ( rt_send_req_rel_port   ) 

EXPORT_SYMBOL ( set_netrpc_encoding   ) 

static int find_stub ( unsigned long long  owner  )  [inline, static]

Definition at line 442 of file netrpc.c.

References flags, portslot_t::p, portslot, rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, stub_lock, and stubssp.

Referenced by rt_find_asgn_stub(), and rt_rel_stub().

Here is the call graph for this function:

int get_min_tasks_cpuid ( void   ) 

Definition at line 214 of file sched.c.

Referenced by __task_init(), rt_kthread_init(), rt_set_runnable_on_cpuid(), rt_set_runnable_on_cpus(), and thread_fun().

static struct portslot_t* get_portslot ( void   )  [inline, static]

Definition at line 129 of file netrpc.c.

References flags, MaxSocks, portslot_t::p, portslot, portslot_lock, portslotsp, rt_spin_lock_irqsave(), and rt_spin_unlock_irqrestore.

Referenced by rt_send_req_rel_port().

Here is the call graph for this function:

static int get_stub ( unsigned long long  owner  )  [inline, static]

Definition at line 378 of file netrpc.c.

References flags, MaxStubsMone, portslot_t::owner, portslot_t::p, portslot, rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, stub_lock, and stubssp.

Referenced by port_server_fun(), and rt_find_asgn_stub().

Here is the call graph for this function:

static int gvb_portslot ( struct portslot_t portslotp  )  [inline, static]

Definition at line 144 of file netrpc.c.

References flags, MaxStubs, portslot_t::p, portslot_t::place, portslot, portslot_lock, portslotsp, rt_spin_lock_irqsave(), and rt_spin_unlock_irqrestore.

Referenced by rt_send_req_rel_port().

Here is the call graph for this function:

static int gvb_stub ( int  slot,
unsigned long long  owner 
) [inline, static]

Definition at line 401 of file netrpc.c.

References BASEPORT, flags, MaxStubs, portslot_t::owner, portslot_t::p, portslot_t::place, portslot, rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, rt_task_delete, soft_kthread_delete(), stub_lock, stubssp, portslot_t::task, and task.

Referenced by port_server_fun(), and rt_rel_stub().

Here is the call graph for this function:

static void hard_stub_fun ( struct portslot_t portslotp  )  [static]

Definition at line 558 of file netrpc.c.

References portslot_t::addr, ADRSZ, argconv(), par_t::argsize, par_t::base_priority, BASEPORT, current, decode, encode, EXT, flags, FUN, par_t::fun_ext_timed, hard_rt_recvfrom, hard_rt_sendto, par_t::mach, MAX_MSG_SIZE, MaxStubsMone, reply_t::myport, nano2count(), NETRPC_ALIGN_RTIME, par_t::owner, portslot_t::owner, par_t::partypes, portslot, par_t::priority, portslot_t::recovered, recovery, recovery_lock, reply_t::retval, RPC_RTR, RPC_SRV, par_t::rsize, rt_net_rpc_fun_ext, RT_SCHED_LINUX_PRIORITY, rt_sem_signal(), rt_sem_wait(), rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, rt_task_suspend(), RTE_LOWERR, portslot_t::sem, portslot_t::socket, portslot_t::task, task, TIMED, and par_t::type.

Referenced by port_server_fun().

Here is the call graph for this function:

static int init_softrtnet ( void   )  [static]

Definition at line 1671 of file netrpc.c.

References sock_t::addrlen, ADRSZ, BASEPORT, current, kbind(), ksocket(), MaxSocks, pollv, printk(), recv_thread(), rt_free_srq(), rt_request_srq(), send_thread(), sock_t::sock, socks, softrtnet_hdl(), SPRT_ADDR, and sysrq.

Referenced by __rtai_netrpc_init().

Here is the call graph for this function:

static int kaccept ( int  fd,
struct sockaddr *  upeer_sockaddr,
int *  upeer_addrlen 
) [inline, static]

Definition at line 1502 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kbind ( int  fd,
struct sockaddr *  umyaddr,
int  addrlen 
) [inline, static]

Definition at line 1475 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by init_softrtnet().

static int kconnect ( int  fd,
struct sockaddr *  serv_addr,
int  addrlen 
) [inline, static]

Definition at line 1484 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kgetpeername ( int  fd,
struct sockaddr *  usockaddr,
int *  usockaddr_len 
) [inline, static]

Definition at line 1520 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kgetsockname ( int  fd,
struct sockaddr *  usockaddr,
int *  usockaddr_len 
) [inline, static]

Definition at line 1511 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kgetsockopt ( int  fd,
int  level,
int  optname,
char *  optval,
int *  optlen 
) [inline, static]

Definition at line 1574 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int klisten ( int  fd,
int  backlog 
) [inline, static]

Definition at line 1493 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kpoll ( struct pollfd *  ufds,
unsigned int  nfds,
int  timeout 
) [inline, static]

Definition at line 1457 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by recv_thread().

static int krecv ( int  fd,
void *  ubuf,
size_t  size,
unsigned  flags 
) [inline, static]

Definition at line 1607 of file netrpc.c.

References krecvfrom().

Here is the call graph for this function:

static int krecvfrom ( int  fd,
void *  ubuf,
size_t  len,
unsigned  flags,
struct sockaddr *  addr,
int *  addr_len 
) [inline, static]

Definition at line 1547 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by krecv(), and recv_thread().

static int krecvmsg ( int  fd,
struct msghdr *  msg,
unsigned  flags 
) [inline, static]

Definition at line 1592 of file netrpc.c.

References msg, SYSCALL_BGN, and SYSCALL_END.

static int ksend ( int  fd,
void *  buff,
size_t  len,
unsigned  flags 
) [inline, static]

Definition at line 1602 of file netrpc.c.

References ksendto().

Here is the call graph for this function:

static int ksendmsg ( int  fd,
struct msghdr *  msg,
unsigned  flags 
) [inline, static]

Definition at line 1583 of file netrpc.c.

References msg, SYSCALL_BGN, and SYSCALL_END.

static int ksendto ( int  fd,
void *  buff,
size_t  len,
unsigned  flags,
struct sockaddr *  addr,
int  addr_len 
) [inline, static]

Definition at line 1538 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by ksend(), and send_thread().

static int ksetsockopt ( int  fd,
int  level,
int  optname,
void *  optval,
int  optlen 
) [inline, static]

Definition at line 1565 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static int kshutdown ( int  fd,
int  how 
) [inline, static]

Definition at line 1556 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by cleanup_softrtnet().

static int ksocket ( int  family,
int  type,
int  protocol 
) [inline, static]

Definition at line 1466 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

Referenced by init_softrtnet().

static int ksocketpair ( int  family,
int  type,
int  protocol,
int *  usockvec 
) [inline, static]

Definition at line 1529 of file netrpc.c.

References SYSCALL_BGN, and SYSCALL_END.

static void mbx_send_if ( MBX mbx,
void *  msg,
int  msg_size 
) [static]

Definition at line 938 of file netrpc.c.

References portslot_t::mbx, mbx_signal(), mbxput(), RT_MBX_MAGIC, and rt_sem_signal().

Here is the call graph for this function:

static void mbx_signal ( MBX mbx  )  [inline, static]

Definition at line 895 of file netrpc.c.

References portslot_t::mbx, RT_SCHED_DELAYED, RT_SCHED_MBXSUSP, RT_SCHED_READY, and task.

static void mbxput ( MBX mbx,
char **  msg,
int  msg_size 
) [inline, static]

Definition at line 915 of file netrpc.c.

References portslot_t::mbx, MOD_SIZE, rt_spin_lock_irqsave(), and rt_spin_unlock_irqrestore.

Here is the call graph for this function:

module_exit ( __rtai_netrpc_exit   ) 

module_init ( __rtai_netrpc_init   ) 

MODULE_LICENSE ( "GPL"   ) 

static void net_resume_task ( int  sock,
struct portslot_t p 
) [static]

Definition at line 273 of file netrpc.c.

References portslot_t::addr, flags, portslot_t::hard, hard_rt_recvfrom, portslot_t::indx, MAX_MSG_SIZE, MaxStubs, MaxStubsMone, par_t::owner, portslot, par_t::priority, recovery, recovery_lock, rt_sem_signal(), rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, portslot_t::sem, portslot_t::socket, soft_rt_recvfrom(), and portslot_t::task.

Referenced by __rtai_netrpc_init().

Here is the call graph for this function:

static void port_server_fun ( RT_TASK port_server  )  [static]

Definition at line 661 of file netrpc.c.

References portslot_t::addr, ADRSZ, BASEPORT, current, decode, encode, get_stub(), gvb_stub(), portslot_t::hard, recovery_msg::hard, hard_stub_fun(), MAX_MSG_SIZE, MaxStubsMone, msg, MSG_HARD, MSG_SOFT, portslot_t::name, portslot_t::owner, recovery_msg::owner, port_server, portslot, recovery_msg::priority, PRT_RTR, PRT_SRV, portslot_t::recovered, recovery, RT_SCHED_READY, rt_sem_wait(), rt_task_init(), rt_task_masked_unblock(), rt_task_resume(), RTE_LOWERR, portslot_t::sem, soft_kthread_init(), soft_rt_fun_call(), soft_rt_recvfrom(), soft_rt_sendto(), soft_stub_fun(), StackSize, portslot_t::task, task, this_node, and TSK_FRM_WNR.

Referenced by __rtai_netrpc_init().

Here is the call graph for this function:

static void recv_thread ( void   )  [static]

Definition at line 1644 of file netrpc.c.

References sock_t::callback, current, kpoll(), krecvfrom(), MAX_MSG_SIZE, MaxSocks, pollv, rtai_set_linux_task_priority(), and socks.

Referenced by init_softrtnet().

Here is the call graph for this function:

void rt_daemonize ( void   ) 

Referenced by kthread_fun(), kthread_m(), and thread_fun().

RTAI_SYSCALL_MODE RT_TASK* rt_find_asgn_stub ( unsigned long long  owner,
int  asgn 
)

Definition at line 819 of file netrpc.c.

References find_stub(), get_stub(), portslot, and task.

Here is the call graph for this function:

int rt_get_net_rpc_ret ( MBX mbx,
unsigned long long *  retval,
void *  msg1,
int *  msglen1,
void *  msg2,
int *  msglen2,
RTIME  timeout,
int  type 
)

Definition at line 1131 of file netrpc.c.

References _rt_mbx_receive(), NET_RPC_EXT, reply_t::retval, rt_net_rpc_fun_ext, reply_t::w2size, and reply_t::wsize.

Here is the call graph for this function:

RTAI_SYSCALL_MODE int rt_rel_stub ( unsigned long long  owner  ) 

Definition at line 826 of file netrpc.c.

References find_stub(), and gvb_stub().

Here is the call graph for this function:

void rt_schedule_soft ( RT_TASK  ) 

Definition at line 1955 of file sched.c.

Referenced by lxrt_fun_call(), soft_rt_fun_call(), and soft_rt_genfun_call().

RTAI_SYSCALL_MODE int rt_send_req_rel_port ( unsigned long  node,
int  op,
unsigned long  id,
MBX mbx,
int  hard 
)

Definition at line 738 of file netrpc.c.

References portslot_t::addr, ADRSZ, check_portslot(), decode, encode, get_portslot(), gvb_portslot(), recovery_msg::hard, portslot_t::hard, portslot_t::indx, MaxSocks, portslot_t::mbx, msg, MSG_HARD, MSG_SOFT, portslot_t::name, NETRPC_TIMER_FREQ, portslot_t::owner, OWNER, recovery_msg::owner, PORT_INC, PORT_SHF, portslot, recovery_msg::priority, PRT_RCV, PRT_REQ, PRTSRVNAME, portslot_t::recovered, rt_pend_linux_srq(), rt_sem_wait(), portslot_t::sem, portslot_t::socket, soft_rt_recvfrom(), soft_rt_sendto(), SPRT_ADDR, portslot_t::task, task, this_node, and timer_sem.

Here is the call graph for this function:

RTAI_SYSCALL_MODE int rt_set_netrpc_timeout ( int  port,
RTIME  timeout 
)

Definition at line 813 of file netrpc.c.

References PORT_SHF, portslot, and portslot_t::timeout.

RTAI_SYSCALL_MODE unsigned long rt_set_this_node ( const char *  ddn,
unsigned long  node,
int  hard 
)

Definition at line 1181 of file netrpc.c.

References ddn2nl(), MSG_HARD, MSG_SOFT, and this_node.

Here is the call graph for this function:

RTAI_SYSCALL_MODE int rt_waiting_return ( unsigned long  node,
int  port 
)

Definition at line 839 of file netrpc.c.

References PORT_SHF, portslot, portslot_t::sem, and portslot_t::task.

RTAI_MODULE_PARM ( ThisHardNode  ,
charp   
)

RTAI_MODULE_PARM ( ThisSoftNode  ,
charp   
)

RTAI_MODULE_PARM ( ThisNode  ,
charp   
)

RTAI_MODULE_PARM ( StackSize  ,
int   
)

RTAI_MODULE_PARM ( MaxSocks  ,
ulong   
)

RTAI_MODULE_PARM ( MaxStubs  ,
ulong   
)

static void send_thread ( void   )  [static]

Definition at line 1623 of file netrpc.c.

References ADRSZ, current, ksendto(), rtai_set_linux_task_priority(), socks, and sysrq.

Referenced by init_softrtnet().

Here is the call graph for this function:

void set_netrpc_encoding ( void *  encode_fun,
void *  decode_fun,
void *  ext 
)

Definition at line 202 of file netrpc.c.

References decode, encode, and rt_net_rpc_fun_ext.

int set_rtext ( RT_TASK ,
int  ,
int  ,
void(*)(void)  ,
unsigned  int,
void *   
)

Referenced by __task_init(), lxrt_exit(), start_stop_kthread(), and thread_fun().

static int soft_kthread_delete ( RT_TASK task  )  [static]

Definition at line 364 of file netrpc.c.

References clr_rtext(), current, NETRPC_TIMER_FREQ, RT_SCHED_READY, rt_task_masked_unblock(), and task.

Referenced by __rtai_netrpc_exit(), and gvb_stub().

Here is the call graph for this function:

static int soft_kthread_init ( RT_TASK task,
long  fun,
long  arg,
int  priority 
) [static]

Definition at line 348 of file netrpc.c.

References current, NETRPC_TIMER_FREQ, RT_SCHED_READY, RT_SCHED_SUSPENDED, task, and thread_fun().

Referenced by __rtai_netrpc_init(), and port_server_fun().

Here is the call graph for this function:

int soft_rt_bind ( int  sock,
struct sockaddr *  addr,
int  addrlen 
)

Definition at line 1257 of file netrpc.c.

Referenced by __rtai_netrpc_init().

int soft_rt_close ( int  sock  ) 

Definition at line 1249 of file netrpc.c.

References MaxSocks, sock_t::opnd, and socks.

Referenced by __rtai_netrpc_exit().

static int soft_rt_fun_call ( RT_TASK task,
void *  fun,
void *  arg 
) [inline, static]

Definition at line 317 of file netrpc.c.

References rt_schedule_soft(), and task.

Referenced by port_server_fun(), soft_stub_fun(), and thread_fun().

Here is the call graph for this function:

static long long soft_rt_genfun_call ( RT_TASK task,
void *  fun,
void *  args,
int  argsize 
) [inline, static]

Definition at line 327 of file netrpc.c.

References rt_schedule_soft(), and task.

Referenced by soft_stub_fun().

Here is the call graph for this function:

int soft_rt_recvfrom ( int  sock,
void *  msg,
int  msglen,
unsigned int  flags,
struct sockaddr *  from,
long *  fromlen 
)

Definition at line 1295 of file netrpc.c.

References sock_t::addrlen, MaxSocks, sock_t::recvd, and socks.

Referenced by _rt_net_rpc(), net_resume_task(), port_server_fun(), rt_send_req_rel_port(), and soft_stub_fun().

int soft_rt_sendto ( int  sock,
const void *  msg,
int  msglen,
unsigned int  sflags,
struct sockaddr *  to,
int  tolen 
)

Definition at line 1276 of file netrpc.c.

References MAX_MSG_SIZE, MaxSocks, rt_pend_linux_srq(), rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, socks, and sysrq.

Referenced by _rt_net_rpc(), port_server_fun(), rt_send_req_rel_port(), and soft_stub_fun().

Here is the call graph for this function:

int soft_rt_socket ( int  domain,
int  type,
int  protocol 
)

Definition at line 1238 of file netrpc.c.

References cmpxchg, MaxSocks, sock_t::opnd, and socks.

Referenced by __rtai_netrpc_init().

int soft_rt_socket_callback ( int  sock,
int(*)(int sock, void *arg)  func,
void *  arg 
)

Definition at line 1262 of file netrpc.c.

References sock_t::arg, sock_t::callback, and socks.

Referenced by __rtai_netrpc_init().

static void soft_stub_fun ( struct portslot_t portslotp  )  [static]

Definition at line 456 of file netrpc.c.

References portslot_t::addr, ADRSZ, argconv(), par_t::argsize, par_t::base_priority, BASEPORT, current, decode, encode, EXT, flags, FUN, par_t::fun_ext_timed, par_t::mach, MAX_MSG_SIZE, MaxStubsMone, reply_t::myport, nano2count(), NETRPC_ALIGN_RTIME, par_t::owner, portslot_t::owner, par_t::partypes, portslot, par_t::priority, portslot_t::recovered, recovery, recovery_lock, reply_t::retval, RPC_RTR, RPC_SRV, par_t::rsize, rt_net_rpc_fun_ext, RT_SCHED_LINUX_PRIORITY, rt_sem_signal(), rt_sem_wait(), rt_spin_lock_irqsave(), rt_spin_unlock_irqrestore, rtai_set_linux_task_priority(), RTE_LOWERR, portslot_t::sem, portslot_t::socket, soft_rt_fun_call(), soft_rt_genfun_call(), soft_rt_recvfrom(), soft_rt_sendto(), portslot_t::task, task, TIMED, and par_t::type.

Referenced by port_server_fun().

Here is the call graph for this function:

static void softrtnet_hdl ( void   )  [static]

Definition at line 1666 of file netrpc.c.

Referenced by cleanup_softrtnet(), and init_softrtnet().

static void thread_fun ( RT_TASK task  )  [static]

Definition at line 336 of file netrpc.c.

References current, get_min_tasks_cpuid(), rt_daemonize(), rt_task_suspend(), rtai_set_linux_task_priority(), set_rtext(), soft_rt_fun_call(), and task.

Referenced by soft_kthread_init().

Here is the call graph for this function:

static void timer_fun ( unsigned long  none  )  [static]

Definition at line 190 of file netrpc.c.

References NETRPC_TIMER_FREQ, rt_sem_signal(), and timer_sem.

Referenced by __rtai_netrpc_init().

Here is the call graph for this function:


Variable Documentation

int(*) decode(struct portslot_t *portslotp, void *msg, int size, int where) [static]

Definition at line 200 of file netrpc.c.

Referenced by _rt_net_rpc(), hard_stub_fun(), port_server_fun(), rt_send_req_rel_port(), set_netrpc_encoding(), and soft_stub_fun().

int(*) encode(struct portslot_t *portslotp, void *msg, int size, int where) [static]

Definition at line 199 of file netrpc.c.

Referenced by _rt_net_rpc(), hard_stub_fun(), port_server_fun(), rt_send_req_rel_port(), set_netrpc_encoding(), and soft_stub_fun().

unsigned long end_softrtnet [static]

Definition at line 1621 of file netrpc.c.

int errno

Definition at line 1315 of file netrpc.c.

Referenced by __wrap_clock_getres(), __wrap_clock_gettime(), __wrap_clock_settime(), __wrap_sem_close(), __wrap_sem_destroy(), __wrap_sem_getvalue(), __wrap_sem_init(), __wrap_sem_open(), __wrap_sem_post(), __wrap_sem_timedwait(), __wrap_sem_trywait(), __wrap_sem_unlink(), __wrap_sem_wait(), __wrap_timer_create(), exec_conf(), mq_close(), mq_getattr(), mq_notify(), mq_open(), mq_receive(), mq_send(), mq_setattr(), mq_timedreceive(), mq_timedsend(), mq_unlink(), rtf_create_named(), rtf_evdrp(), rtf_getfifobyname(), rtf_named_create(), rtf_open_sized(), rtf_overwrite(), rtf_read_all_at_once(), rtf_read_if(), rtf_read_timed(), rtf_reset(), rtf_resize(), rtf_sem_destroy(), rtf_sem_init(), rtf_sem_post(), rtf_sem_timed_wait(), rtf_sem_trywait(), rtf_sem_wait(), rtf_set_async_sig(), rtf_suspend_timed(), rtf_write_if(), and rtf_write_timed().

int in

Definition at line 1273 of file netrpc.c.

int in

Definition at line 118 of file netrpc.c.

unsigned long MaxSocks = MAX_SOCKS [static]

Definition at line 86 of file netrpc.c.

Referenced by __rtai_netrpc_exit(), __rtai_netrpc_init(), cleanup_softrtnet(), get_portslot(), init_softrtnet(), recv_thread(), rt_send_req_rel_port(), soft_rt_close(), soft_rt_recvfrom(), soft_rt_sendto(), and soft_rt_socket().

int MaxSockSrq [static]

Definition at line 1272 of file netrpc.c.

unsigned long MaxStubs = MAX_STUBS [static]

Definition at line 82 of file netrpc.c.

Referenced by __rtai_netrpc_exit(), __rtai_netrpc_init(), check_portslot(), gvb_portslot(), gvb_stub(), and net_resume_task().

int MaxStubsMone [static]

Definition at line 84 of file netrpc.c.

Referenced by __rtai_netrpc_init(), get_stub(), hard_stub_fun(), net_resume_task(), port_server_fun(), and soft_stub_fun().

int mod_timer_srq [static]

Definition at line 736 of file netrpc.c.

struct recovery_msg* msg

Definition at line 118 of file netrpc.c.

Referenced by krecvmsg(), ksendmsg(), port_server_fun(), rt_get_net_rpc_ret(), rt_send_req_rel_port(), rt_timer_tick_ext(), and text_insert_msg().

int out

Definition at line 1273 of file netrpc.c.

int out

Definition at line 118 of file netrpc.c.

struct pollfd* pollv [static]

Definition at line 1641 of file netrpc.c.

Referenced by cleanup_softrtnet(), init_softrtnet(), and recv_thread().

RT_TASK* port_server [static]

Definition at line 1226 of file netrpc.c.

Referenced by __rtai_netrpc_init(), and port_server_fun().

struct portslot_t* portslot [static]

Definition at line 115 of file netrpc.c.

Referenced by __rtai_netrpc_exit(), __rtai_netrpc_init(), _rt_net_rpc(), check_portslot(), find_stub(), get_portslot(), get_stub(), gvb_portslot(), gvb_stub(), hard_stub_fun(), net_resume_task(), port_server_fun(), rt_find_asgn_stub(), rt_send_req_rel_port(), rt_set_netrpc_timeout(), rt_waiting_return(), and soft_stub_fun().

spinlock_t portslot_lock = SPIN_LOCK_UNLOCKED [static]

Definition at line 108 of file netrpc.c.

Referenced by get_portslot(), and gvb_portslot().

volatile int portslotsp [static]

Definition at line 109 of file netrpc.c.

Referenced by __rtai_netrpc_init(), check_portslot(), get_portslot(), and gvb_portslot().

struct { ... } recovery [static]

Referenced by __rtai_netrpc_init(), hard_stub_fun(), net_resume_task(), port_server_fun(), and soft_stub_fun().

spinlock_t recovery_lock = SPIN_LOCK_UNLOCKED [static]

Definition at line 119 of file netrpc.c.

Referenced by hard_stub_fun(), net_resume_task(), and soft_stub_fun().

struct task_struct* recv_handle [static]

Definition at line 1642 of file netrpc.c.

struct rt_fun_entry* rt_net_rpc_fun_ext[MAX_DFUN_EXT] [static]

Definition at line 102 of file netrpc.c.

Referenced by __rtai_netrpc_init(), hard_stub_fun(), rt_get_net_rpc_ret(), set_netrpc_encoding(), and soft_stub_fun().

void** rt_net_rpc_fun_hook = (void *)rt_net_rpc_fun_ext

Definition at line 1750 of file netrpc.c.

struct rt_native_fun_entry rt_netrpc_entries[]

Initial value:

Definition at line 1208 of file netrpc.c.

int * sockindx

Definition at line 1273 of file netrpc.c.

struct sock_t* socks [static]

Definition at line 1236 of file netrpc.c.

Referenced by cleanup_softrtnet(), init_softrtnet(), recv_thread(), send_thread(), soft_rt_close(), soft_rt_recvfrom(), soft_rt_sendto(), soft_rt_socket(), and soft_rt_socket_callback().

struct sockaddr_in SPRT_ADDR [static]

Definition at line 116 of file netrpc.c.

Referenced by __rtai_netrpc_init(), init_softrtnet(), and rt_send_req_rel_port().

int srq

Definition at line 1273 of file netrpc.c.

int StackSize = NETRPC_STACK_SIZE [static]

Definition at line 89 of file netrpc.c.

Referenced by port_server_fun().

spinlock_t stub_lock = SPIN_LOCK_UNLOCKED [static]

Definition at line 111 of file netrpc.c.

Referenced by find_stub(), get_stub(), and gvb_stub().

volatile int stubssp = 1 [static]

Definition at line 112 of file netrpc.c.

Referenced by find_stub(), get_stub(), and gvb_stub().

void* sys_call_table[]

struct { ... } sysrq [static]

Referenced by cleanup_softrtnet(), init_softrtnet(), send_thread(), and soft_rt_sendto().

spinlock_t sysrq_lock = SPIN_LOCK_UNLOCKED [static]

Definition at line 1274 of file netrpc.c.

unsigned long this_node[2] [static]

Definition at line 104 of file netrpc.c.

Referenced by __rtai_netrpc_init(), port_server_fun(), rt_send_req_rel_port(), and rt_set_this_node().

char* ThisHardNode = 0 [static]

Definition at line 98 of file netrpc.c.

Referenced by __rtai_netrpc_init().

char* ThisNode = LOCALHOST [static]

Definition at line 92 of file netrpc.c.

Referenced by __rtai_netrpc_init().

char* ThisSoftNode = 0 [static]

Definition at line 95 of file netrpc.c.

Referenced by __rtai_netrpc_init().

struct timer_list timer [static]

Definition at line 187 of file netrpc.c.

Referenced by rt_get_timer_overrun(), rt_get_timer_times(), rt_insert_timer(), rt_remove_timer(), rt_set_timer_firing_time(), rt_set_timer_period(), rt_set_timer_priority(), and timer_fun().

SEM timer_sem [static]

Definition at line 188 of file netrpc.c.

Referenced by __rtai_netrpc_exit(), __rtai_netrpc_init(), rt_send_req_rel_port(), and timer_fun().


Generated on Tue Feb 2 17:47:39 2010 for RTAI API by  doxygen 1.4.7