From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Epiphanov Sergei To: =?windows-1251?b?0ODx8fvr6uAgU2lzeXBodXM=?= Date: Fri, 8 Oct 2004 17:48:07 +0400 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="windows-1251" Message-Id: <200410081748.07275.serpiph@nikiet.ru> Content-Transfer-Encoding: quoted-printable Subject: [sisyphus] =?windows-1251?b?0ODh7vLgIO/u5CAyLjYu9SDxIO/w6OL/5+ru?= =?windows-1251?b?6SDq7iDi8OXs5e3t++wg7vLs5fLq4Owu?= X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Oct 2004 13:43:32 -0000 Archived-At: List-Archive: =C5=F1=F2=FC =EF=F0=EE=E3=F0=E0=EC=EC=E0, =EA=EE=F2=EE=F0=F3=FE =F0=E5=F8= =E8=EB =EF=F0=E8=E2=FF=E7=E0=F2=FC =EA =F2=E0=E9=EC=E5=F0=F3 =E4=EB=FF =F0= =E0=E1=EE=F2=FB =E2 =F0=E5=E0=EB=FC=ED=EE=EC=20 =E2=F0=E5=EC=E5=ED=E8. =CF=F0=E8=ED=F6=E8=EF =EF=F0=EE=F1=F2=EE=E9: =EF=EE= =F1=F2=E0=E2=E8=EB =EE=E1=F0=E0=E1=EE=F2=EA=F3 setitimer =ED=E0 =E7=E0=EF= =F3=F1=EA SIG_ALARM=20 =F1 =F8=E0=E3=EE=EC 10 =EC=F1=E5=EA. #define _XOPEN_SOURCE 600 #define _GNU_SOURCE #include #include #include #include volatile int nextnum=3D0; volatile pthread_mutex_t fastmutex; void alarmsig(int i){ pthread_mutex_lock( &fastmutex ); nextnum++; pthread_mutex_unlock( &fastmutex ); } static struct sigaction oldsig; /*type<0.5 - drop timer type>0.5 - set timer*/ void settimer_(float *type, float *step){ long int sec =3D *step; long int usec =3D (*step-sec)*1e6; struct itimerval tv,old; struct sigaction newsig,temp; pthread_mutexattr_t attr; printf("sec=3D%ld usec=3D%ld\n",sec,usec); if( *type>0.5 ){ pthread_mutexattr_init( &attr ); pthread_mutexattr_settype( &attr, PTHREAD_MUTEX_FAST_NP ); pthread_mutex_init( &fastmutex, &attr ); pthread_mutexattr_destroy( &attr ); tv.it_interval.tv_sec =3D sec; tv.it_interval.tv_usec =3D usec; tv.it_value.tv_sec =3D sec; tv.it_value.tv_usec =3D usec; nextnum =3D 0; newsig.sa_handler =3D alarmsig; newsig.sa_flags =3D SA_NOMASK; sigaction( SIGALRM, &newsig, &oldsig ); setitimer( ITIMER_REAL, &tv, &old ); } else{ tv.it_interval.tv_sec =3D 0; tv.it_interval.tv_usec =3D 0; tv.it_value.tv_sec =3D 0; tv.it_value.tv_usec =3D 0; setitimer( ITIMER_REAL, &tv, &old ); nextnum =3D 0; sigaction( SIGALRM, &oldsig, &temp ); pthread_mutex_destroy( &fastmutex ); } =20 } void waittime_( float *err ){ int cur =3D nextnum; if( cur>1 ){ *err =3D cur; return; } while( !cur ){ pthread_mutex_lock( &fastmutex ); cur =3D nextnum; pthread_mutex_unlock( &fastmutex ); } *err =3D 0; pthread_mutex_lock( &fastmutex ); nextnum =3D 0; pthread_mutex_unlock( &fastmutex ); return; } =C7=E0=F2=E5=EC: 1)t=3D0 2)=E2 =F6=E8=EA=EB=E5: =E0) =EE=F1=ED=EE=E2=ED=E0=FF =EF=F0=EE=E3=F0=E0=EC=EC=E0 =E1) t=3Dt+10=EC=F1=E5=EA =E2) waittime_(err) =E3) =E7=E0=E2=E5=F0=F8=E5=ED=E8=E5 =F6=E8=EA=EB=E0 =EF=F0=E8 t>=3D100=F1= =E5=EA. =D2=E0=EA =E2=EE=F2, =EF=F0=E8 =F2=E0=EA=EE=EC =F0=E0=F1=EA=EB=E0=E4=E5 =ED= =E0 =FF=E4=F0=E5 2.6.8-std-smp-alt9 =EF=F0=EE=E3=F0=E0=EC=EC=E0 =F0=E0=E1= =EE=F2=E0=E5=F2=20 110=F1=E5=EA (+10%). =C8 =FD=F2=EE=F2 =F0=E0=F1=EA=EB=E0=E4 =ED=E5 =E7=E0= =E2=E8=F1=E8=F2 =EE=F2 =F8=E0=E3=E0 (10=EC=F1=E5=EA, 100=EC=F1=E5=EA, 1=F1= =E5=EA).=20 =CD=E0 =FF=E4=F0=E5 2.4.26-std-up-alt6 =FD=F2=E0 =E6=E5 =EF=F0=EE=E3=F0=E0= =EC=EC=E0 =E1=E5=E7 =EF=E5=F0=E5=F1=E1=EE=F0=EA=E8 =F0=E0=E1=EE=F2=E0=E5=F2= =F2=EE=F7=ED=EE=20 100 =F1=E5=EA. =D7=F2=EE =FD=F2=EE =EC=EE=E6=E5=F2 =E1=FB=F2=FC? --=20 =D1 =F3=E2=E0=E6=E5=ED=E8=E5=EC, =C5=EF=E8=F4=E0=ED=EE=E2 =D1=E5=F0=E3=E5= =E9