get_robust_list() - Unix,Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

get_robust_list() - Unix,Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

get_robust_list, set_robust_list - 获取/设置健壮futex列表

概要

#include <linux/futex.h> 
#include <syscall.h> 

long get_robust_list(int pid, struct robust_list_head **head_ptr,                          size_t * long set_robust_list(struct robust_list_head *head, size_t len);

描述

健壮futex实现需要维护每个线程的健壮futex列表,这些列表在线程退出时解锁。这些列表在用户空间管理,内核只被通知列表头的地址。

get_robust_list 返回由pid参数定义的TID线程的健壮futex列表的头。如果pid为0,则返回的头属于当前线程。head_ptr是指向健壮futex列表头的指针。get_robust_list函数在此处存储列表头的地址。len_ptr是指向长度变量的指针。get_robust_list在此处存储sizeof(**head_ptr)

set_robust_list 将当前线程拥有的健壮futex列表的头设置为headlen*head的大小。

返回值

当操作成功时,set_robust_listget_robust_list函数返回零,否则返回错误代码。

错误

如果len值与内核期望的struct robust_list_head结构的大小不匹配,则set_robust_list函数将返回EINVAL错误。

如果当前进程没有权限查看TID为pid的线程的健壮futex列表,则get_robust_list函数将返回EPERM错误;如果TID为pid的线程不存在,则返回ESRCH错误;如果无法将健壮futex列表的头存储在head参数指定的内存空间中,则返回EFAULT错误。

应用程序用法

一个线程只能有一个健壮futex列表;因此,希望使用此功能的应用程序应该使用glibc提供的健壮互斥锁。

此系统调用仅用于调试目的,正常操作不需要。

这两个系统调用都不能作为函数提供给应用程序程序;它们可以使用syscall(3)函数调用。

参见



previous next Printer Friendly

广告


  

广告



广告