char *proobraz(char* input) { input = registr(input); input= ficha(input); for (int i=0;i<strlen(input);i++) { ssin(i,input); ccos(i,input); aasin(i,input); aacos(i,input); aatan(i,input); cceil(i,input); cch(i,input); eexp(i,input); aabs(i,input); ffloor(i,input); lln(i,input); llog(i,input); ssh(i,input); ssqrt(i,input); ttan(i,input); tth(i,input); cctg(i,input); aactg(i,input); ccth(i,input); } return input; }
int rt_register(unsigned long name, void *adr, int type, struct task_struct *t) { /* * Register a resource. This function provides the service to all RTAI tasks. */ return get_adr(name) ? 0 : registr(name, adr, type, t ); }
int main(){ Program prog("src/examples/recette.s"); Operand *Op1,*Op2, *Op3, *Op4, *Op5,*Op6; OPRegister registr("$5",5,Src); OPRegister registr0("$5",5,Dst); OPRegister registr1("$6",6,Dst); OPRegister registr2("$0",0,Src); OPRegister registr3("$6",6,Src); OPRegister registr4("$4",4,Dst); OPRegister registr5("$4",4,Src); OPImmediate imm("0xFFFF"); Directive dir("# Code avec des Nor"); Op1= ®istr; Op2= ®istr0; Op3= ®istr1; Op4= ®istr2; Op5= ®istr3; Op6= ®istr4; Line *ligne; prog.display(); prog.del_line(0); ligne = prog.find_line(0); Instruction *inst = dynamic_cast< Instruction * > (ligne); inst->set_opcode(lui); inst->set_op1(Op6); inst->set_op2(&imm); inst->set_op3(NULL); inst->set_number_oper(2); ligne=prog.find_line(1); Instruction *ins2 = dynamic_cast< Instruction * > (ligne); ins2->set_opcode(and_); Instruction ins3("ori $4,$4,0xFFFF",ori,R, ALU,Op6,®istr5,&imm,3); Instruction ins4("xor $5,$4,$0",xor_,R, ALU,Op1,®istr5,Op4,3); Instruction ins5("xor $4,$5,$6",xor_,R, ALU,Op3,®istr5,Op4,3); prog.add_line_at(&ins3,1); prog.add_line_at(&ins4,2); prog.add_line_at(&ins5,3); prog.display(); }
int IPACM_IfaceManager::create_iface_instance(ipacm_ifacemgr_data *param) { int if_index = param->if_index; ipacm_wan_iface_type is_sta_mode = param->if_type; int ipa_interface_index; ipa_interface_index = IPACM_Iface::iface_ipa_index_query(if_index); if(ipa_interface_index == INVALID_IFACE) { IPACMDBG_H("Unhandled interface received, fid: %d\n",if_index); return IPACM_SUCCESS; } /* check if duplicate instance*/ if(SearchInstance(ipa_interface_index) == IPA_INSTANCE_NOT_FOUND) { /* IPA_INSTANCE_NOT_FOUND */ switch(IPACM_Iface::ipacmcfg->iface_table[ipa_interface_index].if_cat) { case LAN_IF: { IPACMDBG_H("Creating Lan interface\n"); IPACM_Lan *lan = new IPACM_Lan(ipa_interface_index); IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, lan); //IPACM_EvtDispatcher::registr(IPA_ROUTE_ADD_EVENT, lan); //IPACM_EvtDispatcher::registr(IPA_ROUTE_DEL_EVENT, lan); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, lan); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_DEL_EVENT, lan); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, lan); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, lan); #ifdef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_TETHER, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6_TETHER, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_TETHER, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6_TETHER, lan); #else IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN, lan); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6, lan); #endif IPACM_EvtDispatcher::registr(IPA_CFG_CHANGE_EVENT, lan); // register for IPA_CFG_CHANGE event IPACM_EvtDispatcher::registr(IPA_PRIVATE_SUBNET_CHANGE_EVENT, lan); // register for IPA_PRIVATE_SUBNET_CHANGE_EVENT event #ifdef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_TETHERING_STATS_UPDATE_EVENT, lan); #endif IPACM_EvtDispatcher::registr(IPA_CRADLE_WAN_MODE_SWITCH, lan); IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, lan); /* IPA_LAN_DELETE_SELF should be always last */ IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, lan); IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", lan->dev_name, lan->ipa_if_num); registr(ipa_interface_index, lan); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } break; case ETH_IF: { IPACMDBG_H("Creating ETH interface in router mode\n"); IPACM_Lan *ETH = new IPACM_Lan(ipa_interface_index); IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, ETH); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, ETH); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, ETH); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, ETH); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP, ETH); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6, ETH); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN, ETH); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6, ETH); IPACM_EvtDispatcher::registr(IPA_CRADLE_WAN_MODE_SWITCH, ETH); IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, ETH); /* IPA_LAN_DELETE_SELF should be always last */ IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, ETH); IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", ETH->dev_name, ETH->ipa_if_num); registr(ipa_interface_index, ETH); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } break; case ODU_IF: { if(IPACM_Iface::ipacmcfg->ipacm_odu_router_mode == true) { IPACMDBG_H("Creating ODU interface in router mode\n"); IPACM_Lan *odu = new IPACM_Lan(ipa_interface_index); IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, odu); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, odu); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_DEL_EVENT, odu); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, odu); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, odu); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP, odu); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6, odu); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN, odu); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6, odu); IPACM_EvtDispatcher::registr(IPA_CRADLE_WAN_MODE_SWITCH, odu); IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, odu); /* IPA_LAN_DELETE_SELF should be always last */ IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, odu); IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num); registr(ipa_interface_index, odu); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } else { IPACMDBG_H("Creating ODU interface in bridge mode\n"); IPACM_Lan *odu = new IPACM_Lan(ipa_interface_index); IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, odu); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, odu); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, odu); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, odu); IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, odu); /* IPA_LAN_DELETE_SELF should be always last */ IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, odu); IPACMDBG_H("ipa_LAN (%s):ipa_index (%d) instance open/registr ok\n", odu->dev_name, odu->ipa_if_num); registr(ipa_interface_index, odu); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } } break; case WLAN_IF: { IPACMDBG_H("Creating WLan interface\n"); IPACM_Wlan *wl = new IPACM_Wlan(ipa_interface_index); IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_ROUTE_DEL_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_CLIENT_ADD_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_CLIENT_ADD_EVENT_EX, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_CLIENT_DEL_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_CLIENT_POWER_SAVE_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_CLIENT_RECOVER_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, wl); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, wl); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, wl); #ifdef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_TETHER, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6_TETHER, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_TETHER, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6_TETHER, wl); #else IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_UP_V6, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN, wl); IPACM_EvtDispatcher::registr(IPA_HANDLE_WAN_DOWN_V6, wl); #endif IPACM_EvtDispatcher::registr(IPA_PRIVATE_SUBNET_CHANGE_EVENT, wl); // register for IPA_PRIVATE_SUBNET_CHANGE_EVENT event #ifdef FEATURE_ETH_BRIDGE_LE IPACM_EvtDispatcher::registr(IPA_CFG_CHANGE_EVENT, wl); #endif IPACM_EvtDispatcher::registr(IPA_CRADLE_WAN_MODE_SWITCH, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_LINK_DOWN_EVENT, wl); #ifndef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_SCC, wl); IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_MCC, wl); #else IPACM_EvtDispatcher::registr(IPA_TETHERING_STATS_UPDATE_EVENT, wl); #endif /* IPA_LAN_DELETE_SELF should be always last */ IPACM_EvtDispatcher::registr(IPA_LAN_DELETE_SELF, wl); IPACMDBG_H("ipa_WLAN (%s):ipa_index (%d) instance open/registr ok\n", wl->dev_name, wl->ipa_if_num); registr(ipa_interface_index, wl); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } break; case WAN_IF: { if((IPACM_Iface::ipacmcfg->ipacm_odu_enable == false) || (IPACM_Iface::ipacmcfg->ipacm_odu_router_mode == true)) { IPACMDBG_H("Creating Wan interface\n"); IPACM_Wan *w; if(is_sta_mode == WLAN_WAN) { w = new IPACM_Wan(ipa_interface_index, is_sta_mode, param->mac_addr); } else { w = new IPACM_Wan(ipa_interface_index, is_sta_mode, NULL); } IPACM_EvtDispatcher::registr(IPA_ADDR_ADD_EVENT, w); #ifdef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_WAN_UPSTREAM_ROUTE_ADD_EVENT, w); IPACM_EvtDispatcher::registr(IPA_WAN_UPSTREAM_ROUTE_DEL_EVENT, w); if(is_sta_mode == Q6_WAN) { IPACM_EvtDispatcher::registr(IPA_NETWORK_STATS_UPDATE_EVENT, w); }; #else/* defined(FEATURE_IPA_ANDROID) */ IPACM_EvtDispatcher::registr(IPA_ROUTE_ADD_EVENT, w); IPACM_EvtDispatcher::registr(IPA_ROUTE_DEL_EVENT, w); #endif /* not defined(FEATURE_IPA_ANDROID)*/ IPACM_EvtDispatcher::registr(IPA_FIREWALL_CHANGE_EVENT, w); IPACM_EvtDispatcher::registr(IPA_NEIGH_CLIENT_IP_ADDR_ADD_EVENT, w); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_ENABLE, w); IPACM_EvtDispatcher::registr(IPA_SW_ROUTING_DISABLE, w); IPACM_EvtDispatcher::registr(IPA_CFG_CHANGE_EVENT, w); // register for IPA_CFG_CHANGE event IPACM_EvtDispatcher::registr(IPA_WAN_XLAT_CONNECT_EVENT, w); if(is_sta_mode == WLAN_WAN) { IPACM_EvtDispatcher::registr(IPA_WLAN_LINK_DOWN_EVENT, w); // for STA mode #ifndef FEATURE_IPA_ANDROID IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_SCC, w); IPACM_EvtDispatcher::registr(IPA_WLAN_SWITCH_TO_MCC, w); #endif } else { IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, w); } IPACMDBG_H("ipa_WAN (%s):ipa_index (%d) instance open/registr ok\n", w->dev_name, w->ipa_if_num); registr(ipa_interface_index, w); /* solve the new_addr comes earlier issue */ IPACM_Iface::iface_addr_query(if_index); } } break; /* WAN-eMBMS instance */ case EMBMS_IF: { IPACMDBG("Creating Wan-eMBSM interface\n"); IPACM_Wan *embms = new IPACM_Wan(ipa_interface_index, is_sta_mode, NULL); IPACM_EvtDispatcher::registr(IPA_LINK_DOWN_EVENT, embms); IPACMDBG("ipa_WAN (%s):ipa_index (%d) instance open/registr ok\n", embms->dev_name, embms->ipa_if_num); registr(ipa_interface_index, embms); } break; default: IPACMDBG_H("Unhandled interface category received iface name: %s, category: %d\n", IPACM_Iface::ipacmcfg->iface_table[ipa_interface_index].iface_name, IPACM_Iface::ipacmcfg->iface_table[ipa_interface_index].if_cat); return IPACM_SUCCESS; } } return IPACM_SUCCESS; }