gpt4 book ai didi

c - cryptsetup中dm_task_create的实现在哪里?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:05 27 4
gpt4 key购买 nike

cryptsetup 中函数 dm_task_create 的实现在哪里(以及其他 dm_task_ 相关函数)?在 cryptsetup 的源代码中寻找这个函数,我一无所获。我看到它在 lib/libdevmapper.c 中使用,并且它在 libdevmapper.h 中有一个函数原型(prototype)。但是实现在哪里?作为旁注,cryptsetup 可以很好地编译和执行。

只是为了检查,我也 grep 了内核源代码,但它似乎也没有在内核中实现。

来自以下链接 http://www.saout.de/pipermail/dm-crypt/2009-December/000464.html看起来至少在过去它是在 libdevmapper.c 中实现的。

最佳答案

它在 libdm-common.c 中实现,它是 libdm(lib 设备映射器)的一部分。它不是作为 cryptsetup 本身的一部分实现的。

此代码与 LVM2 一起维护,如 this page 中所述:

The userspace code (dmsetup and libdevmapper) is now maintained alongside the LVM2 source available from http://sources.redhat.com/lvm2/. To build / install it without LVM2 use 'make device-mapper' / 'make device-mapper_install'.


实现如下:

struct dm_task *dm_task_create(int type)
{
struct dm_task *dmt = dm_zalloc(sizeof(*dmt));

if (!dmt) {
log_error("dm_task_create: malloc(%" PRIsize_t ") failed",
sizeof(*dmt));
return NULL;
}

if (!dm_check_version()) {
dm_free(dmt);
return_NULL;
}

dmt->type = type;
dmt->minor = -1;
dmt->major = -1;
dmt->allow_default_major_fallback = 1;
dmt->uid = DM_DEVICE_UID;
dmt->gid = DM_DEVICE_GID;
dmt->mode = DM_DEVICE_MODE;
dmt->no_open_count = 0;
dmt->read_ahead = DM_READ_AHEAD_AUTO;
dmt->read_ahead_flags = 0;
dmt->event_nr = 0;
dmt->cookie_set = 0;
dmt->query_inactive_table = 0;
dmt->new_uuid = 0;
dmt->secure_data = 0;

return dmt;
}

关于c - cryptsetup中dm_task_create的实现在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com