Re: [PATCH] comedi/comedi.h: cleanup coding style

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi George,

[auto build test ERROR on staging/staging-testing]
[also build test ERROR on v4.4-rc5 next-20151214]

url:    https://github.com/0day-ci/linux/commits/George-Kobiashvili/comedi-comedi-h-cleanup-coding-style/20151214-175007
config: i386-randconfig-s0-201550 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All error/warnings (new ones prefixed by >>):

   In file included from drivers/staging/comedi/comedidev.h:28:0,
                    from drivers/staging/comedi/comedi_pci.h:24,
                    from drivers/staging/comedi/comedi_pci.c:22:
>> drivers/staging/comedi/comedi.h:712:38: warning: "/*" within comment [-Wcomment]
     NI_GPCT_ARM_PAIRED_IMMEDIATE = 0x1, /* Start both the counter
                                         ^
>> drivers/staging/comedi/comedi.h:722:2: warning: data definition has no type or storage class
     NI_GPCT_ARM_UNKNOWN = 0x1000,
     ^
>> drivers/staging/comedi/comedi.h:722:2: error: type defaults to 'int' in declaration of 'NI_GPCT_ARM_UNKNOWN' [-Werror=implicit-int]
>> drivers/staging/comedi/comedi.h:723:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/comedi.h:824:34: warning: "/*" within comment [-Wcomment]
     NI_660X_PFI_OUTPUT_COUNTER = 1, /* counter */
                                     ^
   drivers/staging/comedi/comedi.h:825:2: warning: data definition has no type or storage class
     NI_660X_PFI_OUTPUT_DIO = 2, /* static digital output */
     ^
>> drivers/staging/comedi/comedi.h:825:2: error: type defaults to 'int' in declaration of 'NI_660X_PFI_OUTPUT_DIO' [-Werror=implicit-int]
   drivers/staging/comedi/comedi.h:826:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/comedi.h:862:1: warning: "/*" within comment [-Wcomment]
    /* scan_begin_src for scan_begin_arg==TRIG_EXT with analog output command on NI
    ^
   drivers/staging/comedi/comedi.h:873:42: warning: "/*" within comment [-Wcomment]
     NI_FREQ_OUT_TIMEBASE_1_DIV_2_CLOCK_SRC, /* 10 MHz */
                                             ^
>> drivers/staging/comedi/comedi.h:875:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/comedi.h:881:22: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_CLKN, /* per channel external clock
                         ^
   drivers/staging/comedi/comedi.h:886:23: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_10MHZ, /* 10 MHz internal clock */
                          ^
   drivers/staging/comedi/comedi.h:887:2: warning: data definition has no type or storage class
     AMPLC_DIO_CLK_1MHZ, /* 1 MHz internal clock */
     ^
>> drivers/staging/comedi/comedi.h:887:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1MHZ' [-Werror=implicit-int]
>> drivers/staging/comedi/comedi.h:888:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_100KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_100KHZ, /* 100 kHz internal clock */
     ^
>> drivers/staging/comedi/comedi.h:889:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_10KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_10KHZ, /* 10 kHz internal clock */
     ^
>> drivers/staging/comedi/comedi.h:890:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_1KHZ, /* 1 kHz internal clock */
     ^
>> drivers/staging/comedi/comedi.h:891:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_OUTNM1' [-Werror=implicit-int]
     AMPLC_DIO_CLK_OUTNM1, /* output of preceding counter channel
     ^
   drivers/staging/comedi/comedi.h:899:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_EXT, /* per chip external input pin */
                        ^
>> drivers/staging/comedi/comedi.h:901:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_VCC' [-Werror=implicit-int]
     AMPLC_DIO_CLK_VCC, /* clock input HIGH */
     ^
>> drivers/staging/comedi/comedi.h:902:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_GND' [-Werror=implicit-int]
     AMPLC_DIO_CLK_GND, /* clock input LOW */
     ^
>> drivers/staging/comedi/comedi.h:903:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_PAT_PRESENT' [-Werror=implicit-int]
     AMPLC_DIO_CLK_PAT_PRESENT, /* "pattern present" signal */
     ^
   drivers/staging/comedi/comedi.h:905:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/comedi.h:911:25: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_TS_CLK_1GHZ, /* 1 ns period with 20 ns granularity */
                            ^
   drivers/staging/comedi/comedi.h:912:2: warning: data definition has no type or storage class
     AMPLC_DIO_TS_CLK_1MHZ, /* 1 us period */
     ^
>> drivers/staging/comedi/comedi.h:912:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_TS_CLK_1MHZ' [-Werror=implicit-int]
   drivers/staging/comedi/comedi.h:914:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/comedi.h:920:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_GAT_VCC, /* internal high logic level */
                        ^
   drivers/staging/comedi/comedi.h:921:2: warning: data definition has no type or storage class
     AMPLC_DIO_GAT_GND, /* internal low logic level */
     ^
>> drivers/staging/comedi/comedi.h:921:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GND' [-Werror=implicit-int]
>> drivers/staging/comedi/comedi.h:922:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_GATN, /* per channel external gate input */
     ^
