91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-08
  • 語言: 其他
  • 標簽: vuart??模擬串口??tty??

資源簡介

基于linux-4.9內核的tty模擬驅動。無需串口芯片。ubuntu/嵌入式linux系統上均可運行。

資源截圖

代碼片段和文件信息

#include?ject.h>
#include?
#include?
#include?
#include?
#include?


#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#include?“simu_uart.h“

/*

通過對sys屬性文件的讀寫,來模擬對tty硬件FIFO的讀寫
1.rx屬性文件
對應模擬TTY硬件的TX-FIFO
2.tx屬性文件
對應模擬TTY硬件的RX-FIFO

*/







/*計算有效數據size*/
int?calc_valid_fifo(struct?v_fifo*?fifo)
{
if((fifo->head)==(fifo->tail))
return?0;
if((fifo->head)?>=?(fifo->tail))
return?((fifo->head)?-?(fifo->tail));
else{
return?((fifo->head)?+?(V_FIFO_SIZE-fifo->tail));
}
}
/*計算空閑空間*/
int??calc_free_fifo(struct?v_fifo*?fifo)
{
int?valid?=?calc_valid_fifo(fifo);
return?(V_FIFO_SIZE-valid-1);
}

int?writechar_2_fifo(struct?v_fifo*?fifochar?cc)
{
fifo->dat[fifo->head]?=?cc;
fifo->head?=?(fifo->head+1)&(V_FIFO_SIZE-1);

return?0;
}

/*讀fifo*/
int?readchar_from_fifo(struct?v_fifo*?fifochar?*cc)
{
cc[0]?=?fifo->dat[fifo->tail];
fifo->tail?=?(fifo->tail+1)&(V_FIFO_SIZE-1);
return?0;
}



static?int?init_fifo(struct?v_fifo*?fifo)
{
if(!fifo)
return?-1;
fifo->head?=?fifo->tail?=?0;
return?0;
}


/*定義TX-FIFO??RX-FIFO*/
static?struct?vuart_dev?*my_vuart_dev;

struct?vuart_dev?*?get_udev(void)
{
return?my_vuart_dev;
}



/*sysfs屬性文件操作方法*/
static?ssize_t?curr_fifotail_show(struct?device?*?dev?struct?device_attribute?*attrchar?*buf)
{
int?sizei;
struct?vuart_dev?*?vdev?=?(struct?vuart_dev?*)dev_get_drvdata(dev);
/*同步*/
if(down_interruptible(&vdev->sem_rx))
return?-ERESTARTSYS;
/*計算fifo中有效數據size*/
size?=?calc_valid_fifo(&vdev->v_RX_FIFO);
/*copy數據*/
for(i=0;i buf[i]?=?vdev->v_RX_FIFO.dat[vdev->v_RX_FIFO.tail];
vdev->v_RX_FIFO.tail?=?(vdev->v_RX_FIFO.tail+1)&(V_FIFO_SIZE-1);
}

up(&vdev->sem_rx);
return?size;
}
static?ssize_t?curr_fifohead_store(struct?device?*dev?struct?device_attribute?*?attr?const?char?*buf?size_t?count)
{
int?sizei;
struct?vuart_dev?*?vdev?=?(struct?vuart_dev?*)dev_get_drvdata(dev);

/*同步*/
if(down_interruptible(&vdev->sem_tx))
return?-ERESTARTSYS;
/*計算fifo中空閑size*/
size?=?calc_free_fifo(&vdev->v_TX_FIFO);
if(size?<=?0){
printk(“Failed?to?store?data:?TX?FIFO?is?FULL

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????5424??2017-11-01?15:22??vuart_code\simu_uart.c
?????文件?????????825??2017-11-01?09:46??vuart_code\simu_uart.h
?????文件????????7898??2017-11-01?15:29??vuart_code\simu_uart_2.c
?????目錄???????????0??2018-04-20?16:52??vuart_code\

評論

共有 條評論