Forum I Roku Informatyki UW

Zadanie 3

Page 2 of 3 Previous  1, 2, 3  Next

Go down

Zadanie 3

Post by chmielu on Mon Jan 16, 2012 2:31 pm

First topic message reminder :

Czy ktos odpalal juz test numbers.c i chce sie podzielic wynikami? Liczba wywolan systemowych tez jest mile widziana.
avatar
chmielu

Liczba postów : 57
Join date : 2010-10-12

View user profile http://students.mimuw.edu.pl/~wc305187/Studia%20materialy/

Back to top Go down


Re: Zadanie 3

Post by saephir on Fri Jan 20, 2012 5:18 pm

Wystarczy przesyłać ID futeksa.
avatar
saephir

Liczba postów : 84
Join date : 2010-10-20

View user profile

Back to top Go down

Re: Zadanie 3

Post by rathma on Fri Jan 20, 2012 6:25 pm

saephir wrote:Wystarczy przesyłać ID futeksa.
Chyba nie masz racji.

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Fri Jan 20, 2012 6:44 pm

ano trzeba jeszcze tam sprawdzic wartosc futexa przed zaśnięciem bo inaczej mamy zgubioną pobudkę
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by Fingon on Fri Jan 20, 2012 7:36 pm

Da ktoś hinta jak przesłać adres wartości futexa (shared memory) do funkcji systemowej? Rzutowanie na long a potem na (int*) niestety nie działa.

Fingon

Liczba postów : 10
Join date : 2010-10-14

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Fri Jan 20, 2012 7:44 pm

ja bez uzycia shm rzutuje na long i potem na int i działa.. tj. zawsze *val == 2 || *val == 0.
Sama technika zapewne nie jest poprawna, ale nie jestem tego pewien.
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by rathma on Fri Jan 20, 2012 7:53 pm

Chcesz powiedzieć, że dostajesz się z poziomu serwera IPC do zmiennej przez adres, który wskazuje na zmienną w obrębie procesu, który korzysta z biblioteki futeksa?

rathma

Liczba postów : 102
Join date : 2010-12-15

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Fri Jan 20, 2012 7:57 pm

Też mi to brzmi dziwnie. Ale to nie możliwe by na tyle testów ile przeprowadziłem akurat pod tym "przypadkowym" adresem zawsze siedziało coś poprawnego nie?
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Fri Jan 20, 2012 9:25 pm

A w jaki sposób to dokładnie przekazujesz? Ja próbowałem to robić, ale nawet się nie kompiluje.

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Fri Jan 20, 2012 9:26 pm

no w messagu na longu zapisuje adres sobie. To jest jednak troche nie poprawne trzeba sie jeszcze przegryzc do drugiego procesu
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by Fingon on Fri Jan 20, 2012 10:10 pm

Z drugiej strony w shm.c podobnie jest przekazywany adres `buf`.

Fingon

Liczba postów : 10
Join date : 2010-10-14

View user profile

Back to top Go down

Re: Zadanie 3

Post by Gricha on Fri Jan 20, 2012 10:17 pm

sys_datacopy
avatar
Gricha

Liczba postów : 425
Join date : 2010-10-12
Age : 27
Skąd : Myszków

View user profile

Back to top Go down

Re: Zadanie 3

Post by pawel14 on Sat Jan 21, 2012 6:04 pm

Nie wiecie może z czego wynika błąd:
IPC unknown call type: XXX from XXX.

EDIT: Ok, już wiem. Zapomniałem ponownie uruchomić minixa.

pawel14

Liczba postów : 118
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Sat Jan 21, 2012 7:37 pm

Czy ktoś wie, w którym pliku najlepiej zdefiniować stałe używane przez funkcje obsługi futexa, w szczególności definicję ich maksymalnej liczby..?
Pzdr

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Sat Jan 21, 2012 9:21 pm

Poza tym, w katalogu /usr/src/include/sys/ trzeba dodać ten nasz futex.h. Jest tam też jakiś taki dziwny Makefile:

Code:
.include <bsd.sys.mk>

INCSDIR=        /usr/include/sys

INCS=   asynchio.h dir.h file.h ioc_cmos.h ioc_disk.h \
   ioc_file.h ioc_memory.h ioc_scsi.h ioc_sound.h ioc_tape.h \
   ioctl.h ioc_tty.h ipc.h jmp_buf.h kbdio.h mman.h \
   mount.h mtio.h param.h ptrace.h queue.h resource.h \
   select.h sem.h shm.h sigcontext.h signal.h socket.h \
   soundcard.h statfs.h statvfs.h stat.h svrctl.h timeb.h \
   time.h times.h types.h ucontext.h ucred.h uio.h un.h \
   utsname.h video.h vm.h wait.h cdefs.h null.h poll.h

.include <bsd.kinc.mk>

Trzeba coś do niego dopisać? I gdzie umieszcza się plik .c od tego pliku .h..?


Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by gromo on Sat Jan 21, 2012 10:46 pm

Plik .c trzeba zamiescic w /usr/src/servers/ipc

gromo

Liczba postów : 73
Join date : 2010-10-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Sat Jan 21, 2012 11:41 pm

