pipe可以通过wqueue来set-szie吗?


源码定位

https://elixir.bootlin.com/linux/v5.10/source/fs/pipe.c#L624

首先可以看到pipe的ioctl接口,如果cmd是IOC_WATCH_QUEUE_SET_SIZE的话,会走到watch_queue_set_size这个函数:

可以看到限制页数为512,然后有如下计算:

一个page有0x20个note,所以总的page要有新的加上watch_queue的再-1;

然后为什么还要除以0x20?

然后user_bufs是计算一共有多少个pipe_buffer项?

之后看一下pipe_resize_ring:

就是重新分配pipe_buffer然后把原来的数据拷贝进去:

之后分配大量的page结构体:

wqueue的note的作用


文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录