>> drivers/staging/comedi/comedi.h:923:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NOUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NOUTNM2, /* negated output of counter channel
     ^
   drivers/staging/comedi/comedi.h:935:2: warning: "/*" within comment [-Wcomment]
     /* the following are "enhanced" gate sources for PCIe models */
     ^
>> drivers/staging/comedi/comedi.h:936:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NGATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NGATN = 6, /* negated per channel gate input */
     ^
>> drivers/staging/comedi/comedi.h:937:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_OUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_OUTNM2, /* non-negated output of counter
     ^
--
   In file included from drivers/staging/comedi/drivers/../comedidev.h:28:0,
                    from drivers/staging/comedi/drivers/comedi_8254.c:129:
>> drivers/staging/comedi/drivers/../comedi.h:712:38: warning: "/*" within comment [-Wcomment]
     NI_GPCT_ARM_PAIRED_IMMEDIATE = 0x1, /* Start both the counter
                                         ^
>> drivers/staging/comedi/drivers/../comedi.h:722:2: warning: data definition has no type or storage class
     NI_GPCT_ARM_UNKNOWN = 0x1000,
     ^
>> drivers/staging/comedi/drivers/../comedi.h:722:2: error: type defaults to 'int' in declaration of 'NI_GPCT_ARM_UNKNOWN' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:723:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:824:34: warning: "/*" within comment [-Wcomment]
     NI_660X_PFI_OUTPUT_COUNTER = 1, /* counter */
                                     ^
   drivers/staging/comedi/drivers/../comedi.h:825:2: warning: data definition has no type or storage class
     NI_660X_PFI_OUTPUT_DIO = 2, /* static digital output */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:825:2: error: type defaults to 'int' in declaration of 'NI_660X_PFI_OUTPUT_DIO' [-Werror=implicit-int]
   drivers/staging/comedi/drivers/../comedi.h:826:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:862:1: warning: "/*" within comment [-Wcomment]
    /* scan_begin_src for scan_begin_arg==TRIG_EXT with analog output command on NI
    ^
   drivers/staging/comedi/drivers/../comedi.h:873:42: warning: "/*" within comment [-Wcomment]
     NI_FREQ_OUT_TIMEBASE_1_DIV_2_CLOCK_SRC, /* 10 MHz */
                                             ^
>> drivers/staging/comedi/drivers/../comedi.h:875:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:881:22: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_CLKN, /* per channel external clock
                         ^
   drivers/staging/comedi/drivers/../comedi.h:886:23: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_10MHZ, /* 10 MHz internal clock */
                          ^
   drivers/staging/comedi/drivers/../comedi.h:887:2: warning: data definition has no type or storage class
     AMPLC_DIO_CLK_1MHZ, /* 1 MHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:887:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1MHZ' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:888:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_100KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_100KHZ, /* 100 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:889:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_10KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_10KHZ, /* 10 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:890:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_1KHZ, /* 1 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:891:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_OUTNM1' [-Werror=implicit-int]
     AMPLC_DIO_CLK_OUTNM1, /* output of preceding counter channel
     ^
   drivers/staging/comedi/drivers/../comedi.h:899:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_EXT, /* per chip external input pin */
                        ^
>> drivers/staging/comedi/drivers/../comedi.h:901:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_VCC' [-Werror=implicit-int]
     AMPLC_DIO_CLK_VCC, /* clock input HIGH */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:902:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_GND' [-Werror=implicit-int]
     AMPLC_DIO_CLK_GND, /* clock input LOW */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:903:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_PAT_PRESENT' [-Werror=implicit-int]
     AMPLC_DIO_CLK_PAT_PRESENT, /* "pattern present" signal */
     ^
   drivers/staging/comedi/drivers/../comedi.h:905:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:911:25: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_TS_CLK_1GHZ, /* 1 ns period with 20 ns granularity */
                            ^
   drivers/staging/comedi/drivers/../comedi.h:912:2: warning: data definition has no type or storage class
     AMPLC_DIO_TS_CLK_1MHZ, /* 1 us period */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:912:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_TS_CLK_1MHZ' [-Werror=implicit-int]
   drivers/staging/comedi/drivers/../comedi.h:914:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:920:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_GAT_VCC, /* internal high logic level */
                        ^
   drivers/staging/comedi/drivers/../comedi.h:921:2: warning: data definition has no type or storage class
     AMPLC_DIO_GAT_GND, /* internal low logic level */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:921:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GND' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:922:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_GATN, /* per channel external gate input */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:923:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NOUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NOUTNM2, /* negated output of counter channel
     ^
   drivers/staging/comedi/drivers/../comedi.h:935:2: warning: "/*" within comment [-Wcomment]
     /* the following are "enhanced" gate sources for PCIe models */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:936:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NGATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NGATN = 6, /* negated per channel gate input */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:937:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_OUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_OUTNM2, /* non-negated output of counter
     ^
--
   In file included from drivers/staging/comedi/drivers/../comedidev.h:28:0,
                    from drivers/staging/comedi/drivers/ni_atmio.c:94:
>> drivers/staging/comedi/drivers/../comedi.h:712:38: warning: "/*" within comment [-Wcomment]
     NI_GPCT_ARM_PAIRED_IMMEDIATE = 0x1, /* Start both the counter
                                         ^
>> drivers/staging/comedi/drivers/../comedi.h:722:2: warning: data definition has no type or storage class
     NI_GPCT_ARM_UNKNOWN = 0x1000,
     ^
>> drivers/staging/comedi/drivers/../comedi.h:722:2: error: type defaults to 'int' in declaration of 'NI_GPCT_ARM_UNKNOWN' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:723:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:824:34: warning: "/*" within comment [-Wcomment]
     NI_660X_PFI_OUTPUT_COUNTER = 1, /* counter */
                                     ^
   drivers/staging/comedi/drivers/../comedi.h:825:2: warning: data definition has no type or storage class
     NI_660X_PFI_OUTPUT_DIO = 2, /* static digital output */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:825:2: error: type defaults to 'int' in declaration of 'NI_660X_PFI_OUTPUT_DIO' [-Werror=implicit-int]
   drivers/staging/comedi/drivers/../comedi.h:826:1: error: expected identifier or '(' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:862:1: warning: "/*" within comment [-Wcomment]
    /* scan_begin_src for scan_begin_arg==TRIG_EXT with analog output command on NI
    ^
   drivers/staging/comedi/drivers/../comedi.h:873:42: warning: "/*" within comment [-Wcomment]
     NI_FREQ_OUT_TIMEBASE_1_DIV_2_CLOCK_SRC, /* 10 MHz */
                                             ^
