---
# System prepended metadata

title: <center><i class="fa fa-edit"></i> Creating of gNB task (code)</center>

---

:::warning
# <center><i class="fa fa-edit"></i> Creating of gNB task (code)</center>
:::



[TOC]

### Here is a function called create_gNB_tasks with such code
```c=
int create_gNB_tasks(uint32_t gnb_nb) {
  LOG_D(GNB_APP, "%s(gnb_nb:%d)\n", __FUNCTION__, gnb_nb);
  itti_wait_ready(1);

  if (gnb_nb > 0) {

    if(itti_create_task(TASK_SCTP, sctp_eNB_task, NULL) < 0) {
      LOG_E(SCTP, "Create task for SCTP failed\n");
      return -1;
    }

    if (is_x2ap_enabled()) {
      if(itti_create_task(TASK_X2AP, x2ap_task, NULL) < 0) {
        LOG_E(X2AP, "Create task for X2AP failed\n");
      }
    } else {
      LOG_I(X2AP, "X2AP is disabled.\n");
    }
  }
```

### Explanation of some variables
| LOG_E    | Errror message  |
| -------- | -------- |
| LOG_I    |  Information message   | 
|   itti_wait_ready  |  Doing nothing becuse nothing put inside of function (example below)  | 
| itti_create_task    |  Create task (example below)  |
| is_x2ap_enabled   |  Dummy function to avoid linking error at compilation of nr-dlsim  | 
 


#### Code of itti_wait_ready
```c=
void itti_wait_ready(int wait_tasks) {

}
```
#### Code of itti_create_task
```c=
 int itti_create_task(task_id_t task_id,
                       void *(*start_routine)(void *),
                       void *args_p) {
    task_list_t *t=tasks[task_id];
    threadCreate (&t->thread, start_routine, args_p, (char *)itti_get_task_name(task_id),-1,OAI_PRIORITY_RT);
    LOG_I(TMR,"Created Posix thread %s\n",  itti_get_task_name(task_id) );
    return 0;
  }
```
#### Code of is_x2ap_enabled
```c=
int is_x2ap_enabled(void)
{
  return 0;
}
```

