Comunidade OSDevBrasil.net
Maio 22, 2012, 06:51:24 *
Bem-vindo, Visitante. Por favor faça o Login ou Registro.

Login com nome de usuário, senha e duração da sessão
Notícias: Anuncie a nossa comunidade a amigos, fóruns...
 
   Home   Ajuda Pesquisa Login Registrar  
Páginas: [1]
  Imprimir  
Autor Tópico: ODMI - Object Drive Module Interface  (Lida 388 vezes)
Mounter
Administrador
OS Sr. Member
*****

Karma: 12
Mensagens: 432


mrjostz@hotmail.com
Ver Perfil WWW Email
« : Fevereiro 25, 2010, 06:22:41 »

Olá Pessoal!

Baseando no modelo de drive EDI (Extensible Device Interface), estou planejando a interface ODMI, nela são incorporados elementos da EDI (Drivers como Objetos) e mais uma linguagem de criação de drivers (ODMI/OPL - Objected Program Language). Essa linguagem seria um interpretador de macros, que gerariam drivers em arquivos C/ko para a interface ODMI/EI (Extendend Interface). A linguagem está sendo projetada e será parecida com esse trecho de código:

Código:
include <stdio.h>
include_object kernel // #include <odmi/oo_kernel.h>

object Interrupt // Gera header oo_Interrupt.h
     public function set_int(int num, intr_func_t func): int;
object_end

public function Interrupt::set_int(int num, intr_func_t func): int
{
      printf("Interrupt: Interrupção %i atribuida!\n", num);
      kernel@set_int(num, func);
}

Como podesse ver, ao invez dos simbolos kernel->set_int ou kernel.set_int usamos kernel@set_int para nao confundir com o código C, ja que eh uma linguagem macro e em algum locais o código C será totalmente aceito. O código C que será gerado será parecido com esse:

oo_interrupt.h:

Código:
odmi_object *oo_interrupt;

int oo_Interrupt_set_int(int num, intr_func_ptr_t func);

oo_interrupt.c:
Código:
#include "oo_interrupt.h"
#include <stdio.h>
#include <odmi/oo_kernel.h>

int oo_Interrupt_set_int(int num, intr_func_ptr_t func)
{
      printf("Interrupt: Interrupção %i atribuida!\n", num);
      oo_kernel_set_int(num, func); // Função nativa do kernel
}

Fora esses dois arquivos (oo_Interrupt.h, oo_Interrupt.c), também será gerado o arquivo oo_Interrupt.xml, para fazer o controle do dados do object e que funções/variáveis ele exporta. Sei que o projeto é um tanto ambicioso, mas nada impossível. E estou aqui para saber a opnião de todo mundo e o que podemos acrescentar ao novo padrão.

Padrão EDI: http://www.jamesmolloy.co.uk/edi/index.html

Abraços
« Última modificação: Fevereiro 25, 2010, 06:32:43 por Mounter » Registrado

╔╗╔╦══╦╗╔╦══╦╗
║╚╝║╔╗║╚╝║╔╗║║
║╔╗║╠╣║╔╗║╠╣╠╣
╚╝╚╩╝╚╩╝╚╩╝╚╩╝

Projeto SOmBRA - http://code.google.com/p/projeto-sombra

S.O.: Ubuntu 10.04
Browser: Google Chrome 10

gnomo
Moderador Global
OS Full Member
*****

Karma: 6
Mensagens: 173


gnomo_86@linuxmail.org
Ver Perfil WWW Email
« Responder #1 : Fevereiro 25, 2010, 09:53:11 »

Chocado
Registrado

Projeto SOmBRA - http://code.google.com/p/projeto-sombra
E-Mail: gnomo@projeto-sombra.org

S.O.: Debian 6.0 "Squeeze"

Páginas: [1]
  Imprimir  
 
Ir para:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006-2009, Simple Machines XHTML 1.0 Válido! CSS Válido!