vxworks vxmemprobe源码
时间: 2023-11-09 10:08:45 浏览: 134
VxWorks实验源码
5星 · 资源好评率100%
VxWorks中的vxMemProbe函数是用于在指定的内存地址上执行读写操作的函数。该函数的源代码可以在Wind River官方网站上找到。以下是vxMemProbe函数的部分源代码:
```c
STATUS vxMemProbe
(
char * addr, /* 待访问的内存地址 */
int mode, /* 访问模式:O_RDONLY、O_WRONLY、O_RDWR */
int size, /* 数据大小:1、2、4、8 */
char * pVal /* 读写缓冲区指针 */
)
{
STATUS status = OK;
int oldLevel;
if (IN_INTERRUPT_CONTEXT ())
return (ERROR);
oldLevel = intLock ();
if (IS_KSEG1 (addr))
{
status = sysPhysMemProbe ((void *) addr, mode, size, (void *) pVal);
}
else if (IS_KSEG0 (addr))
{
status = sysBusMemProbe ((void *) addr, mode, size, (void *) pVal);
}
else
{
status = sysUserMemProbe ((void *) addr, mode, size, (void *) pVal,
taskTcb (taskIdSelf ()));
}
intUnlock (oldLevel);
return (status);
}
```
在该函数中,首先判断待访问的内存地址是否为内核地址空间(KSEG1和KSEG0),如果是,则调用sysPhysMemProbe和sysBusMemProbe函数执行相应的读写操作;如果不是,则调用sysUserMemProbe函数执行相应的读写操作。
另外,还需要注意的是,vxMemProbe函数需要在非中断上下文中调用,否则会返回ERROR。
阅读全文