---
title: kupl_queue_submit
description: "向queue提交需要执行的item。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_055.html
sourcePath: /source/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_055.html
indexId: 9be96c47ae0924baba29f11d822f6ed50cb42b6f784a20601e7f48f1a7e788e067
---
# kupl_queue_submit

向queue提交需要执行的item。

#### 接口定义

int kupl_queue_submit(kupl_queue_h queue, kupl_queue_item_desc_t *desc);


#### 参数


**表1 参数定义**

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| queue | kupl\_queue\_h | 执行 item 的 queue | 输入 |
| desc | kupl\_queue\_item\_desc\_t | queue\_item 的描述 | 输入 |


**表2 kupl_queue_item_desc_t 的数据结构**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| field\_mask | uint64\_t | 结构体中有效字段的掩码，使用kupl\_queue\_item\_desc\_field中的位标识。此掩码中未指定的字段将被忽略。 具体可设置的掩码： KUPL\_QUEUE\_ITEM\_DESC\_FIELD\_NAME：name生效 KUPL\_QUEUE\_ITEM\_DESC\_FIELD\_EGROUP：egroup生效 KUPL\_QUEUE\_ITEM\_DESC\_FIELD\_ARGS\_SIZE：args\_size生效 |
| func | kupl\_queue\_item\_func\_t | queue\_item 的函数指针 |
| args | void \* | queue\_item 的参数 |
| name | const char \* | queue\_item 的名字 |
| egroup | kupl\_egroup\_h | 指定当前queue\_item的亲和性信息 |
| args\_size | size\_t | 需要拷贝的 args 参数大小 |


kupl_queue_item_func_t的定义

void (*kupl_queue_item_func_t)(void *args);


#### 返回值

成功：返回 KUPL_OK

失败：返回 KUPL_ERROR


#### 示例

```
#include <stdio.h> 
#include <assert.h>
#include "kupl.h" 

static inline void kernel_func(void *args)
{
    printf("kernel exec.\n");
}

int main() 
{ 
    kupl_queue_h queue = kupl_queue_create();
    kupl_queue_item_desc_t desc = {
        .field_mask = KUPL_QUEUE_ITEM_DESC_FIELD_NAME,
        .func = kernel_func,
        .args = NULL,
        .name = "kernel_name"
    };
    int ret = kupl_queue_submit(queue, &desc); 
    assert(ret == KUPL_OK);
    kupl_queue_wait(queue);
    kupl_queue_destroy(queue);
    return 0;         
}
```

运行结果如下。

```
kernel exec.
```

上述示例演示了向 queue 提交 item，并等待直到 queue 上全部 item 执行完成的流程。上述kupl_queue_submit 函数向 queue 上提交需要执行的 item。
