27436|7

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

音频驱动问题,大家指教。在线等!!!!!!!!! [复制链接]

lock_kernel();
        mixer.busy = 0;
        module_put(dmasound.mach.owner);
        unlock_kernel();

--------------lock_kernel();  unlock_kernel();--------------这个是干什么的,有什么用?

==============================================================================================

问:file inode module fileoperations都是什么关系?怎么关联起来的?


typedef struct {
        int offset;                /* current offset */
        char *data;                /* points to actual buffer */
        dma_addr_t dma_addr;        /* physical buffer address */
        int dma_ref;                /* DMA refcount */
        int master;                /* owner for buffer allocation, contain size when true */
} audio_buf_t;


--------------这种没在struct后面定义结构体名而只在后面定义了一个名字,是怎么回事?前面定义代表什么?后面代表什么?

==============================================================================================


上层的open read是怎么关联到驱动的open read的?如何用从源码中找到ioctl的函数说明?


==============================================================================================


channel和物理上的line有什么区别和联系?各种bass mono等是什么关系和line,bass mono是只能用一个还是要组合的?


channel的定义如下:
mixerRegs[] = {
    { AC97_MASTER_VOL_STEREO, SOUND_MIXER_VOLUME,   0x3f, ST, SOUND_MASK_VOLUME,   5, 0x0000, INV  },
    { AC97_MASTER_VOL_MONO,   SOUND_MIXER_PHONEOUT, 0x3f, MO, SOUND_MASK_PHONEOUT, 6, 0x0000, INV  },
    { AC97_MASTER_TONE,       SOUND_MIXER_TREBLE,   0x0f, MO, SOUND_MASK_TREBLE,  -1, 0x00ff, INV  },
    { AC97_MASTER_TONE,       SOUND_MIXER_BASS,     0x0f, MO, SOUND_MASK_BASS,    -1, 0xff00, INV  },
    { AC97_PCBEEP_VOL,        SOUND_MIXER_SPEAKER,  0x0f, MO, SOUND_MASK_SPEAKER, -1, 0x001e, INV  },
    { AC97_PHONE_VOL,         SOUND_MIXER_PHONEIN,  0x1f, MO, SOUND_MASK_PHONEIN,  7, 0x0000, INV  },
    { AC97_MIC_VOL,           SOUND_MIXER_MIC,      0x1f, MO, SOUND_MASK_MIC,      0, 0x0000, INV  },
    { AC97_LINEIN_VOL,        SOUND_MIXER_LINE,     0x1f, ST, SOUND_MASK_LINE,     4, 0x0000, INV  },
    { AC97_CD_VOL,            SOUND_MIXER_CD,       0x1f, ST, SOUND_MASK_CD,       1, 0x0000, INV  },
    { AC97_VIDEO_VOL,         SOUND_MIXER_VIDEO,    0x1f, ST, SOUND_MASK_VIDEO,    2, 0x0000, INV  },
    { AC97_AUX_VOL,           SOUND_MIXER_LINE1,    0x1f, ST, SOUND_MASK_LINE1,           3, 0x0000, INV  },
    { AC97_PCMOUT_VOL,        SOUND_MIXER_PCM,      0x1f, ST, SOUND_MASK_PCM,     -1, 0x0000, INV  },
    { AC97_RECORD_GAIN,       SOUND_MIXER_IGAIN,    0x0f, ST, SOUND_MASK_IGAIN,   -1, 0x0000, NINV },
    { -1,                      -1,                    0xff, 0,  0,                  -1, 0x0000, 0    },
};

==============================================================================================
spin_lock_irqsave(&devc->lock, flags);
        if (devc->opened)
        {
                spin_unlock_irqrestore(&devc->lock, flags);---------如果有设备已经打开了设备,那么自旋锁也是打开设备的那个进程拥有,不可能在上面获得自旋锁时成功,这个是怎么回事?
                return -EBUSY;
        }
        devc->opened = 1;
        spin_unlock_irqrestore(&devc->lock, flags);


==============================================================================================

volatile-------这个东西是c还是c++的,是怎么回事?

==============================================================================================

static struct midi_operations sb_midi_operations =    -----------------------等号是怎么回事?
{
        .owner                = THIS_MODULE,
        .info                = {"Sound Blaster", 0, 0, SNDCARD_SB},
        .converter        = &std_midi_synth,
        .in_info        = {0},
        .open                = sb_midi_open,
        .close                = sb_midi_close,
        .ioctl                = sb_midi_ioctl,
        .outputc        = sb_midi_out,
        .start_read        = sb_midi_start_read,
        .end_read        = sb_midi_end_read,
};
==============================================================================================
问题:fileoperations结构体中module拥有该结构的模块的指针,模块是什么东西,在这个之上吗?是什么东西完成了什么操作。
==============================================================================================
void sb_dsp_midi_init(sb_devc * devc, struct module *owner)-----------------设备在初始化时传进来的两个参数都是什么? 这个module结构体是什么,在内核中的机理、作用是什么?

==============================================================================================
==============================================================================================


最新回复

不知,帮顶  详情 回复 发表于 2008-5-1 18:51
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1.为了锁定MEM,防止其他进程读写。
2.哥们,说实话,这个你不该问啊。最基础的了。
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
3.上层函数向下传递,经过ioctl解析。
4.volatile表示容易改变的变量,调用时候不能直接从缓存读取。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 

其他的几句话说不清楚,建议看看资料吧。
另外,给我点分,呵呵。谢了,其他人都懒得回答啦啊。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
问:file inode module fileoperations都是什么关系?怎么关联起来的?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
上面这个能不能说得清楚点,就是应用层调用open read几个函数怎么一步一步找到驱动内的open read的,还有就是file inode module fileoperations这几个都是怎么个机制,就是kernel内是怎么分工的,深入的讲一下。




高手指点。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
什么呀
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
不知,帮顶
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表