草庐IT

mpz_struct

全部标签

linux - struct task_struct中的字段 'on_cpu'和struct thread_info中的字段 'cpu'是什么意思?

我想知道Linux系统中当前进程运行在哪个cpu上,我有两个选择—获取structtask_struct或中的字段on_cpu获取结构thread_info中的字段cpu。我写了一个内核模块程序来探测这两个字段,并得到结果如下:[3991.419185]thefield'on_cpu'intask_structis:1[3991.419187]thefield'cpu'inthread_infois:0[3991.419199]thefield'on_cpu'intask_structis:1[3991.419200]thefield'cpu'inthread_infois:0[399

linux - struct proc_dir_entry 的 owner 字段哪里去了? [ Linux 内核 ]

根据thelistofAPIchangesinthe2.6kernelseries在LWN上,structproc_dir_entry的.owner字段已在2.6.30内核中删除。所以这里有几个问题:设置此字段真的有必要或有用吗?该字段是否刚被移动到其他地方,或被永久删除?我问第一个问题是因为theLKMPGset'sthisfieldinmanyofit'sexamples,procfs_example.c来自内核文档的从来没有。 最佳答案 您可能想查看在bugzilla.kernel.org中提交的错误。它具有问题的完整描述和可

linux - task_struct 存储在哪里?

Task_struct用于内核保存进程的必要信息。由于该结构,内核可以暂停一个进程,并在一段时间后继续执行它。但我的问题是:这个task_struct存储在内存中的什么地方(我读过内核堆栈,是在虚拟地址空间的内核空间中的那个吗?)?挂起进程后,内核在哪里保存指向该结构和该结构的指针?如果您在描述的地方提供一些资源引用,我将不胜感激。附言。我忘了说这个问题是关于Linux内核的。 最佳答案 Linux内核通过kmem_cache设施分配一个task_struct。例如在fork.c中有一段代码负责分配任务结构:#definealloc

c - 为什么在获取进程的子进程时使用兄弟列表来获取 task_struct

内核task_struct如下所示。我对两个成员更感兴趣,即children和sibling,所以我从这个内核结构中删除了其他元素。structtask_struct{//somedataelements.structlist_headchildren;/*listofmychildren*/structlist_headsibling;/*linkageinmyparent'schildrenlist*///somedatamembers};“children”是进程子进程的task_struct的双向循环链表。如果我想从当前进程访问子进程,我必须使用宏“list_for_each”

linux - struct stat 时间是 GMT 吗?

structstat中的字段之一是st_mtime。我假设这是自1970年1月1日以来的秒数。是格林威治标准时间还是本地时间? 最佳答案 time_t类型表示自1970年1月1日00:00UTC以来经过的秒数(该时刻称为“纪元”,在世界各地同时发生).您可以将“UTC”视为与“GMT”相同的含义(有关非常小的差异的详细信息,请参阅LeapSecond)。请注意,您应该始终使用localtime()和mktime(),而不是从time_t类型中添加或减去值与本地时区表示形式相互转换的函数。

c - 如何在 C 中将 struct tm 转换为 long int?

这是一个简单的问题...有没有办法将structtmct;转换为长整数?这是我的代码的样子:structtmct;scanf("%d",&ct.tm_sec);scanf("%d",&ct.tm_min);scanf("%d",&ct.tm_hour);scanf("%d",&ct.tm_mday);scanf("%d",&ct.tm_mon);scanf("%d",&ct.tm_year); 最佳答案 您可以使用mktime()函数将structtm转换为time_t,这是一个整数值。

c - C : A struct and a function的命名约定

在探索sigaction.hheader中处理系统信号请求的工具时,我注意到返回int的结构和函数被命名为sigaction。尽管它在语义上看起来是正确的,但由于编译器应该能够在两个定义之间进行推断,为什么sigaction的重复定义是有效的C语法? 最佳答案 在C语言中,struct标签位于与其他名称不同的命名空间中。该结构称为structsigaction,而函数只是sigaction。 关于c-C:Astructandafunction的命名约定,我们在StackOverflow上

c - 一个进程的文件,mm_struct和files_struct中文件的关系?

在task_struct中,我们可以发现有:structmm_struct*mm,*active_mm;structfiles_struct*files;files_struct包含指向多达256个文件数据结构的指针,每个结构都描述了该进程正在使用的一个文件。structfile*fd_array[NR_OPEN_DEFAULT];mm_struct包含一个vm_area_struct。structvm_area_struct*mmap;/*listofVMAs*/而在vm_area_struct中,我们可以发现:structfile*vm_file;/*Filewemapto(can

linux - 理解从进程内核栈中获取task_struct指针

现在我正在阅读RobertLove所著的《Linux内核开发3d版》一书。他在那里写了thread_info结构,它包含指向task_struct结构的指针,据我所知,它位于进程内核堆栈的底部或顶部(取决于体系结构)。直到最近我才熟悉Linux内核API,也不知道current()方法的存在。书中有一段关于current()方法实际工作原理的摘录:Onx86,currentiscalculatedbymaskingoutthe13least-significantbitsofthestackpointertoobtainthethread_infostructure.Thisisdon

c++ - vector<struct> 上的段错误

我创建了一个结构来保存一些数据,然后声明了一个vector来保存该结构。但是当我执行push_back时,我会遇到该死的段错误,我不知道为什么!我的结构定义为:typedefstructGroup{intcodigo;stringname;intdeleted;intprinters;intsubpage;/*includedthiswhenitstartedsegfaulting*/Group(){name.reserve(MAX_PRODUCT_LONG_NAME);}~Group(){name.clear();}Group(constGroup&b){codigo=b.codig