6buf =kmalloc(DMA_BUFFER_SIZE, GFP_KERNEL);//申请一块地址,用来DMA传输的数据就放在这里 7sg_init_one(&dma_dev->dmatx.sg, buf, DMA_BUFFER_SIZE);//初始化,其主要为了发送时虚拟地址和物理地址的映射。 2、启动DMA 1structdma_async_tx_descriptor *txdesc =NULL;2structdma_chan *txchan,;3stru...
剩下的事情就是返回处理结果。 对于又有命令又有数据的单次命令,譬如mmc_send_cxd_data(). mrq.data也需要赋值,我们知道读写命令里面,需要初始化data->sg变量。这里也不例外,data->sg的初始化由sg_init_one(&sg, data_buf, len);完成,看函数名就知道,这是一个初始化单一数据处理的dma。只需要传输一次,...
static int tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, int push_one, gfp_t gfp) { struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; // 依次处理待发送的 skb while ((skb = tcp_send_head(sk))) { unsigned int limit; tso_segs = tcp_init_tso_se...
(sk->sk_route_caps & NETIF_F_SG); //msg里保存着用户传入一个或者多个缓冲区,而msg_data_left(msg)返回的就是缓冲区数据量的大小 while (msg_data_left(msg)) { int copy = 0; int max = size_goal; //获取发送队列中最后一个数据块,因为该数据块当前已保存数据可能还没有超过 //size_goal,...
关机和重启是需要init进程来处理的,无论我们是使用命令还是使用系统的关机按钮还是直接按电源键,事件最终都会被传递给init进程。Init接收到关机或重启命令后,会进行一些保存处理,然后停止所有的服务进程、杀死所有的普通进程,最后调用系统调用reboot进行关机或者重启。
sg_init_one(&dma_dev->dmatx.sg, buf, DMA_BUFFER_SIZE); //初始化,其主要为了发送时虚拟地址和物理地址的映射。 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 2、启动DMA AI检测代码解析 struct dma_async_tx_descriptor *txdesc = NULL; ...
Route will not be used, if at least one option is set. */connected=1;} UDP 代码中出现了TCP_ESTABLISHED!UDP socket 的状态使用了TCP状态来描述。上面的代码显示了内核如何解析该变量以便设置daddr和dport。 如果没有struct msghdr变量,内核函数到达udp_sendmsg函数时,会从 socket 本身检索目的地址和端口,...
/** Encrypt the data in-place.** For simplicity, in this example we wait for the request to complete* before proceeding, even if the underlying implementation is asynchronous.** To decrypt instead of encrypt, just change crypto_skcipher_encrypt to* crypto_skcipher_decrypt.*/sg_init_one(&sg...
postcore_initcall(spi_init); 在postcore_initcall()导出的spi核心的初始化过程中,主要做了以下几件事情: 1、分配一个用于SPI的buffer。 2、注册spi总线。 3、注册spi_master主机类。 以上操作是内核中面向对象的基础构件过程,spi框架也不例外,也必须这样实现,以获得内核设备驱动模型的管理。
SPI驱动框架的初始化主要在spi_init()函数中完成。该函数首先调用spi_bus_type_init()函数,注册SPI设备总线,然后向/sys/class下的spi_master目录中创建spi设备目录,最后调用probe_master()函数,搜索当前系统中的SPI设备并添加到bus层中。该函数的代码如下: ...