2008-11-21 10 views
5

Estoy buscando un buen bus de mensajes de fuente abierta que sea adecuado para dispositivos Linux incorporados (Linux y uClinux).¿Qué es un buen bus de mensajes de fuente abierta para Linux incorporado?

Tiene que cumplir los siguientes criterios:

  • deben ser software libre y LGPL o una licencia más liberal debido a uClinux que soporta solamente estática que une
  • Debe tener una API C
  • deben tener una espacio relativamente pequeño y no depender de bibliotecas de terceros
  • Debe ser compatible con Linux/uClinux 2.4.22+
  • Debe estar bien probado y preferiblemente tener un marco de prueba existente Örk estableció
  • debe tener un protocolo bien documentado
  • debe ser portátil a otras plataformas

El bus de mensajes principalmente sería utilizado por las aplicaciones en nuestro sistema con el fin de comunicar los parámetros de configuración, etc por lo que doesn' Necesito satisfacer los requisitos en tiempo real.

Respuesta

4

Todo depende de su arquitectura. ¿Tiene la intención de enviar mensajes a través de un plano posterior a otros nodos en un clúster, o todo esto está dentro de un solo nodo, pero en diferentes espacios de direcciones?

Si este último, entonces como carson dijo: man mq_overview.

Si es el primero, consulte primero con su proveedor de linux incorporado. Muchos proveedores proporcionarán algún tipo de biblioteca de mensajes distribuidos. En su defecto, eche un vistazo a 0MQ o la biblioteca MPICH2 MPI.

Actualización: Debo agregar, también, que gran parte de mi último año lo pasé escribiendo solo una API para un marco de procesamiento distribuido, y puedo decirles que merece la pena conservar la compatibilidad con POSIX. Use cola de mensajes POSIX si es posible.

1

Esto suena como un buen uso para SYSV or POSIX message queues. Pueden satisfacer todas las necesidades que ha enumerado. Los POSIX son más nuevos, por lo que no coincidirán con los requisitos del Kernel, pero SYSV está en Kernels más antiguos.

+0

Según su página man, solo está disponible en Linux 2.6.6+. "Las colas de mensajes POSIX se admiten en Linux desde kernel 2.6.6". –

+1

Estás en lo correcto. Probablemente quiera usar colas SYSV que fueron compatibles antes de POSIX. – carson

7

Hay D-Bus. Se ejecuta en el espacio de usuario. Sin embargo, generalmente requiere un daemon (pero tal vez podría simplemente tener procesos conectados específicamente entre sí en lugar de pasar por el daemon central).

1

Si te refieres a IPC, el socket funciona bien para uclinux.

Cuestiones relacionadas