---
name: "rt_ipc"
section: "2"
platform: "linux"
package: "rtlinux"
version: "2.0rel-1"
release: "Debian 2.2 (Potato)"
platforms: ["linux"]
url: "https://new.carta.tech/rt_ipc"
---

# rt\_ipc(2)

IPC Primitives for Real-Time Linux

## NAME

rt\_ipc - IPC Primitives for Real-Time Linux

## SYNOPSIS

```
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/errno.h>
#include rt_ipc.h
```

**int rt\_task\_ipc\_init(RT\_TASK\_IPC \*** *task***, void (\****fn***)(int** *data***), int** *data***, int** *stack\_size***, int** *priority***);**

**int rt\_task\_ipc\_delete(RT\_TASK\_IPC \*** *task***);**

**int rt\_sem\_init(rt\_sem\_t \****sem***, RT\_SEMTYPE** *type***, int** *init\_val***);**

**int rt\_sem\_destroy(rt\_sem\_t \****sem***);**

**int rt\_sem\_post(rt\_sem\_t \****sem***);**

**int rt\_sem\_wait(rt\_sem\_t \****sem***);**

**int rt\_sem\_trywait(rt\_sem\_t \****sem***);**

**int rt\_mq\_init(rt\_mq\_t \****mq***, int** *max\_msgs***, int** *msg\_size***);**

**int rt\_mq\_destroy(rt\_mq\_t \****mq***);**

**int rt\_mq\_send(rt\_mq\_t \****mq***, char \****msg***, RT\_MQ\_PRIO** *prio***, RTIME** *wait***);**

**int rt\_mq\_receive(rt\_mq\_t \****mq***, char \****msg***, RTIME** *wait***);**

**int rtf\_ipc\_create(unsigned int** *fifo***, int** *size***, int** *rtl\_to\_linux***);**

**int rtf\_ipc\_destroy(unsigned int** *fifo***);**

**int rtf\_receive(unsigned int** *fifo***, void \****buf***, int** *count***, RTIME** *timeout***);**

**int rtf\_send(unsigned int** *fifo***, void \****buf***, int** *count***, RTIME** *timeout***);**

## DESCRIPTION

**rt\_ipc** provides facilities for communication and synchronization among Real-Time Linux tasks.  Semaphores (binary and counting) and message queues are provided.  Also provided are fifos for communication between Real-Time Linux tasks and Linux processes.  Timeouts are implemented in all primitives.

## AUTHOR

Jerry Epplin \<JerryEpplin@worldnet.att.net\>

## SEE ALSO

[**rt\_mq\_destroy**(2)](/rt_mq_destroy/2.md), [**rt\_mq\_init**(2)](/rt_mq_init/2.md), [**rt\_mq\_receive**(2)](/rt_mq_receive/2.md), [**rt\_mq\_send**(2)](/rt_mq_send/2.md), [**rt\_sem\_destroy**(2)](/rt_sem_destroy/2.md), [**rt\_sem\_init**(2)](/rt_sem_init/2.md), [**rt\_sem\_post**(2)](/rt_sem_post/2.md), [**rt\_sem\_trywait**(2)](/rt_sem_trywait/2.md), [**rt\_sem\_wait**(2)](/rt_sem_wait/2.md), [**rt\_task\_ipc\_delete**(2)](/rt_task_ipc_delete/2.md), [**rt\_task\_ipc\_init**(2)](/rt_task_ipc_init/2.md), [**rtf\_ipc\_create**(2)](/rtf_ipc_create/2.md), [**rtf\_ipc\_destroy**(2)](/rtf_ipc_destroy/2.md), [**rtf\_receive**(2)](/rtf_receive/2.md), [**rtf\_send**(2)](/rtf_send/2.md)