>> drivers/staging/comedi/drivers/../comedi.h:875:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:881:22: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_CLKN, /* per channel external clock
                         ^
   drivers/staging/comedi/drivers/../comedi.h:886:23: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_10MHZ, /* 10 MHz internal clock */
                          ^
   drivers/staging/comedi/drivers/../comedi.h:887:2: warning: data definition has no type or storage class
     AMPLC_DIO_CLK_1MHZ, /* 1 MHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:887:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1MHZ' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:888:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_100KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_100KHZ, /* 100 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:889:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_10KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_10KHZ, /* 10 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:890:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_1KHZ' [-Werror=implicit-int]
     AMPLC_DIO_CLK_1KHZ, /* 1 kHz internal clock */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:891:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_OUTNM1' [-Werror=implicit-int]
     AMPLC_DIO_CLK_OUTNM1, /* output of preceding counter channel
     ^
   drivers/staging/comedi/drivers/../comedi.h:899:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_CLK_EXT, /* per chip external input pin */
                        ^
>> drivers/staging/comedi/drivers/../comedi.h:901:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_VCC' [-Werror=implicit-int]
     AMPLC_DIO_CLK_VCC, /* clock input HIGH */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:902:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_GND' [-Werror=implicit-int]
     AMPLC_DIO_CLK_GND, /* clock input LOW */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:903:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_CLK_PAT_PRESENT' [-Werror=implicit-int]
     AMPLC_DIO_CLK_PAT_PRESENT, /* "pattern present" signal */
     ^
   drivers/staging/comedi/drivers/../comedi.h:905:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:911:25: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_TS_CLK_1GHZ, /* 1 ns period with 20 ns granularity */
                            ^
   drivers/staging/comedi/drivers/../comedi.h:912:2: warning: data definition has no type or storage class
     AMPLC_DIO_TS_CLK_1MHZ, /* 1 us period */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:912:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_TS_CLK_1MHZ' [-Werror=implicit-int]
   drivers/staging/comedi/drivers/../comedi.h:914:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '}' token
    };
    ^
   drivers/staging/comedi/drivers/../comedi.h:920:21: warning: "/*" within comment [-Wcomment]
     AMPLC_DIO_GAT_VCC, /* internal high logic level */
                        ^
   drivers/staging/comedi/drivers/../comedi.h:921:2: warning: data definition has no type or storage class
     AMPLC_DIO_GAT_GND, /* internal low logic level */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:921:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GND' [-Werror=implicit-int]
>> drivers/staging/comedi/drivers/../comedi.h:922:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_GATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_GATN, /* per channel external gate input */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:923:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NOUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NOUTNM2, /* negated output of counter channel
     ^
   drivers/staging/comedi/drivers/../comedi.h:935:2: warning: "/*" within comment [-Wcomment]
     /* the following are "enhanced" gate sources for PCIe models */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:936:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_NGATN' [-Werror=implicit-int]
     AMPLC_DIO_GAT_NGATN = 6, /* negated per channel gate input */
     ^
