This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Definition in file msg.c.
Include dependency graph for msg.c:

Go to the source code of this file.
| Defines | |
| #define | TASK_INVAL ((RT_TASK *)RTE_OBJINV) | 
| #define | msg_not_sent() | 
| #define | msg_not_received() | 
| #define | CHECK_SENDER_MAGIC(task) do { if (task->magic != RT_TASK_MAGIC) return TASK_INVAL; } while (0) | 
| #define | CHECK_RECEIVER_MAGIC(task) do { if (task && task->magic != RT_TASK_MAGIC) return TASK_INVAL; } while (0) | 
| #define | SET_RPC_MCB() | 
| #define | task_mcb (task->mcb) | 
| #define | SET_SEND_MCB() | 
| #define | DO_RCV_MSG() | 
| Functions | |
| MODULE_LICENSE ("GPL") | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_send (RT_TASK *task, unsigned long msg) | 
| Send a message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_send_if (RT_TASK *task, unsigned long msg) | 
| Send a message, only if the calling task will not be blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_send_until (RT_TASK *task, unsigned long msg, RTIME time) | 
| brief Send a message with an absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_send_timed (RT_TASK *task, unsigned long msg, RTIME delay) | 
| brief Send a message with a relative timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpc (RT_TASK *task, unsigned long to_do, void *result) | 
| Make a remote procedure call | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpc_if (RT_TASK *task, unsigned long to_do, void *result) | 
| Make a remote procedure call, only if the calling task will not be blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpc_until (RT_TASK *task, unsigned long to_do, void *result, RTIME time) | 
| Make a remote procedure call with an absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpc_timed (RT_TASK *task, unsigned long to_do, void *result, RTIME delay) | 
| Make a remote procedure call with a relative timeout. | |
| RTAI_SYSCALL_MODE int | rt_isrpc (RT_TASK *task) | 
| Check if sender waits for reply or not. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_return (RT_TASK *task, unsigned long result) | 
| Return (sends) the result back to the task that made the related remote procedure call. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_evdrp (RT_TASK *task, void *msg) | 
| Eavedrop (spy) the content of a message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receive (RT_TASK *task, void *msg) | 
| Receive a message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receive_if (RT_TASK *task, void *msg) | 
| Receive a message, only if the calling task is not blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receive_until (RT_TASK *task, void *msg, RTIME time) | 
| Receive a message with an absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receive_timed (RT_TASK *task, void *msg, RTIME delay) | 
| Receive a message with a relative timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpcx (RT_TASK *task, void *smsg, void *rmsg, int ssize, int rsize) | 
| Make an extended remote procedure call | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpcx_if (RT_TASK *task, void *smsg, void *rmsg, int ssize, int rsize) | 
| Make an extended remote procedure call, only if the calling task will not be blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpcx_until (RT_TASK *task, void *smsg, void *rmsg, int ssize, int rsize, RTIME time) | 
| Make an extended remote procedure call with absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_rpcx_timed (RT_TASK *task, void *smsg, void *rmsg, int ssize, int rsize, RTIME delay) | 
| Make an extended remote procedure call with a relative timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_sendx (RT_TASK *task, void *msg, int size) | 
| Send an extended message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_sendx_if (RT_TASK *task, void *msg, int size) | 
| Send an extended message, only if the calling task will not be blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_sendx_until (RT_TASK *task, void *msg, int size, RTIME time) | 
| Send an extended message with absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_sendx_timed (RT_TASK *task, void *msg, int size, RTIME delay) | 
| Send an extended message with relative timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_returnx (RT_TASK *task, void *msg, int size) | 
| Return (sends) an extended result back to the task that made the related extended remote procedure call. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_evdrpx (RT_TASK *task, void *msg, int size, long *len) | 
| Eavedrop (spy) the content of an extended message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receivex (RT_TASK *task, void *msg, int size, long *len) | 
| Receive an extended message. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receivex_if (RT_TASK *task, void *msg, int size, long *len) | 
| Receive an extended message, only if the calling task is not blocked. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receivex_until (RT_TASK *task, void *msg, int size, long *len, RTIME time) | 
| Receive an extended message with an absolute timeout. | |
| RTAI_SYSCALL_MODE RT_TASK * | rt_receivex_timed (RT_TASK *task, void *msg, int size, long *len, RTIME delay) | 
| Receive an extended message with a relative timeout. | |
| static void | proxy_task (RT_TASK *me) | 
| RT_TASK * | __rt_proxy_attach (void(*agent)(long), RT_TASK *task, void *msg, int nbytes, int priority) | 
| RTAI_SYSCALL_MODE RT_TASK * | rt_proxy_attach (RT_TASK *task, void *msg, int nbytes, int prio) | 
| RTAI_SYSCALL_MODE int | rt_proxy_detach (RT_TASK *proxy) | 
| RTAI_SYSCALL_MODE RT_TASK * | rt_trigger (RT_TASK *proxy) | 
| RTAI_SYSCALL_MODE int | rt_Send (pid_t pid, void *smsg, void *rmsg, size_t ssize, size_t rsize) | 
| RTAI_SYSCALL_MODE pid_t | rt_Receive (pid_t pid, void *msg, size_t maxsize, size_t *msglen) | 
| RTAI_SYSCALL_MODE pid_t | rt_Creceive (pid_t pid, void *msg, size_t maxsize, size_t *msglen, RTIME delay) | 
| RTAI_SYSCALL_MODE int | rt_Reply (pid_t pid, void *msg, size_t size) | 
| static void | Proxy_Task (RT_TASK *me) | 
| RTAI_SYSCALL_MODE pid_t | rt_Proxy_attach (pid_t pid, void *msg, int nbytes, int prio) | 
| RTAI_SYSCALL_MODE int | rt_Proxy_detach (pid_t pid) | 
| RTAI_SYSCALL_MODE pid_t | rt_Trigger (pid_t pid) | 
| RTAI_SYSCALL_MODE pid_t | rt_Name_attach (const char *argname) | 
| RTAI_SYSCALL_MODE pid_t | rt_Name_locate (const char *arghost, const char *argname) | 
| RTAI_SYSCALL_MODE int | rt_Name_detach (pid_t pid) | 
| int | __rtai_msg_init (void) | 
| void | __rtai_msg_exit (void) | 
| module_init (__rtai_msg_init) | |
| module_exit (__rtai_msg_exit) | |
| EXPORT_SYMBOL (rt_send) | |
| EXPORT_SYMBOL (rt_send_if) | |
| EXPORT_SYMBOL (rt_send_until) | |
| EXPORT_SYMBOL (rt_send_timed) | |
| EXPORT_SYMBOL (rt_rpc) | |
| EXPORT_SYMBOL (rt_rpc_if) | |
| EXPORT_SYMBOL (rt_rpc_until) | |
| EXPORT_SYMBOL (rt_rpc_timed) | |
| EXPORT_SYMBOL (rt_isrpc) | |
| EXPORT_SYMBOL (rt_return) | |
| EXPORT_SYMBOL (rt_evdrp) | |
| EXPORT_SYMBOL (rt_receive) | |
| EXPORT_SYMBOL (rt_receive_if) | |
| EXPORT_SYMBOL (rt_receive_until) | |
| EXPORT_SYMBOL (rt_receive_timed) | |
| EXPORT_SYMBOL (rt_rpcx) | |
| EXPORT_SYMBOL (rt_rpcx_if) | |
| EXPORT_SYMBOL (rt_rpcx_until) | |
| EXPORT_SYMBOL (rt_rpcx_timed) | |
| EXPORT_SYMBOL (rt_sendx) | |
| EXPORT_SYMBOL (rt_sendx_if) | |
| EXPORT_SYMBOL (rt_sendx_until) | |
| EXPORT_SYMBOL (rt_sendx_timed) | |
| EXPORT_SYMBOL (rt_returnx) | |
| EXPORT_SYMBOL (rt_evdrpx) | |
| EXPORT_SYMBOL (rt_receivex) | |
| EXPORT_SYMBOL (rt_receivex_if) | |
| EXPORT_SYMBOL (rt_receivex_until) | |
| EXPORT_SYMBOL (rt_receivex_timed) | |
| EXPORT_SYMBOL (__rt_proxy_attach) | |
| EXPORT_SYMBOL (rt_proxy_attach) | |
| EXPORT_SYMBOL (rt_proxy_detach) | |
| EXPORT_SYMBOL (rt_trigger) | |
| EXPORT_SYMBOL (rt_Send) | |
| EXPORT_SYMBOL (rt_Receive) | |
| EXPORT_SYMBOL (rt_Creceive) | |
| EXPORT_SYMBOL (rt_Reply) | |
| EXPORT_SYMBOL (rt_Proxy_attach) | |
| EXPORT_SYMBOL (rt_Proxy_detach) | |
| EXPORT_SYMBOL (rt_Trigger) | |
| EXPORT_SYMBOL (rt_Name_attach) | |
| EXPORT_SYMBOL (rt_Name_locate) | |
| EXPORT_SYMBOL (rt_Name_detach) | |
| Variables | |
| rt_native_fun_entry | rt_msg_entries [] | 
| #define CHECK_RECEIVER_MAGIC | ( | task | ) | do { if (task && task->magic != RT_TASK_MAGIC) return TASK_INVAL; } while (0) | 
Definition at line 77 of file msg.c.
Referenced by rt_evdrp(), rt_receive(), rt_receive_if(), and rt_receive_until().
| #define CHECK_SENDER_MAGIC | ( | task | ) | do { if (task->magic != RT_TASK_MAGIC) return TASK_INVAL; } while (0) | 
Definition at line 74 of file msg.c.
Referenced by rt_return(), rt_rpc(), rt_rpc_if(), rt_rpc_until(), rt_send(), rt_send_if(), and rt_send_until().
| #define DO_RCV_MSG | ( | ) | 
Value:
do { \ if ((*len = size <= mcb->sbytes ? size : mcb->sbytes)) { \ memcpy(msg, mcb->sbuf, *len); \ } \ } while (0)
Definition at line 1552 of file msg.c.
Referenced by rt_evdrpx(), rt_receivex(), rt_receivex_if(), rt_receivex_timed(), and rt_receivex_until().
| #define msg_not_received | ( | ) | 
Value:
do { \ rt_current->ret_queue.task = NULL; \ task = (void *)(long)(CONFIG_RTAI_USE_NEWERR ? (((void *)rt_current->blocked_on != RTP_UNBLKD) ? RTE_TIMOUT : RTE_UNBLKD) : 0); \ } while (0)
Definition at line 66 of file msg.c.
Referenced by rt_receive(), and rt_receive_until().
| #define msg_not_sent | ( | ) | 
Value:
do { \ void *retp; \ if ((retp = rt_current->blocked_on) != RTP_OBJREM) { \ set_task_prio_from_resq(task); \ dequeue_blocked(rt_current); \ task = (void *)(long)(CONFIG_RTAI_USE_NEWERR ? ((likely(retp > RTP_HIGERR) ? RTE_TIMOUT : RTE_UNBLKD)) : 0); \ } else { \ rt_current->prio_passed_to = NULL; \ task = (void *)(long)(CONFIG_RTAI_USE_NEWERR ? RTE_OBJREM : 0); \ } \ rt_current->msg_queue.task = rt_current; \ } while (0)
Definition at line 52 of file msg.c.
Referenced by rt_rpc(), rt_rpc_if(), rt_rpc_until(), rt_send(), and rt_send_until().
| #define SET_RPC_MCB | ( | ) | 
Value:
do { \ mcb.sbuf = smsg; \ mcb.sbytes = ssize; \ mcb.rbuf = rmsg; \ mcb.rbytes = rsize; \ } while (0)
Definition at line 1096 of file msg.c.
Referenced by rt_rpcx(), rt_rpcx_if(), rt_rpcx_timed(), and rt_rpcx_until().
| #define SET_SEND_MCB | ( | ) | 
Value:
do { \ task_mcb.sbuf = msg; \ task_mcb.sbytes = size; \ task_mcb.rbuf = 0; \ task_mcb.rbytes = 0; \ } while (0)
Definition at line 1308 of file msg.c.
Referenced by rt_sendx(), rt_sendx_if(), rt_sendx_timed(), and rt_sendx_until().
| #define task_mcb (task->mcb) | 
Definition at line 1307 of file msg.c.
Referenced by rt_sendx(), rt_sendx_if(), rt_sendx_timed(), and rt_sendx_until().
| RT_TASK* __rt_proxy_attach | ( | void(*)(long) | agent, | |
| RT_TASK * | task, | |||
| void * | msg, | |||
| int | nbytes, | |||
| int | priority | |||
| ) | 
Definition at line 1837 of file msg.c.
References rt_free(), rt_kthread_init(), rt_malloc(), RT_SCHED_LINUX_PRIORITY, RT_SCHED_LOWEST_PRIORITY, and task.
Referenced by rt_proxy_attach(), and rt_Proxy_attach().
Here is the call graph for this function:

