标签: lynxos

如何在LynxOS/POSIX中同步对共享内存的访问?

我正在LynxOS SE(POSIX conformant)系统上实现两个进程,它们将通过共享内存进行通信.

一个过程将充当"生产者"而另一个过程将充当"消费者".在多线程系统中,我的方法是使用互斥和condvar(条件变量)对,消费者在condvar(with pthread_cond_wait)上等待,生产者pthread_cond_signal在更新共享内存时用信号通知它(with ).

如何在多进程架构而不是多线程架构中实现这一目标?

是否有LynxOS/POSIX方法来创建可在进程之间使用的condvar/mutex对?
或者在这种情况下,其他一些同步机制更合适吗?

c posix ipc shared-memory lynxos

10
推荐指数
4
解决办法
1万
查看次数

Lua在PowerPC/LynxOS平台上表现得很奇怪,为什么?

我选择Lua 5.1作为我的应用程序的嵌入式脚本语言,但当我将应用程序移植到传统平台上时,在PowerPC上运行LynxOS,似乎出现了问题.

我在PC上运行以下代码并且每件事看起来都很好:

void test_lua()
{
  const char *code = "foo = 5\n";
  double vfoo=0;
  lua_State *L = luaL_newstate();

  (void)luaL_loadbuffer(L, code, strlen(code), "line");
  (void)lua_pcall (L, 0, 0, 0);

  lua_getglobal(L, "foo");
  vfoo = lua_tonumber(L, -1);

  lua_close(L);

  myTrace("vfoo = %f", vfoo);
  for(;;);
}
Run Code Online (Sandbox Code Playgroud)

用PC(Visual C++ 6.0)我期待"vfoo = 5.000000"

但是对于LynxOS/PowerPC,我得到了"vfoo = 0.000000".

那么Lua在LynxOS/PowerPC上发生了什么?我想知道是否有一些big-endian机器的配置,我在"luaconf.h"中查找它但却一无所获.我也尝试了配置项"LUA_USE_POSIX"但没有帮助.

我知道它不是lua编程的典型平台.但是,欢迎任何建议,并表示赞赏.

lua powerpc lynxos

7
推荐指数
1
解决办法
276
查看次数

共享内存中的条件变量 - 此代码是否符合POSIX标准?

POSIX标准是否允许命名共享内存块包含互斥锁和条件变量?

我们一直在尝试使用互斥和条件变量来同步对LynuxWorks LynxOS-SE系统(POSIX-conformant)上的两个进程对命名共享内存的访问.

调用一个共享内存块"/sync"并包含互斥锁和条件变量,另一个是"/data"并包含我们同步访问的实际数据.

pthread_cond_signal()如果两个进程都没有mmap()完全相同的顺序执行调用,或者如果一个进程在映射内存之前在某个其他共享内存中进行mmaps,我们就会看到失败"/sync".

这个示例代码与我可以做的一样短:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/file.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
#include <iostream>
#include <string>
using namespace std;

static const string shm_name_sync("/sync");
static const string shm_name_data("/data");

struct shared_memory_sync
{
    pthread_mutex_t mutex;
    pthread_cond_t condition;
};

struct shared_memory_data
{
    int a;
    int b;
};


//Create 2 shared memory objects
// - sync contains 2 shared synchronisation …
Run Code Online (Sandbox Code Playgroud)

unix posix ipc shared-memory lynxos

5
推荐指数
2
解决办法
9268
查看次数

如何使用内置函数验证指针而不是NULL检查?

在今天的讨论中,我发现VxWorksLynxOS中有检查,它告诉您为指针分配的地址来自有效范围.这是我第一次听到这个代码,就像我指定的那样int *i=&variable;.

我应该收到一个警告或错误,说明在我的应用程序中我无法将地址值分配给整数.

就像我做NULL检查一样,我只检查地址0x00000000.但地址可能就是这种情况0x00000001.如果它是未映射的区域并且可能无法访问,则这也是无效的情况.是否有人知道某些与Linux相似的东西,或者可以指导它在VxWorksLynxOS中的完成情况.

有任何想法吗??

c linux memory vxworks lynxos

3
推荐指数
1
解决办法
446
查看次数

标签 统计

lynxos ×4

c ×2

ipc ×2

posix ×2

shared-memory ×2

linux ×1

lua ×1

memory ×1

powerpc ×1

unix ×1

vxworks ×1