Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

sub_proc.C

Ir a la documentación de este archivo.
00001 //===========================================================================
00002 //= sub_proc.cc                                               Enero de 1999 =
00003 //=-------------------------------------------------------------------------=
00004 //= Definiciones de la clase SUB_PROCESO.                                   =
00005 //=-------------------------------------------------------------------------=
00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO   =
00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN   =
00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES,     = 
00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO,        =
00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO,  =
00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA   =
00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES       =
00013 //= ("ACTIVIDADES DE ALGO RIESGO").                                         =
00014 //=-------------------------------------------------------------------------=
00015 //= Autor original: Oscar J. Chavarro G.  A.K.A. JEDILINK. Copyright (c),   =
00016 //= 1997 - 2003, oscarchavarro@hotmail.com                                  =
00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia   =
00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la  =
00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. =
00020 //===========================================================================
00021 
00022 #include "toolkits/net/sub_proc.h"
00023 #include <stdio.h>
00024 
00025 //===========================================================================
00026 //= Funciones de soporte                                                    =
00027 //===========================================================================
00028 
00029 #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00030 static void (*global_prog)(void *);
00031 
00032 void *
00033 linux_prog(void *arg)
00034 {
00035     global_prog(arg); // Y el candado que? <-- Posible lio de exclusion mutua!
00036     return NULL;
00037 }
00038 
00039 #endif // PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00040 
00041 //===========================================================================
00042 //= CLASE SUB_PROCESO                                                       =
00043 //===========================================================================
00044 
00045 SUB_PROCESO::SUB_PROCESO(void (*f)(void *))
00046 {
00047     prog = f;
00048 }
00049 
00050 BOOLEAN
00051 SUB_PROCESO::lanzar(void)
00058 {
00059   #if PLATAFORMA == i386_LINUX_GCC || PLATAFORMA == SPARC64_LINUX_GCC
00060     // CERRAR CANDADO?
00061     global_prog = prog;
00062     if ( pthread_create(&pid_hijo, NULL, linux_prog, NULL) ) {
00063         fprintf(stderr,
00064             "<SUB_PROCESO> ERROR: No pudo crearse un subproceso!\n");
00065         fflush(stderr);
00066         return FALSE;
00067     }
00068     return TRUE;
00069 /*
00070   #elif PLATAFORMA == SGI
00071     pid_hijo = sproc(prog, PR_SALL);
00072     if ( pid_hijo == -1 )  {
00073         fprintf(stderr,
00074             "<SUB_PROCESO> ERROR: No pudo crearse un subproceso!\n");
00075         fflush(stderr);
00076         return FALSE;
00077     }
00078     return TRUE;
00079 */
00080   #elif PLATAFORMA == i386_WIN32_VC
00081 // OJO: Ya no funciona en MSVC7 !
00082 /*
00083     pid_hijo = _beginthread(prog, 0, NULL);
00084 */
00085     pid_hijo = -1;
00086     if ( pid_hijo == -1 )  {
00087         fprintf(stderr,
00088             "<SUB_PROCESO> ERROR: No pudo crearse un subproceso!\n");
00089         fflush(stderr);
00090         return FALSE;
00091     }
00092     return TRUE;
00093   #else
00094     fprintf(stderr,
00095       "<SUB_PROCESO> ERROR - Threads no implementados en esta plataforma!\n");
00096     fflush(stderr);
00097     return FALSE;
00098   #endif
00099 }
00100 
00101 //===========================================================================
00102 //= EOF                                                                     =
00103 //===========================================================================
00104 

Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.