НОВОЕ: OS/2 GURU - Вопросы и ответы

12345

Reviews / articles about OS/2

Operating systems:
ArcaOS, eComStation, IBM OS/2 Warp
eComStation myths 

Latest  
 
 

Unsorted

 

 

AD: ArcaOS 5.1 Russian LIP
Russian ARCAOS exists and it's available since the middle of 2017. All versions are supported: 5.1, 5.1.1.

eCo Software is able to maintain OS/2 LIP packages for any other language (German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)

My EMX program takes much CPU


TITLE: My EMX program takes much CPU

DATE: 2001-08-14 00:32:52

AUTHOR: nickk
Please use online translator
go to http://translate.google.com
and request the translation of http://ru.ecomstation./projects/reviews/index.php?id=5
to your language

... EMX ......... ...... ..... CPU

.... .. .............. .........-..... . ....... gcc . ........, ... ... ...... ....... ..... CPU .. ..... ...... (........ .... .. .........., . ............. .........., ........, . ....... top) .... .. ..... ......., ........., ........... .. .. ....... select. .... ... ..., .......... ........ .. .. ............. .......:

int ibm_select( int *fds, int n_read, int n_write, int n_exept, long timeout);

int os2_select (int nfds, fd_set *readfds, fd_set *writefds,
             fd_set *exceptfds, struct timeval *timeout)
/* We are using the EMX select() call if non-socket handlers
   are presented in sets and IBM select() otherwise.
   EMX select() causes high CPU usage in polling loop.
*/
.
    fd_set *fds[3] = . readfds, writefds, exceptfds .;
    int fd_os2[FD_SETSIZE * 3], fd_emx[FD_SETSIZE * 3];
    int n_fd[4], n = 0;
    int i, k, s;
    long ibmtimeout = -1;

    for(k = 0; k < 3; k++) .
	n_fd[k] = n;
	if(!fds[k])
	    continue;

	for(i = 0; i < nfds; i++) .
	    if(!fds[k]->fds_bits[i>>5]) .
		i += 31;
		continue;
	    .
	    if(!FD_ISSET(i, fds[k]))
		continue;
	    s = _getsockhandle(i);
	    if(s < 0) 
		return select(nfds, readfds, writefds, exceptfds, timeout);
	    else .
		fd_os2[n] = s;
		fd_emx[n++] = i;
	    .
        .
    .

    n_fd[3] = n;

    if (timeout) ibmtimeout = timeout->tv_usec/1000 + timeout->tv_sec*1000;
    s = ibm_select(fd_os2, n_fd[1]-n_fd[0], n_fd[2]-n_fd[1], n_fd[3]-n_fd[2],
			ibmtimeout);

    if(s == 0)			/* Timeout */
	return 0;
    if(s < 0) .			/* Error */
	if(sock_errno() == 10004)		/* SOCEINTR */
	    errno = EINTR;
	else
	    errno = EINVAL;
	return -1;
    .

    i = 0;
    for(k = 0; k < 3; k++) .
	n = n_fd[k+1];
	for( ; i < n; i++)
	    if(fd_os2[i] < 0) 
		FD_CLR(fd_emx[i], fds[k]);
    .
    return s;
.

... ....... ibm_select . sock_errno() ....... .. so32dll.dll:

; ibmtcp.imp
; -------- so32dll entry points --------
ibm_select              so32dll   12 ?
sock_errno              so32dll   20 ?

..... ........ .... . ..... ........., .........: emximp -o ibmtcp.a ibmtcp.imp.

...... .... ...... EMX'.... select .. ..............., ....... ........ . ........... . ... - "EMX select() causes high CPU usage in polling loop". ......., .... .. ........... select ...... ........ ......, .. ..... ...... .. ....... - ........ ........ .. ..... .. ......

... ......., ...... ........ ....... .......... ......... . .. ..... ......... OS/2 ..... squid, bind, sshd, wget...

....... EMX ..... ! :)

..... ......: nickk

Test the program:

eSchemes - change the colors and buttons on the desktop.

Kommentare:

How to increase the population of eComStation? Every eCS specialist can setup eCS for own friends and relatives, then print instructions how to use the system LiveBook brochure

 


 

 

ArcaOS 5.1.1 whatsnew - PNG icons

PNG icons on Desktop

PNG icons on Desktop. (instead of ancient .ico designed in 1994)

ACPI для OS/2

eCo Software have started the development of ACPI driver in 2005

// надо на ENG!!
Blonde Guy

Buy OS/2 application: OS/2 Doctor to analyze what is broken in OS/2 (15$)

Warpstock Europe 2016

Interview with Lars Erdmann, video:


talking about USB drivers development

 

(C) OS2.GURU 2001 -- 2025