Ale tam jest część systemowa... A gdzie implementacja części user-level?

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by canonier on Sun Jan 22, 2012 3:40 am

No chyba w bibliotece, tak samo jak było w helloworld.

canonier

Liczba postów : 27
Join date : 2011-05-05

View user profile

Back to top Go down

Re: Zadanie 3

Post by Balloi on Sun Jan 22, 2012 4:35 am

W pliku: /usr/src/servers/ipc/sem.c przy tworzeniu semafora jest:
sem->id = id = identifier++;

Jak to działa? (to jedyne wystąpienie słowa identifier w tym pliku).

Jak przekazać w messagu adres do zmiennej? Podobno to nie jest trywialne...

Balloi

Liczba postów : 97
Join date : 2010-11-23

View user profile http://pl.pokerstrategy.com/?referer=Arrin

Back to top Go down

Re: Zadanie 3

Post by Krzyszcz on Sun Jan 22, 2012 1:59 pm

Ja rzutuję na (* char) z odpowiedniego pola message i z powrotem i niby działa, ale raz rzucił z niewiadomych przyczyn jakimś pagefaultem, więc też bym chętnie poznał odpowiedź na to pytanie...

Krzyszcz

Liczba postów : 46
Join date : 2010-11-22

View user profile

Back to top Go down

Re: Zadanie 3

Post by 5ca on Sun Jan 22, 2012 9:49 pm

Co trzeba zrobić, żeby w testowym programie struktura futex_t była widoczna?
mam wgraną pustą implementację biblioteki:

plik usr/src/include/sys.futex.h i usr/include/sys.futex.h

Code:

#ifndef _SYS_FUTEX_H
#define _SYS_FUTEX_H

#include <sys/types.h>

typedef struct
{
   int futex_id;
} futex_t;

/* Futex initialize and destroy functions  */
_PROTOTYPE( int futex_init, (futex_t *futex));
_PROTOTYPE( int futex_destroy, (futex_t *futex));

/* Lock and unlock futex */
_PROTOTYPE( int futex_lock, (futex_t *futex));
_PROTOTYPE( int futex_unlock, (futex_t *futex));


#endif /* _SYS_FUTEX_H */

plik usr/src/lib/libc/sysvipc/futex.c

Code:


#include <lib.h>

#include <sys/futex.h>

PUBLIC int futex_init (futex_t *futex)
{

   return 0;
}

PUBLIC int futex_destroy (futex_t *futex)
{
   return 0;
}

PUBLIC int futex_lock (futex_t *futex)
{

   return 0;
}

PUBLIC int futex_unlock (futex_t *futex)
{
   return 0;
}


zbudowalem blibliotekę poleceniem
Code:

make includes gnu-includes libraries gnu-libraries

wypakowałem katalog testowy do /home,
a gdy próbuję zbudować numbers.c dostaję błąd: futex_t' undeclared

jakieś pomysły, o czym mogłem zapomnieć?

5ca

Liczba postów : 24
Join date : 2010-11-03

View user profile

Back to top Go down

Re: Zadanie 3

Post by canonier on Sun Jan 22, 2012 10:04 pm

raczej nie tak:
plik usr/src/include/sys.futex.h
tylko tak:
plik usr/src/include/sys/futex.h

canonier

Liczba postów : 27
Join date : 2011-05-05

View user profile

Back to top Go down

Re: Zadanie 3

Post by 5ca on Sun Jan 22, 2012 10:08 pm

canonier wrote:raczej nie tak:
plik usr/src/include/sys.futex.h
tylko tak:
plik usr/src/include/sys/futex.h

literówkę w poście strzeliłem, w systemie mam usr/src/include/sys/futex.h, a mimo to nie widzę struktury futex_t...

5ca

Liczba postów : 24
Join date : 2010-11-03

View user profile

Back to top Go down

Re: Zadanie 3

Post by kw on Sun Jan 22, 2012 11:43 pm

Makefile w folderach sys musisz poprawić.

kw

Liczba postów : 62
Join date : 2010-11-25

View user profile

Back to top Go down

Re: Zadanie 3

Post by magdov on Mon Jan 23, 2012 1:24 am

Co trzeba zrobić, aby przy kompilacji testów przykładowych nie wyskakiwał błąd:

/tmp/ccgTIeGK.o:/tmp/ccgTIeGK.o:(.text+0x16): undefined reference to '_futex_init'

I podobnie dla pozostałych funkcji...

Generalnie wywołania systemowe mam nazwane do_futex_costam ale kompletnie nie rozumiem skąd się bierze ten błąd...

magdov

Liczba postów : 37
Join date : 2010-10-12
Age : 27

View user profile

Back to top Go down

Re: Zadanie 3

Post by Bartek on Mon Jan 23, 2012 1:27 am

Miałem tak jak w /usr/src robiłem make libraries zamiast make gnu-includes gnu-libraries

Bartek

Liczba postów : 21
Join date : 2010-10-12

View user profile

Back to top Go down

Re: Zadanie 3

Post by Sponsored content


Sponsored content


Back to top Go down

Page 2 of 3 Previous  1, 2, 3  Next

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum