实验6.2:向OAL添加新IOCTL及其实现.pdfVIP

  • 0
  • 0
  • 约6.39千字
  • 约 5页
  • 2026-03-02 发布于山西
  • 举报

Lab6.2:AddingaNewIOCTLtothe

OAL

Objectives

•UnderstandarchitectureofOALIOCTLlibraryintheCommoncode

•UnderstandhowtoaddanewIOCTLtotheOALbasedontheCommoncode

Prerequisites

•CompletedLab2.1

Estimatedtimetocompletethislab:20minutes

练习1:向OAL添加IOCTL

在本练习中,您将向OAL添加一个新的IOCTL,并证明其工作正常。OAL通过

OEMIoControl()函数IOCTL。tform\Common子目录中的库包含

OEMIoControl()函数的实现。如果您的BSP中的OAL基于PQOAL架构,或仅使用

tform\Common代码库中的此特定库,则将使用此方法为您的OAL添加IOCTL支

持。

我们首先将检查Common代码中OEMIoControl()函数的实现,然后

实现IOCTL_HAL_POSTINIT并验证我们的实现是否成功。

➢Common代码中OEMIoControl的实现

1.打开位于

C:\WINCE600\TFORM\COMMON\SRC\COMMON\IOCTL的ioctl.c文件

2.观察此文件包含所需的OEMIoControl()函数。该函数由内核调用以实现

OAL支持的所有IOCTL。到包含此源代码库的BSP将使用此

OEMIoControl()实现。

3.观察该函数使用一个名为g_oalIoCtlTable的全局数据结构,其中包含

IOCTL代码它们的函数指针。使用Common代码实现

OEMIoControl()的BSP通过此全局数据结构配置函数。

4.关闭文件ioctl.c。

5.打开位于C:\WINCE600\TFORM\TrainingBSP\SRC\OAL\OALLIB的文

件ioctl.c

6.观察到此文件在文件底部附近包含数据结构g_oalIoCtlTable。此数据结

构是Common代码中OEMIoControl()函数的数据结构。请注意,此

数据结构是使用头文件ioctl_tab.h实现的。

7.还观察到此文件包含实现各个IOCTL的例程。

8.打开位于C:\WINCE600\TFORM\TrainingBSP\SRC\INC的文

件ioctl_tab.h

9.请注意,此文件包含IOCTL代码与其实现函数指针的配对。此文件中

列出的例程直接实现在上述提到的BSP中的ioctl.c文件中。

Exercise1AddinganIOCTLtotheOAL

InthisexerciseyouwilladdanewIOCTLtotheOALanddemonstratethatitisworking.

TheOALexposesIOCTLsviatheOEMIoControl()function.Thelibrariesthatare

providedinthetform\Commonsubdirectoryincludeanimplementationforthe

OEMIoControl()function.IftheOALinyourBSPisbasedonthePQOALarchitecture,

orjustusesthisparticularlibraryfromthetform\Commoncodebaseyouwillusethis

methodtoaddIOCTLsupporttoyourOAL.

WewillfirstexaminetheimplementationoftheOEMIoControl()functioninthe

Commoncode,thenwewillimplementIOCTL_HAL_POSTIN

文档评论(0)

1亿VIP精品文档

相关文档