| void __rtai_msg_exit | ( | void | ) | 
Definition at line 2155 of file msg.c.
References reset_rt_fun_entries().
Here is the call graph for this function:

| int __rtai_msg_init | ( | void | ) | 
Definition at line 2150 of file msg.c.
References set_rt_fun_entries().
Here is the call graph for this function:

| EXPORT_SYMBOL | ( | rt_Name_detach | ) | 
| EXPORT_SYMBOL | ( | rt_Name_locate | ) | 
| EXPORT_SYMBOL | ( | rt_Name_attach | ) | 
| EXPORT_SYMBOL | ( | rt_Trigger | ) | 
| EXPORT_SYMBOL | ( | rt_Proxy_detach | ) | 
| EXPORT_SYMBOL | ( | rt_Proxy_attach | ) | 
| EXPORT_SYMBOL | ( | rt_Reply | ) | 
| EXPORT_SYMBOL | ( | rt_Creceive | ) | 
| EXPORT_SYMBOL | ( | rt_Receive | ) | 
| EXPORT_SYMBOL | ( | rt_Send | ) | 
| EXPORT_SYMBOL | ( | rt_trigger | ) | 
| EXPORT_SYMBOL | ( | rt_proxy_detach | ) | 
| EXPORT_SYMBOL | ( | rt_proxy_attach | ) | 
| EXPORT_SYMBOL | ( | __rt_proxy_attach | ) | 
| EXPORT_SYMBOL | ( | rt_receivex_timed | ) | 
| EXPORT_SYMBOL | ( | rt_receivex_until | ) | 
| EXPORT_SYMBOL | ( | rt_receivex_if | ) | 
| EXPORT_SYMBOL | ( | rt_receivex | ) | 
| EXPORT_SYMBOL | ( | rt_evdrpx | ) | 
| EXPORT_SYMBOL | ( | rt_returnx | ) | 
| EXPORT_SYMBOL | ( | rt_sendx_timed | ) | 
| EXPORT_SYMBOL | ( | rt_sendx_until | ) | 
| EXPORT_SYMBOL | ( | rt_sendx_if | ) | 
| EXPORT_SYMBOL | ( | rt_sendx | ) | 
| EXPORT_SYMBOL | ( | rt_rpcx_timed | ) | 
| EXPORT_SYMBOL | ( | rt_rpcx_until | ) | 
| EXPORT_SYMBOL | ( | rt_rpcx_if | ) | 
| EXPORT_SYMBOL | ( | rt_rpcx | ) | 
| EXPORT_SYMBOL | ( | rt_receive_timed | ) | 
| EXPORT_SYMBOL | ( | rt_receive_until | ) | 
| EXPORT_SYMBOL | ( | rt_receive_if | ) | 
| EXPORT_SYMBOL | ( | rt_receive | ) | 
| EXPORT_SYMBOL | ( | rt_evdrp | ) | 
| EXPORT_SYMBOL | ( | rt_return | ) | 
| EXPORT_SYMBOL | ( | rt_isrpc | ) | 
| EXPORT_SYMBOL | ( | rt_rpc_timed | ) | 
| EXPORT_SYMBOL | ( | rt_rpc_until | ) | 
| EXPORT_SYMBOL | ( | rt_rpc_if | ) | 
| EXPORT_SYMBOL | ( | rt_rpc | ) | 
| EXPORT_SYMBOL | ( | rt_send_timed | ) | 
| EXPORT_SYMBOL | ( | rt_send_until | ) | 
| EXPORT_SYMBOL | ( | rt_send_if | ) | 
| EXPORT_SYMBOL | ( | rt_send | ) | 
| module_exit | ( | __rtai_msg_exit | ) | 
| module_init | ( | __rtai_msg_init | ) | 
| MODULE_LICENSE | ( | "GPL" | ) | 
| static void Proxy_Task | ( | RT_TASK * | me | ) |  [static] | 
Definition at line 2004 of file msg.c.
References rt_rpc(), and rt_task_suspend().
Referenced by rt_Proxy_attach().
Here is the call graph for this function:

| static void proxy_task | ( | RT_TASK * | me | ) |  [static] | 
Definition at line 1821 of file msg.c.
References rt_rpc(), and rt_task_suspend().
Referenced by rt_proxy_attach().
Here is the call graph for this function:

| RTAI_SYSCALL_MODE pid_t rt_Creceive | ( | pid_t | pid, | |
| void * | msg, | |||
| size_t | maxsize, | |||
| size_t * | msglen, | |||
| RTIME | delay | |||
| ) | 
Definition at line 1958 of file msg.c.
References rt_receive_if(), rt_receive_timed(), and task.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE pid_t rt_Name_attach | ( | const char * | argname | ) | 
| RTAI_SYSCALL_MODE int rt_Name_detach | ( | pid_t | pid | ) | 
| RTAI_SYSCALL_MODE pid_t rt_Name_locate | ( | const char * | arghost, | |
| const char * | argname | |||
| ) | 
Definition at line 2070 of file msg.c.
References cpuid, pid, rt_get_adr(), rt_smp_linux_task, task, and TSKEXT1.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE pid_t rt_Proxy_attach | ( | pid_t | pid, | |
| void * | msg, | |||
| int | nbytes, | |||
| int | prio | |||
| ) | 
Definition at line 2024 of file msg.c.
References __rt_proxy_attach(), Proxy_Task(), and task.
Here is the call graph for this function:

Definition at line 1877 of file msg.c.
References __rt_proxy_attach(), proxy_task(), and task.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE int rt_Proxy_detach | ( | pid_t | pid | ) | 
Definition at line 2030 of file msg.c.
References rt_free(), and rt_task_delete.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE int rt_proxy_detach | ( | RT_TASK * | proxy | ) | 
Definition at line 1884 of file msg.c.
References rt_free(), and rt_task_delete.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE pid_t rt_Receive | ( | pid_t | pid, | |
| void * | msg, | |||
| size_t | maxsize, | |||
| size_t * | msglen | |||
| ) | 
Definition at line 1941 of file msg.c.
References rt_receive(), and task.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE int rt_Reply | ( | pid_t | pid, | |
| void * | msg, | |||
| size_t | size | |||
| ) | 
Definition at line 1981 of file msg.c.
References rt_return(), and task.
Here is the call graph for this function:

| RTAI_SYSCALL_MODE int rt_Send | ( | pid_t | pid, | |
| void * | smsg, | |||
| void * | rmsg, | |||
| size_t | ssize, | |||
| size_t | rsize | |||
| ) | 
| RTAI_SYSCALL_MODE pid_t rt_Trigger | ( | pid_t | pid | ) | 
Definition at line 2040 of file msg.c.
References atomic_inc, and rt_task_resume().
Here is the call graph for this function:

Definition at line 1894 of file msg.c.
References atomic_inc, and rt_task_resume().
Here is the call graph for this function:

| struct rt_native_fun_entry rt_msg_entries[] | 
 1.4.7
 1.4.7