diff --git a/src/sys/kernel/ubthread.c b/src/sys/kernel/ubthread.c index ade9cad..0eba717 100644 --- a/src/sys/kernel/ubthread.c +++ b/src/sys/kernel/ubthread.c @@ -110,11 +110,12 @@ return(0x0); } else { - kprintf("Trying To Unlock Mutex From No Locking Thread[%i - %i:0x%X]\n", ubmutex->pid, _current->id,*ubmutex); - kpanic("FU"); + //kprintf("Trying To Unlock Mutex From No Locking Thread[%i - %i:0x%X]\n", ubmutex->pid, _current->id,*ubmutex); + //kpanic("FU"); atomic_exchange(&ubmutex->lock, false); + return(0x0); //ubmutex->locked = UNLOCKED; - return(-1); + //return(-1); } } @@ -131,7 +132,7 @@ return(0x0); } -int ubthread_cond_wait(ubthread_cond_t *cond, ubthread_mutex_t *mutex) { +int ubthread_cond_wait_old(ubthread_cond_t *cond, ubthread_mutex_t *mutex) { ubthread_cond_t ubcond = *cond; ubthread_mutex_t ubmutex = *mutex; while (ubcond->lock == true) sched_yield(); @@ -140,6 +141,14 @@ return(0x0); } +int ubthread_cond_wait(ubthread_cond_t *cond, ubthread_mutex_t *mutex) { + ubthread_cond_t ubcond = *cond; + ubthread_mutex_unlock(mutex); + while (ubcond->lock == true) sched_yield(); + ubthread_mutex_lock(mutex); + return(0x0); +} + int ubthread_cond_signal(ubthread_cond_t *cond) { ubthread_cond_t ubcond = *cond; atomic_exchange(&ubcond->lock, false); diff --git a/src/sys/net/net/init.c b/src/sys/net/net/init.c index 3c85582..ce38631 100644 --- a/src/sys/net/net/init.c +++ b/src/sys/net/net/init.c @@ -78,8 +78,8 @@ kprintf("TCP/IP initialized.\n"); IP4_ADDR(&gw, 10,50,0,1); - IP4_ADDR(&ipaddr, 10,50,0,7); - IP4_ADDR(&netmask, 255,255,255,0); + IP4_ADDR(&ipaddr, 10,50,6,65); + IP4_ADDR(&netmask, 255,255,0,0); netif_set_default(netif_add(&ipaddr, &netmask, &gw, ethernetif_init, tcpip_input)); IP4_ADDR(&gw, 127,0,0,1); diff --git a/src/sys/net/net/sys_arch.c b/src/sys/net/net/sys_arch.c index 2a21e6e..1899ee4 100644 --- a/src/sys/net/net/sys_arch.c +++ b/src/sys/net/net/sys_arch.c @@ -369,7 +369,7 @@ } uint16_t sys_arch_sem_wait(struct sys_sem *sem, uint16_t timeout) { - kprintf("Or Here? %i:%i-0x%X]", _current->id, sem->mutex->pid,&(sem->mutex)); + //kprintf("Or Here? %i:%i-0x%X]", _current->id, sem->mutex->pid,&(sem->mutex)); uint16_t time = 1; ubthread_mutex_lock(&(sem->mutex)); while(sem->c <= 0) { @@ -389,11 +389,14 @@ } void sys_sem_signal(struct sys_sem *sem) { - kprintf("HERE: %i", _current->id); + //kprintf("HERE: %i:0x%X", _current->id,&(sem->mutex)); + ubthread_mutex_lock(&(sem->mutex)); + sem->c++; if(sem->c > 1) sem->c = 1; + ubthread_cond_signal(&(sem->cond)); ubthread_mutex_unlock(&(sem->mutex)); }