2010-11-09 07:27:31

by Ramya Desai

[permalink] [raw]
Subject: Doubt about CRTSCTS preprocessor macro definition in termbits.h file

Dear All,

I did not understand the CRTSCTS preprocessor macro which is defined
in termbits.h file.

http://lxr.linux.no/linux+v2.6.36/include/asm-generic/termbits.h

As per the typedefs defined in the beginning of the file, the c_cflag
is unsigned int member in the struct termios structure. The CRTSCTS is
defined in the file as a 48 bit value.

#define CRTSCTS 020000000000 /* flow control */

I saw the following snippet in one of the serial applications.

struct termios newtio;
newtio.c_cflag = B9600 | CRTSCTS | CS8 | CLOCAL | CREAD;

My question is, the c_cflag is a 32 bit value member and the CRTSCTS
is a 48 bit value. How CRTSCTS is accommodates into c_cflag variable?
Please let me know, if my interpretation is wrong.

Thanks in advance.

Regards,
Ramya.


2010-11-09 16:56:51

by Milton Miller

[permalink] [raw]
Subject: (No subject header)


On Tue Nov 09 2010 around 02:27:38 EST, Ramya Desai wrote:
> I did not understand the CRTSCTS preprocessor macro which is defined
> in termbits.h file.
..
> As per the typedefs defined in the beginning of the file, the c_cflag
> is unsigned int member in the struct termios structure. The CRTSCTS is
> defined in the file as a 48 bit value.
>
> #define CRTSCTS 020000000000 /* flow control */

That is not a 48 bit value.

>
> I saw the following snippet in one of the serial applications.
>
> struct termios newtio;
> newtio.c_cflag = B9600 | CRTSCTS | CS8 | CLOCAL | CREAD;
>
> My question is, the c_cflag is a 32 bit value member and the CRTSCTS
> is a 48 bit value. How CRTSCTS is accommodates into c_cflag variable?
> Please let me know, if my interpretation is wrong.
>
> Thanks in advance.

Hint: constants in C may be expressed in base 16, 10, or 8.

milton

2010-11-09 17:52:15

by Andreas Mohr

[permalink] [raw]
Subject: Re: Doubt about CRTSCTS preprocessor macro definition in termbits.h file

Hi,

> My question is, the c_cflag is a 32 bit value member and the CRTSCTS
> is a 48 bit value. How CRTSCTS is accommodates into c_cflag variable?

One word: octal ;)

HTH & TFR (well... Thanks For Review),

Andreas Mohr