20,11 → 20,11 |
|
/** |
------------ |
CVS : $Id: hartport.c,v 1.3 2002-11-11 08:32:06 pj Exp $ |
CVS : $Id: hartport.c,v 1.4 2003-11-05 15:04:14 giacomo Exp $ |
|
File: $File$ |
Revision: $Revision: 1.3 $ |
Last update: $Date: 2002-11-11 08:32:06 $ |
Revision: $Revision: 1.4 $ |
Last update: $Date: 2003-11-05 15:04:14 $ |
------------ |
|
This file contains the Hartik 3.3.1 Port functions |
175,16 → 175,17 |
static int getfreedes(void) |
{ |
int p; |
SYS_FLAGS f; |
|
kern_cli(); |
f = kern_fsave(); |
if (freeportdes == NIL) { |
errno = EPORT_NO_MORE_DESCR; |
kern_sti(); |
kern_frestore(f); |
return -1; |
} |
p = freeportdes; |
freeportdes = port_des[p].next; |
kern_sti(); |
kern_frestore(f); |
return(p); |
} |
|
193,10 → 194,12 |
/*----------------------------------------------------------------------*/ |
static void ungetdes(int pd) |
{ |
kern_cli(); |
SYS_FLAGS f; |
|
f = kern_fsave(); |
port_des[pd].next = freeportdes; |
freeportdes = pd; |
kern_sti(); |
kern_frestore(f); |
} |
|
/*----------------------------------------------------------------------*/ |
205,16 → 208,16 |
static int getfreeint(void) |
{ |
int p; |
|
kern_cli(); |
SYS_FLAGS f; |
f = kern_fsave(); |
if (freeportint == NIL) { |
errno = EPORT_NO_MORE_INTERF; |
kern_sti(); |
kern_frestore(f); |
return -1; |
} |
p = freeportint; |
freeportint = port_int[p].next; |
kern_sti(); |
kern_frestore(f); |
return(p); |
} |
|
223,10 → 226,12 |
/*----------------------------------------------------------------------*/ |
static void ungetint(int pi) |
{ |
kern_cli(); |
SYS_FLAGS f; |
|
f = kern_fsave(); |
port_int[pi].next = freeportint; |
freeportint = pi; |
kern_sti(); |
kern_frestore(f); |
} |
|
/*----------------------------------------------------------------------*/ |
240,6 → 245,7 |
int i, pd, pi; |
WORD letti = 0; |
BYTE flag = FALSE; |
SYS_FLAGS f; |
|
/* |
Prendo un descrittore di porta. |
303,9 → 309,9 |
if (type == STICK) port_des[pd].dim_block = dim_mes; |
else port_des[pd].dim_block = dim_mes * num_mes; |
|
kern_cli(); |
f = kern_fsave(); |
port_des[pd].mem_block = kern_alloc(port_des[pd].dim_block); |
kern_sti(); |
kern_frestore(f); |
if (port_des[pd].mem_block == NULL) { |
errno = EPORT_2_CONNECT; |
sem_post(&hash_mutex); |
496,6 → 502,7 |
int i; |
struct port_ker *pd; |
struct port_com *pp; |
SYS_FLAGS f; |
|
pp = &port_int[pi]; |
sem_wait(&hash_mutex); |
506,9 → 513,9 |
sem_destroy(&pd->pieno); |
sem_destroy(&pd->vuoto); |
|
kern_cli(); |
f = kern_fsave(); |
kern_free(pd->mem_block, pd->dim_block); |
kern_sti(); |
kern_frestore(f); |
|
ungetdes(htable[i].port_index); |
pp->valid = FALSE; |