|
|
|
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./showarticle.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:
|
USB Widget - widget monitoring USB flashdisks
|
Comentarios: Comente este artículo.
|
The development of software for eComStation is profitable: a) system API is effective and considered. b) The market is not so infinite as Windows. All eCS users know about your product. c) Every developer is influencing on the OS significantly. |
|
|
 |
IBM OS/2 Warp
|