>> drivers/staging/comedi/drivers/../comedi.h:937:2: error: type defaults to 'int' in declaration of 'AMPLC_DIO_GAT_OUTNM2' [-Werror=implicit-int]
     AMPLC_DIO_GAT_OUTNM2, /* non-negated output of counter
     ^
..

vim +722 drivers/staging/comedi/comedi.h

ed9eccbe David Schleef      2008-11-04  706  
ed9eccbe David Schleef      2008-11-04  707  /* start sources for ni general-purpose counters for use with
3e63c62e George Kobiashvili 2015-12-14  708   * INSN_CONFIG_ARM
3e63c62e George Kobiashvili 2015-12-14  709   * /
ed9eccbe David Schleef      2008-11-04  710  enum ni_gpct_arm_source {
ed9eccbe David Schleef      2008-11-04  711  	NI_GPCT_ARM_IMMEDIATE = 0x0,
b464f791 Mark Rankilor      2010-05-13 @712  	NI_GPCT_ARM_PAIRED_IMMEDIATE = 0x1, /* Start both the counter
b464f791 Mark Rankilor      2010-05-13  713  					     * and the adjacent paired
3e63c62e George Kobiashvili 2015-12-14  714  					     * counter simultaneously
3e63c62e George Kobiashvili 2015-12-14  715  					     */
b464f791 Mark Rankilor      2010-05-13  716  	/* NI doesn't document bits for selecting hardware arm triggers.
b464f791 Mark Rankilor      2010-05-13  717  	 * If the NI_GPCT_ARM_UNKNOWN bit is set, we will pass the least
b464f791 Mark Rankilor      2010-05-13  718  	 * significant bits (3 bits for 660x or 5 bits for m-series)
b464f791 Mark Rankilor      2010-05-13  719  	 * through to the hardware.  This will at least allow someone to
3e63c62e George Kobiashvili 2015-12-14  720  	 * figure out what the bits do later.
3e63c62e George Kobiashvili 2015-12-14  721  	 */
ed9eccbe David Schleef      2008-11-04 @722  	NI_GPCT_ARM_UNKNOWN = 0x1000,
ed9eccbe David Schleef      2008-11-04 @723  };
ed9eccbe David Schleef      2008-11-04  724  
ed9eccbe David Schleef      2008-11-04  725  /* digital filtering options for ni 660x for use with INSN_CONFIG_FILTER. */
ed9eccbe David Schleef      2008-11-04  726  enum ni_gpct_filter_select {
ed9eccbe David Schleef      2008-11-04  727  	NI_GPCT_FILTER_OFF = 0x0,
ed9eccbe David Schleef      2008-11-04  728  	NI_GPCT_FILTER_TIMEBASE_3_SYNC = 0x1,
ed9eccbe David Schleef      2008-11-04  729  	NI_GPCT_FILTER_100x_TIMEBASE_1 = 0x2,
ed9eccbe David Schleef      2008-11-04  730  	NI_GPCT_FILTER_20x_TIMEBASE_1 = 0x3,
ed9eccbe David Schleef      2008-11-04  731  	NI_GPCT_FILTER_10x_TIMEBASE_1 = 0x4,
ed9eccbe David Schleef      2008-11-04  732  	NI_GPCT_FILTER_2x_TIMEBASE_1 = 0x5,
ed9eccbe David Schleef      2008-11-04  733  	NI_GPCT_FILTER_2x_TIMEBASE_3 = 0x6
ed9eccbe David Schleef      2008-11-04  734  };
ed9eccbe David Schleef      2008-11-04  735  
e0dcef71 Greg Kroah-Hartman 2008-11-13  736  /* PFI digital filtering options for ni m-series for use with
3e63c62e George Kobiashvili 2015-12-14  737   * INSN_CONFIG_FILTER.
3e63c62e George Kobiashvili 2015-12-14  738   */
ed9eccbe David Schleef      2008-11-04  739  enum ni_pfi_filter_select {
ed9eccbe David Schleef      2008-11-04  740  	NI_PFI_FILTER_OFF = 0x0,
ed9eccbe David Schleef      2008-11-04  741  	NI_PFI_FILTER_125ns = 0x1,
ed9eccbe David Schleef      2008-11-04  742  	NI_PFI_FILTER_6425ns = 0x2,
ed9eccbe David Schleef      2008-11-04  743  	NI_PFI_FILTER_2550us = 0x3
ed9eccbe David Schleef      2008-11-04  744  };
ed9eccbe David Schleef      2008-11-04  745  
ed9eccbe David Schleef      2008-11-04  746  /* master clock sources for ni mio boards and INSN_CONFIG_SET_CLOCK_SRC */
ed9eccbe David Schleef      2008-11-04  747  enum ni_mio_clock_source {
ed9eccbe David Schleef      2008-11-04  748  	NI_MIO_INTERNAL_CLOCK = 0,
e0dcef71 Greg Kroah-Hartman 2008-11-13  749  	NI_MIO_RTSI_CLOCK = 1,	/* doesn't work for m-series, use
3e63c62e George Kobiashvili 2015-12-14  750  				 * NI_MIO_PLL_RTSI_CLOCK()
3e63c62e George Kobiashvili 2015-12-14  751  				 */
ed9eccbe David Schleef      2008-11-04  752  	/* the NI_MIO_PLL_* sources are m-series only */
ed9eccbe David Schleef      2008-11-04  753  	NI_MIO_PLL_PXI_STAR_TRIGGER_CLOCK = 2,
ed9eccbe David Schleef      2008-11-04  754  	NI_MIO_PLL_PXI10_CLOCK = 3,
ed9eccbe David Schleef      2008-11-04  755  	NI_MIO_PLL_RTSI0_CLOCK = 4
ed9eccbe David Schleef      2008-11-04  756  };
40af57a2 H Hartley Sweeten  2014-07-18  757  
40af57a2 H Hartley Sweeten  2014-07-18  758  #define NI_MIO_PLL_RTSI_CLOCK(x)	(NI_MIO_PLL_RTSI0_CLOCK + (x))
ed9eccbe David Schleef      2008-11-04  759  
ed9eccbe David Schleef      2008-11-04  760  /* Signals which can be routed to an NI RTSI pin with INSN_CONFIG_SET_ROUTING.
3e63c62e George Kobiashvili 2015-12-14  761   * The numbers assigned are not arbitrary, they correspond to the bits required
3e63c62e George Kobiashvili 2015-12-14  762   * to program the board.
3e63c62e George Kobiashvili 2015-12-14  763   */
ed9eccbe David Schleef      2008-11-04  764  enum ni_rtsi_routing {
ed9eccbe David Schleef      2008-11-04  765  	NI_RTSI_OUTPUT_ADR_START1 = 0,
ed9eccbe David Schleef      2008-11-04  766  	NI_RTSI_OUTPUT_ADR_START2 = 1,
ed9eccbe David Schleef      2008-11-04  767  	NI_RTSI_OUTPUT_SCLKG = 2,
ed9eccbe David Schleef      2008-11-04  768  	NI_RTSI_OUTPUT_DACUPDN = 3,
ed9eccbe David Schleef      2008-11-04  769  	NI_RTSI_OUTPUT_DA_START1 = 4,
ed9eccbe David Schleef      2008-11-04  770  	NI_RTSI_OUTPUT_G_SRC0 = 5,
ed9eccbe David Schleef      2008-11-04  771  	NI_RTSI_OUTPUT_G_GATE0 = 6,
ed9eccbe David Schleef      2008-11-04  772  	NI_RTSI_OUTPUT_RGOUT0 = 7,
ed9eccbe David Schleef      2008-11-04  773  	NI_RTSI_OUTPUT_RTSI_BRD_0 = 8,
b464f791 Mark Rankilor      2010-05-13  774  	NI_RTSI_OUTPUT_RTSI_OSC = 12	/* pre-m-series always have RTSI
3e63c62e George Kobiashvili 2015-12-14  775  					 * clock on line 7
3e63c62e George Kobiashvili 2015-12-14  776  					 */
ed9eccbe David Schleef      2008-11-04  777  };
40af57a2 H Hartley Sweeten  2014-07-18  778  
40af57a2 H Hartley Sweeten  2014-07-18  779  #define NI_RTSI_OUTPUT_RTSI_BRD(x)	(NI_RTSI_OUTPUT_RTSI_BRD_0 + (x))
ed9eccbe David Schleef      2008-11-04  780  
e0dcef71 Greg Kroah-Hartman 2008-11-13  781  /* Signals which can be routed to an NI PFI pin on an m-series board with
e0dcef71 Greg Kroah-Hartman 2008-11-13  782   * INSN_CONFIG_SET_ROUTING.  These numbers are also returned by
e0dcef71 Greg Kroah-Hartman 2008-11-13  783   * INSN_CONFIG_GET_ROUTING on pre-m-series boards, even though their routing
e0dcef71 Greg Kroah-Hartman 2008-11-13  784   * cannot be changed.  The numbers assigned are not arbitrary, they correspond
3e63c62e George Kobiashvili 2015-12-14  785   * to the bits required to program the board.
3e63c62e George Kobiashvili 2015-12-14  786   */
ed9eccbe David Schleef      2008-11-04  787  enum ni_pfi_routing {
ed9eccbe David Schleef      2008-11-04  788  	NI_PFI_OUTPUT_PFI_DEFAULT = 0,
ed9eccbe David Schleef      2008-11-04  789  	NI_PFI_OUTPUT_AI_START1 = 1,
ed9eccbe David Schleef      2008-11-04  790  	NI_PFI_OUTPUT_AI_START2 = 2,
ed9eccbe David Schleef      2008-11-04  791  	NI_PFI_OUTPUT_AI_CONVERT = 3,
ed9eccbe David Schleef      2008-11-04  792  	NI_PFI_OUTPUT_G_SRC1 = 4,
ed9eccbe David Schleef      2008-11-04  793  	NI_PFI_OUTPUT_G_GATE1 = 5,
ed9eccbe David Schleef      2008-11-04  794  	NI_PFI_OUTPUT_AO_UPDATE_N = 6,
ed9eccbe David Schleef      2008-11-04  795  	NI_PFI_OUTPUT_AO_START1 = 7,
ed9eccbe David Schleef      2008-11-04  796  	NI_PFI_OUTPUT_AI_START_PULSE = 8,
ed9eccbe David Schleef      2008-11-04  797  	NI_PFI_OUTPUT_G_SRC0 = 9,
ed9eccbe David Schleef      2008-11-04  798  	NI_PFI_OUTPUT_G_GATE0 = 10,
ed9eccbe David Schleef      2008-11-04  799  	NI_PFI_OUTPUT_EXT_STROBE = 11,
ed9eccbe David Schleef      2008-11-04  800  	NI_PFI_OUTPUT_AI_EXT_MUX_CLK = 12,
ed9eccbe David Schleef      2008-11-04  801  	NI_PFI_OUTPUT_GOUT0 = 13,
ed9eccbe David Schleef      2008-11-04  802  	NI_PFI_OUTPUT_GOUT1 = 14,
ed9eccbe David Schleef      2008-11-04  803  	NI_PFI_OUTPUT_FREQ_OUT = 15,
ed9eccbe David Schleef      2008-11-04  804  	NI_PFI_OUTPUT_PFI_DO = 16,
ed9eccbe David Schleef      2008-11-04  805  	NI_PFI_OUTPUT_I_ATRIG = 17,
ed9eccbe David Schleef      2008-11-04  806  	NI_PFI_OUTPUT_RTSI0 = 18,
ed9eccbe David Schleef      2008-11-04  807  	NI_PFI_OUTPUT_PXI_STAR_TRIGGER_IN = 26,
ed9eccbe David Schleef      2008-11-04  808  	NI_PFI_OUTPUT_SCXI_TRIG1 = 27,
ed9eccbe David Schleef      2008-11-04  809  	NI_PFI_OUTPUT_DIO_CHANGE_DETECT_RTSI = 28,
ed9eccbe David Schleef      2008-11-04  810  	NI_PFI_OUTPUT_CDI_SAMPLE = 29,
ed9eccbe David Schleef      2008-11-04  811  	NI_PFI_OUTPUT_CDO_UPDATE = 30
ed9eccbe David Schleef      2008-11-04  812  };
40af57a2 H Hartley Sweeten  2014-07-18  813  
40af57a2 H Hartley Sweeten  2014-07-18  814  #define NI_PFI_OUTPUT_RTSI(x)		(NI_PFI_OUTPUT_RTSI0 + (x))
ed9eccbe David Schleef      2008-11-04  815  
ed9eccbe David Schleef      2008-11-04  816  /* Signals which can be routed to output on a NI PFI pin on a 660x board
3e63c62e George Kobiashvili 2015-12-14  817   * with INSN_CONFIG_SET_ROUTING.  The numbers assigned are
3e63c62e George Kobiashvili 2015-12-14  818   * not arbitrary, they correspond to the bits required
3e63c62e George Kobiashvili 2015-12-14  819   * to program the board.  Lines 0 to 7 can only be set to
3e63c62e George Kobiashvili 2015-12-14  820   * NI_660X_PFI_OUTPUT_DIO.  Lines 32 to 39 can only be set to
3e63c62e George Kobiashvili 2015-12-14  821   * NI_660X_PFI_OUTPUT_COUNTER.
3e63c62e George Kobiashvili 2015-12-14  822   * /
ed9eccbe David Schleef      2008-11-04  823  enum ni_660x_pfi_routing {
e0dcef71 Greg Kroah-Hartman 2008-11-13  824  	NI_660X_PFI_OUTPUT_COUNTER = 1,	/* counter */
e0dcef71 Greg Kroah-Hartman 2008-11-13 @825  	NI_660X_PFI_OUTPUT_DIO = 2,	/* static digital output */
ed9eccbe David Schleef      2008-11-04 @826  };
ed9eccbe David Schleef      2008-11-04  827  
e0dcef71 Greg Kroah-Hartman 2008-11-13  828  /* NI External Trigger lines.  These values are not arbitrary, but are related
e0dcef71 Greg Kroah-Hartman 2008-11-13  829   * to the bits required to program the board (offset by 1 for historical
3e63c62e George Kobiashvili 2015-12-14  830   * reasons).
3e63c62e George Kobiashvili 2015-12-14  831   */
40af57a2 H Hartley Sweeten  2014-07-18  832  #define NI_EXT_PFI(x)			(NI_USUAL_PFI_SELECT(x) - 1)
40af57a2 H Hartley Sweeten  2014-07-18  833  #define NI_EXT_RTSI(x)			(NI_USUAL_RTSI_SELECT(x) - 1)
ed9eccbe David Schleef      2008-11-04  834  
ed9eccbe David Schleef      2008-11-04  835  /* status bits for INSN_CONFIG_GET_COUNTER_STATUS */
ed9eccbe David Schleef      2008-11-04  836  enum comedi_counter_status_flags {
ed9eccbe David Schleef      2008-11-04  837  	COMEDI_COUNTER_ARMED = 0x1,
ed9eccbe David Schleef      2008-11-04  838  	COMEDI_COUNTER_COUNTING = 0x2,
ed9eccbe David Schleef      2008-11-04  839  	COMEDI_COUNTER_TERMINAL_COUNT = 0x4,
ed9eccbe David Schleef      2008-11-04  840  };
ed9eccbe David Schleef      2008-11-04  841  
e0dcef71 Greg Kroah-Hartman 2008-11-13  842  /* Clock sources for CDIO subdevice on NI m-series boards.  Used as the
e0dcef71 Greg Kroah-Hartman 2008-11-13  843   * scan_begin_arg for a comedi_command. These sources may also be bitwise-or'd
3e63c62e George Kobiashvili 2015-12-14  844   * with CR_INVERT to change polarity.
3e63c62e George Kobiashvili 2015-12-14  845   * /
ed9eccbe David Schleef      2008-11-04  846  enum ni_m_series_cdio_scan_begin_src {
ed9eccbe David Schleef      2008-11-04  847  	NI_CDIO_SCAN_BEGIN_SRC_GROUND = 0,
ed9eccbe David Schleef      2008-11-04  848  	NI_CDIO_SCAN_BEGIN_SRC_AI_START = 18,
ed9eccbe David Schleef      2008-11-04  849  	NI_CDIO_SCAN_BEGIN_SRC_AI_CONVERT = 19,
ed9eccbe David Schleef      2008-11-04  850  	NI_CDIO_SCAN_BEGIN_SRC_PXI_STAR_TRIGGER = 20,
ed9eccbe David Schleef      2008-11-04  851  	NI_CDIO_SCAN_BEGIN_SRC_G0_OUT = 28,
ed9eccbe David Schleef      2008-11-04  852  	NI_CDIO_SCAN_BEGIN_SRC_G1_OUT = 29,
ed9eccbe David Schleef      2008-11-04  853  	NI_CDIO_SCAN_BEGIN_SRC_ANALOG_TRIGGER = 30,
ed9eccbe David Schleef      2008-11-04  854  	NI_CDIO_SCAN_BEGIN_SRC_AO_UPDATE = 31,
ed9eccbe David Schleef      2008-11-04  855  	NI_CDIO_SCAN_BEGIN_SRC_FREQ_OUT = 32,
ed9eccbe David Schleef      2008-11-04  856  	NI_CDIO_SCAN_BEGIN_SRC_DIO_CHANGE_DETECT_IRQ = 33
ed9eccbe David Schleef      2008-11-04  857  };
40af57a2 H Hartley Sweeten  2014-07-18  858  
40af57a2 H Hartley Sweeten  2014-07-18  859  #define NI_CDIO_SCAN_BEGIN_SRC_PFI(x)	NI_USUAL_PFI_SELECT(x)
40af57a2 H Hartley Sweeten  2014-07-18  860  #define NI_CDIO_SCAN_BEGIN_SRC_RTSI(x)	NI_USUAL_RTSI_SELECT(x)
ed9eccbe David Schleef      2008-11-04  861  
e0dcef71 Greg Kroah-Hartman 2008-11-13  862  /* scan_begin_src for scan_begin_arg==TRIG_EXT with analog output command on NI
e0dcef71 Greg Kroah-Hartman 2008-11-13  863   * boards.  These scan begin sources can also be bitwise-or'd with CR_INVERT to
3e63c62e George Kobiashvili 2015-12-14  864   * change polarity.
3e63c62e George Kobiashvili 2015-12-14  865   */
40af57a2 H Hartley Sweeten  2014-07-18  866  #define NI_AO_SCAN_BEGIN_SRC_PFI(x)	NI_USUAL_PFI_SELECT(x)
40af57a2 H Hartley Sweeten  2014-07-18  867  #define NI_AO_SCAN_BEGIN_SRC_RTSI(x)	NI_USUAL_RTSI_SELECT(x)
ed9eccbe David Schleef      2008-11-04  868  
ed9eccbe David Schleef      2008-11-04  869  /* Bits for setting a clock source with
3e63c62e George Kobiashvili 2015-12-14  870   * INSN_CONFIG_SET_CLOCK_SRC when using NI frequency output subdevice.
3e63c62e George Kobiashvili 2015-12-14  871   * /
ed9eccbe David Schleef      2008-11-04  872  enum ni_freq_out_clock_source_bits {
e0dcef71 Greg Kroah-Hartman 2008-11-13  873  	NI_FREQ_OUT_TIMEBASE_1_DIV_2_CLOCK_SRC,	/* 10 MHz */
e0dcef71 Greg Kroah-Hartman 2008-11-13  874  	NI_FREQ_OUT_TIMEBASE_2_CLOCK_SRC	/* 100 KHz */
ed9eccbe David Schleef      2008-11-04 @875  };
ed9eccbe David Schleef      2008-11-04  876  
ed9eccbe David Schleef      2008-11-04  877  /* Values for setting a clock source with INSN_CONFIG_SET_CLOCK_SRC for
3e63c62e George Kobiashvili 2015-12-14  878   * 8254 counter subdevices on Amplicon DIO boards (amplc_dio200 driver).
3e63c62e George Kobiashvili 2015-12-14  879   * /
ed9eccbe David Schleef      2008-11-04  880  enum amplc_dio_clock_source {
ed9eccbe David Schleef      2008-11-04 @881  	AMPLC_DIO_CLK_CLKN,	/* per channel external clock
3e63c62e George Kobiashvili 2015-12-14  882  				 * input/output pin (pin is only an
3e63c62e George Kobiashvili 2015-12-14  883  				 * input when clock source set to this
3e63c62e George Kobiashvili 2015-12-14  884  				 * value, otherwise it is an output)
3e63c62e George Kobiashvili 2015-12-14  885  				 * /
ed9eccbe David Schleef      2008-11-04 @886  	AMPLC_DIO_CLK_10MHZ,	/* 10 MHz internal clock */
ed9eccbe David Schleef      2008-11-04 @887  	AMPLC_DIO_CLK_1MHZ,	/* 1 MHz internal clock */
ed9eccbe David Schleef      2008-11-04 @888  	AMPLC_DIO_CLK_100KHZ,	/* 100 kHz internal clock */
ed9eccbe David Schleef      2008-11-04 @889  	AMPLC_DIO_CLK_10KHZ,	/* 10 kHz internal clock */
ed9eccbe David Schleef      2008-11-04 @890  	AMPLC_DIO_CLK_1KHZ,	/* 1 kHz internal clock */
ed9eccbe David Schleef      2008-11-04 @891  	AMPLC_DIO_CLK_OUTNM1,	/* output of preceding counter channel
3e63c62e George Kobiashvili 2015-12-14  892  				 * (for channel 0, preceding counter
3e63c62e George Kobiashvili 2015-12-14  893  				 * channel is channel 2 on preceding
3e63c62e George Kobiashvili 2015-12-14  894  				 * counter subdevice, for first counter
3e63c62e George Kobiashvili 2015-12-14  895  				 * subdevice, preceding counter
3e63c62e George Kobiashvili 2015-12-14  896  				 * subdevice is the last counter
3e63c62e George Kobiashvili 2015-12-14  897  				 * subdevice)
3e63c62e George Kobiashvili 2015-12-14  898  				 * /
025d1f67 Ian Abbott         2012-10-24 @899  	AMPLC_DIO_CLK_EXT,	/* per chip external input pin */
025d1f67 Ian Abbott         2012-10-24  900  	/* the following are "enhanced" clock sources for PCIe models */
025d1f67 Ian Abbott         2012-10-24 @901  	AMPLC_DIO_CLK_VCC,	/* clock input HIGH */
025d1f67 Ian Abbott         2012-10-24 @902  	AMPLC_DIO_CLK_GND,	/* clock input LOW */
025d1f67 Ian Abbott         2012-10-24 @903  	AMPLC_DIO_CLK_PAT_PRESENT, /* "pattern present" signal */
025d1f67 Ian Abbott         2012-10-24  904  	AMPLC_DIO_CLK_20MHZ	/* 20 MHz internal clock */
ed9eccbe David Schleef      2008-11-04 @905  };
ed9eccbe David Schleef      2008-11-04  906  
c59515a8 Ian Abbott         2012-10-24  907  /* Values for setting a clock source with INSN_CONFIG_SET_CLOCK_SRC for
3e63c62e George Kobiashvili 2015-12-14  908   * timer subdevice on some Amplicon DIO PCIe boards (amplc_dio200 driver).
3e63c62e George Kobiashvili 2015-12-14  909   * /
c59515a8 Ian Abbott         2012-10-24  910  enum amplc_dio_ts_clock_src {
c59515a8 Ian Abbott         2012-10-24  911  	AMPLC_DIO_TS_CLK_1GHZ,	/* 1 ns period with 20 ns granularity */
c59515a8 Ian Abbott         2012-10-24 @912  	AMPLC_DIO_TS_CLK_1MHZ,	/* 1 us period */
c59515a8 Ian Abbott         2012-10-24  913  	AMPLC_DIO_TS_CLK_1KHZ	/* 1 ms period */
c59515a8 Ian Abbott         2012-10-24 @914  };
c59515a8 Ian Abbott         2012-10-24  915  
ed9eccbe David Schleef      2008-11-04  916  /* Values for setting a gate source with INSN_CONFIG_SET_GATE_SRC for
3e63c62e George Kobiashvili 2015-12-14  917   * 8254 counter subdevices on Amplicon DIO boards (amplc_dio200 driver).
3e63c62e George Kobiashvili 2015-12-14  918   * /
ed9eccbe David Schleef      2008-11-04  919  enum amplc_dio_gate_source {
ed9eccbe David Schleef      2008-11-04 @920  	AMPLC_DIO_GAT_VCC,	/* internal high logic level */
ed9eccbe David Schleef      2008-11-04 @921  	AMPLC_DIO_GAT_GND,	/* internal low logic level */
ed9eccbe David Schleef      2008-11-04  922  	AMPLC_DIO_GAT_GATN,	/* per channel external gate input */
ed9eccbe David Schleef      2008-11-04  923  	AMPLC_DIO_GAT_NOUTNM2,	/* negated output of counter channel
3e63c62e George Kobiashvili 2015-12-14  924  				 * minus 2 (for channels 0 or 1,

:::::: The code at line 722 was first introduced by commit
:::::: ed9eccbe8970f6eedc1b978c157caf1251a896d4 Staging: add comedi core

:::::: TO: David Schleef <ds@xxxxxxxxxxx>
:::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux