Kernel mit device cy bauen

iso88591

Member
Hallo!

Ich möchte gerne eine Cyclades Y multiserielle Karte in einem Rechner mit FreeBSD (amd64) zum Laufen bekommen. Für diese Karte gibt es den Treiber cy, die manpage dazu beschreibt ihn auch. Der Versuch, einen Kernel mit "device cy" zu bauen, endet wie folgt. Egal übrigens ob ich versuche auf FreeBSD 11.2 oder 12.1 zu bauen.

Was könnte ich übersehen haben!?

/usr/src/sys/dev/cy/cy.c:251:8: error: unknown type name 't_break_t'; did you
mean 'd_read_t'?
static t_break_t cybreak;
^~~~~~~~~
d_read_t
/usr/src/sys/sys/conf.h:116:13: note: 'd_read_t' declared here
typedef int d_read_t(struct cdev *dev, struct uio *uio, int ioflag);
^
/usr/src/sys/dev/cy/cy.c:252:8: error: unknown type name 't_modem_t'
static t_modem_t cymodem;
^
/usr/src/sys/dev/cy/cy.c:253:8: error: unknown type name 't_open_t'; did you
mean 'd_open_t'?
static t_open_t cyopen;
^~~~~~~~
d_open_t
/usr/src/sys/sys/conf.h:109:13: note: 'd_open_t' declared here
typedef int d_open_t(struct cdev *dev, int oflags, int devtype, struct t...
^
/usr/src/sys/dev/cy/cy.c:254:8: error: unknown type name 't_close_t'
static t_close_t cyclose;
^
/usr/src/sys/dev/cy/cy.c:411:19: error: implicit declaration of function
'ttyalloc' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
tp = com->tp = ttyalloc();
^
/usr/src/sys/dev/cy/cy.c:411:19: note: did you mean 'tty_alloc'?
/usr/src/sys/sys/tty.h:162:13: note: 'tty_alloc' declared here
struct tty *tty_alloc(struct ttydevsw *tsw, void *softc);
^
/usr/src/sys/dev/cy/cy.c:411:19: error: this function declaration is not a
prototype [-Werror,-Wstrict-prototypes]
tp = com->tp = ttyalloc();
^
/usr/src/sys/dev/cy/cy.c:411:17: error: incompatible integer to pointer
conversion assigning to 'struct tty *' from 'int'
[-Werror,-Wint-conversion]
tp = com->tp = ttyalloc();
^ ~~~~~~~~~~
/usr/src/sys/dev/cy/cy.c:412:8: error: no member named 't_open' in 'struct tty'
tp->t_open = cyopen;
~~ ^
/usr/src/sys/dev/cy/cy.c:413:8: error: no member named 't_close' in 'struct tty'
tp->t_close = cyclose;
~~ ^
/usr/src/sys/dev/cy/cy.c:414:8: error: no member named 't_oproc' in 'struct tty'
tp->t_oproc = cystart;
~~ ^
/usr/src/sys/dev/cy/cy.c:415:8: error: no member named 't_stop' in 'struct tty'
tp->t_stop = comstop;
~~ ^
/usr/src/sys/dev/cy/cy.c:416:8: error: no member named 't_param' in 'struct tty'
tp->t_param = cyparam;
~~ ^
/usr/src/sys/dev/cy/cy.c:417:8: error: no member named 't_break' in 'struct tty'
tp->t_break = cybreak;
~~ ^
/usr/src/sys/dev/cy/cy.c:418:8: error: no member named 't_modem' in 'struct tty'
tp->t_modem = cymodem;
~~ ^
/usr/src/sys/dev/cy/cy.c:419:8: error: no member named 't_sc' in 'struct tty'
tp->t_sc = com;
~~ ^
/usr/src/sys/dev/cy/cy.c:421:28: error: no member named 't_init_in' in
'struct tty'
if (cysetwater(com, tp->t_init_in.c_ispeed) != 0) {
~~ ^
/usr/src/sys/dev/cy/cy.c:436:4: error: implicit declaration of function
'ttycreate' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ttycreate(tp, TS_CALLOUT, "c%r%r",
^
/usr/src/sys/dev/cy/cy.c:436:4: error: this function declaration is not a
prototype [-Werror,-Wstrict-prototypes]
/usr/src/sys/dev/cy/cy.c:436:18: error: use of undeclared identifier
'TS_CALLOUT'
ttycreate(tp, TS_CALLOUT, "c%r%r",
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
*** Error code 1

Stop.
 
Ich fürchte, das kannst du vergessen. cy(4) wurde nie auf den neuen, mit FreeBSD 8.0 eingeführten TTY-Layer portiert und dann folgerichtig entfernt: https://svnweb.freebsd.org/base?view=revision&revision=317446

Später wurde er auf Bitten von Bruce Evans wieder eingefügt, er schrieb, dass er Patches hätte: https://lists.freebsd.org/pipermail/svn-src-all/2017-April/144411.html

Leider haben diese Patches es offensichtlich nie in den Tree geschafft. Bruce Evans ist vor einiger Zeit mit nur 68 Jahren gestorben, weshalb es wahrscheinlich auch nicht mehr passieren wird... Es würde mich nicht wundern, wenn cy(4) auf der Abschussliste für 13.0 landen wird.
 
Ich fürchte, das kannst du vergessen. cy(4) wurde nie auf den neuen, mit FreeBSD 8.0 eingeführten TTY-Layer portiert und dann folgerichtig entfernt: https://svnweb.freebsd.org/base?view=revision&revision=317446

Später wurde er auf Bitten von Bruce Evans wieder eingefügt, er schrieb, dass er Patches hätte: https://lists.freebsd.org/pipermail/svn-src-all/2017-April/144411.html

Leider haben diese Patches es offensichtlich nie in den Tree geschafft. Bruce Evans ist vor einiger Zeit mit nur 68 Jahren gestorben, weshalb es wahrscheinlich auch nicht mehr passieren wird... Es würde mich nicht wundern, wenn cy(4) auf der Abschussliste für 13.0 landen wird.

Oops. Hört sich schlecht an, R.I.P.

Auf NetBSD funktioniert cy. Kann man das portieren, ohne zu viel Ahnung von C und Systemprogrammierung haben zu müssen?
 
Machbar ist es sicherlich. Bruce schrieb ja, dass es nur knappe 300 Zeilen sind. Aber ich fürchte, dass man dafür schon etwas C können muss und - das ist sicher die größere Hürde - sich mit den Innereien des FreeBSD TTY-Layers auskennen muss.
 
Machbar ist es sicherlich. Bruce schrieb ja, dass es nur knappe 300 Zeilen sind. Aber ich fürchte, dass man dafür schon etwas C können muss und - das ist sicher die größere Hürde - sich mit den Innereien des FreeBSD TTY-Layers auskennen muss.

Okay, danke für die Einschätzung. Das ist dann eher kein Projekt für mich :-)
 
Zurück
Oben