* [PATCH v1] speakup: Replace u_short with u16 for spk_chartab @ 2025-06-04 13:58 Jagadeesh Yalapalli 2025-06-04 14:58 ` Samuel Thibault 2025-06-05 5:08 ` [PATCH v2] speakup: Standardize character attribute types to u16 Jagadeesh Yalapalli 0 siblings, 2 replies; 4+ messages in thread From: Jagadeesh Yalapalli @ 2025-06-04 13:58 UTC (permalink / raw) To: William Hubbs Cc: Chris Brannon, Kirk Reiser, Samuel Thibault, Thomas Gleixner, Ingo Molnar, speakup, linux-kernel, Jagadeesh Yalapalli From: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> The spk_chartab array was previously declared as `u_short`, which is a non-standard type and may vary in size across platforms. Replace it with `u16` to ensure consistent 16-bit width and improve code portability and readability. Signed-off-by: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> --- drivers/accessibility/speakup/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index e68cf1d83787..34c7cb6a9b43 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -187,7 +187,7 @@ char *spk_default_chars[256] = { * initialized to default_chartab and user selectable via * /sys/module/speakup/parameters/chartab */ -u_short spk_chartab[256]; +u16 spk_chartab[256]; static u_short default_chartab[256] = { B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 0-7 */ -- 2.43.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v1] speakup: Replace u_short with u16 for spk_chartab 2025-06-04 13:58 [PATCH v1] speakup: Replace u_short with u16 for spk_chartab Jagadeesh Yalapalli @ 2025-06-04 14:58 ` Samuel Thibault 2025-06-05 5:08 ` [PATCH v2] speakup: Standardize character attribute types to u16 Jagadeesh Yalapalli 1 sibling, 0 replies; 4+ messages in thread From: Samuel Thibault @ 2025-06-04 14:58 UTC (permalink / raw) To: Jagadeesh Yalapalli Cc: William Hubbs, Chris Brannon, Kirk Reiser, Thomas Gleixner, Ingo Molnar, speakup, linux-kernel, Jagadeesh Yalapalli Hello, Jagadeesh Yalapalli, le mer. 04 juin 2025 13:58:36 +0000, a ecrit: > From: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> > > The spk_chartab array was previously declared as `u_short`, > which is a non-standard type and may vary in size across platforms. > Replace it with `u16` to ensure consistent 16-bit width and improve > code portability and readability. There is much more to it than just this line: there is also the declaration in speakup.h, and the comment above, and all related variables such as default_chartab, the variables in functions such as charclass, mask, char_type, ch_type, ... Samuel > Signed-off-by: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> > --- > drivers/accessibility/speakup/main.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c > index e68cf1d83787..34c7cb6a9b43 100644 > --- a/drivers/accessibility/speakup/main.c > +++ b/drivers/accessibility/speakup/main.c > @@ -187,7 +187,7 @@ char *spk_default_chars[256] = { > * initialized to default_chartab and user selectable via > * /sys/module/speakup/parameters/chartab > */ > -u_short spk_chartab[256]; > +u16 spk_chartab[256]; > > static u_short default_chartab[256] = { > B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 0-7 */ > -- > 2.43.0 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] speakup: Standardize character attribute types to u16 2025-06-04 13:58 [PATCH v1] speakup: Replace u_short with u16 for spk_chartab Jagadeesh Yalapalli 2025-06-04 14:58 ` Samuel Thibault @ 2025-06-05 5:08 ` Jagadeesh Yalapalli 2025-06-07 17:15 ` Samuel Thibault 1 sibling, 1 reply; 4+ messages in thread From: Jagadeesh Yalapalli @ 2025-06-05 5:08 UTC (permalink / raw) To: jagadeesharm14 Cc: chris, jagadeesh.yalapalli, kirk, linux-kernel, mingo, samuel.thibault, speakup, tglx, w.d.hubbs From: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> This change replaces non-portable `u_short` types with standardized `u16` throughout the speakup subsystem to ensure: 1. Consistent 16-bit width across all architectures. 2. Improved code portability and readability. 3. Elimination of platform-dependent type sizes. 4. Safe bitwise operations without sign-extension risks. Signed-off-by: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> --- drivers/accessibility/speakup/keyhelp.c | 10 +-- drivers/accessibility/speakup/kobjects.c | 4 +- drivers/accessibility/speakup/main.c | 74 ++++++++++---------- drivers/accessibility/speakup/selection.c | 2 +- drivers/accessibility/speakup/speakup.h | 10 +-- drivers/accessibility/speakup/speakup_dtlk.h | 2 +- drivers/accessibility/speakup/spk_types.h | 2 +- drivers/accessibility/speakup/synth.c | 2 +- 8 files changed, 53 insertions(+), 53 deletions(-) diff --git a/drivers/accessibility/speakup/keyhelp.c b/drivers/accessibility/speakup/keyhelp.c index 822ceac83068..9c6e488adc2a 100644 --- a/drivers/accessibility/speakup/keyhelp.c +++ b/drivers/accessibility/speakup/keyhelp.c @@ -14,8 +14,8 @@ #define MAXFUNCS 130 #define MAXKEYS 256 static const int num_key_names = MSG_KEYNAMES_END - MSG_KEYNAMES_START + 1; -static u_short key_offsets[MAXFUNCS], key_data[MAXKEYS]; -static u_short masks[] = { 32, 16, 8, 4, 2, 1 }; +static u16 key_offsets[MAXFUNCS], key_data[MAXKEYS]; +static u16 masks[] = { 32, 16, 8, 4, 2, 1 }; static short letter_offsets[26] = { -1, -1, -1, -1, -1, -1, -1, -1, @@ -49,7 +49,7 @@ static int cur_item, nstates; static void build_key_data(void) { u_char *kp, counters[MAXFUNCS], ch, ch1; - u_short *p_key, key; + u16 *p_key, key; int i, offset = 1; nstates = (int)(state_tbl[-1]); @@ -129,12 +129,12 @@ static int help_init(void) return 0; } -int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key) +int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u16 key) { int i, n; char *name; u_char func, *kp; - u_short *p_keys, val; + u16 *p_keys, val; if (letter_offsets[0] == -1) help_init(); diff --git a/drivers/accessibility/speakup/kobjects.c b/drivers/accessibility/speakup/kobjects.c index 0dfdb6608e02..3c3b1a4efbfe 100644 --- a/drivers/accessibility/speakup/kobjects.c +++ b/drivers/accessibility/speakup/kobjects.c @@ -120,7 +120,7 @@ static ssize_t chars_chartab_store(struct kobject *kobj, ssize_t retval = count; unsigned long flags; unsigned long index = 0; - int charclass = 0; + u16 charclass = 0; int received = 0; int used = 0; int rejected = 0; @@ -461,7 +461,7 @@ static ssize_t punc_show(struct kobject *kobj, struct kobj_attribute *attr, struct st_var_header *p_header; struct punc_var_t *var; struct st_bits_data *pb; - short mask; + u16 mask; unsigned long flags; p_header = spk_var_header_by_name(attr->attr.name); diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c index e68cf1d83787..4e52607fa2be 100644 --- a/drivers/accessibility/speakup/main.c +++ b/drivers/accessibility/speakup/main.c @@ -63,7 +63,7 @@ int spk_attrib_bleep, spk_bleeps, spk_bleep_time = 10; int spk_no_intr, spk_spell_delay; int spk_key_echo, spk_say_word_ctl; int spk_say_ctrl, spk_bell_pos; -short spk_punc_mask; +u16 spk_punc_mask; int spk_punc_level, spk_reading_punc; int spk_cur_phonetic; char spk_str_caps_start[MAXVARLEN + 1] = "\0"; @@ -183,13 +183,13 @@ char *spk_default_chars[256] = { /* 251 */ "u circumflex", "u oomlaut", "y acute", "thorn", "y oomlaut" }; -/* array of 256 u_short (one for each character) +/* array of 256 u16 (one for each character) * initialized to default_chartab and user selectable via * /sys/module/speakup/parameters/chartab */ -u_short spk_chartab[256]; +u16 spk_chartab[256]; -static u_short default_chartab[256] = { +static u16 default_chartab[256] = { B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 0-7 */ B_CTL, B_CTL, A_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 8-15 */ B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /*16-23 */ @@ -267,10 +267,10 @@ static void speakup_date(struct vc_data *vc) spk_y = spk_cy = vc->state.y; spk_pos = spk_cp = vc->vc_pos; spk_old_attr = spk_attr; - spk_attr = get_attributes(vc, (u_short *)spk_pos); + spk_attr = get_attributes(vc, (u16 *)spk_pos); } -static void bleep(u_short val) +static void bleep(u16 val) { static const short vals[] = { 350, 370, 392, 414, 440, 466, 491, 523, 554, 587, 619, 659 @@ -346,14 +346,14 @@ static void speakup_cut(struct vc_data *vc) if (!mark_cut_flag) { mark_cut_flag = 1; - spk_xs = (u_short)spk_x; - spk_ys = (u_short)spk_y; + spk_xs = (u16)spk_x; + spk_ys = (u16)spk_y; spk_sel_cons = vc; synth_printf("%s\n", spk_msg_get(MSG_MARK)); return; } - spk_xe = (u_short)spk_x; - spk_ye = (u_short)spk_y; + spk_xe = (u16)spk_x; + spk_ye = (u16)spk_y; mark_cut_flag = 0; synth_printf("%s\n", spk_msg_get(MSG_CUT)); @@ -482,7 +482,7 @@ static void say_char(struct vc_data *vc) u16 ch; spk_old_attr = spk_attr; - ch = get_char(vc, (u_short *)spk_pos, &spk_attr); + ch = get_char(vc, (u16 *)spk_pos, &spk_attr); if (spk_attr != spk_old_attr) { if (spk_attrib_bleep & 1) bleep(spk_y); @@ -497,7 +497,7 @@ static void say_phonetic_char(struct vc_data *vc) u16 ch; spk_old_attr = spk_attr; - ch = get_char(vc, (u_short *)spk_pos, &spk_attr); + ch = get_char(vc, (u16 *)spk_pos, &spk_attr); if (ch <= 0x7f && isalpha(ch)) { ch &= 0x1f; synth_printf("%s\n", phonetic[--ch]); @@ -549,7 +549,7 @@ static u_long get_word(struct vc_data *vc) u_char temp; spk_old_attr = spk_attr; - ch = get_char(vc, (u_short *)tmp_pos, &temp); + ch = get_char(vc, (u16 *)tmp_pos, &temp); /* decided to take out the sayword if on a space (mis-information */ if (spk_say_word_ctl && ch == SPACE) { @@ -558,26 +558,26 @@ static u_long get_word(struct vc_data *vc) return 0; } else if (tmpx < vc->vc_cols - 2 && (ch == SPACE || ch == 0 || (ch < 0x100 && IS_WDLM(ch))) && - get_char(vc, (u_short *)tmp_pos + 1, &temp) > SPACE) { + get_char(vc, (u16 *)tmp_pos + 1, &temp) > SPACE) { tmp_pos += 2; tmpx++; } else { while (tmpx > 0) { - ch = get_char(vc, (u_short *)tmp_pos - 1, &temp); + ch = get_char(vc, (u16 *)tmp_pos - 1, &temp); if ((ch == SPACE || ch == 0 || (ch < 0x100 && IS_WDLM(ch))) && - get_char(vc, (u_short *)tmp_pos, &temp) > SPACE) + get_char(vc, (u16 *)tmp_pos, &temp) > SPACE) break; tmp_pos -= 2; tmpx--; } } - attr_ch = get_char(vc, (u_short *)tmp_pos, &spk_attr); + attr_ch = get_char(vc, (u16 *)tmp_pos, &spk_attr); buf[cnt++] = attr_ch; while (tmpx < vc->vc_cols - 1 && cnt < ARRAY_SIZE(buf) - 1) { tmp_pos += 2; tmpx++; - ch = get_char(vc, (u_short *)tmp_pos, &temp); + ch = get_char(vc, (u16 *)tmp_pos, &temp); if (ch == SPACE || ch == 0 || (buf[cnt - 1] < 0x100 && IS_WDLM(buf[cnt - 1]) && ch > SPACE)) @@ -591,7 +591,7 @@ static u_long get_word(struct vc_data *vc) static void say_word(struct vc_data *vc) { u_long cnt = get_word(vc); - u_short saved_punc_mask = spk_punc_mask; + u16 saved_punc_mask = spk_punc_mask; if (cnt == 0) return; @@ -606,7 +606,7 @@ static void say_prev_word(struct vc_data *vc) u_char temp; u16 ch; enum edge edge_said = edge_none; - u_short last_state = 0, state = 0; + u16 last_state = 0, state = 0; spk_parked |= 0x01; @@ -635,7 +635,7 @@ static void say_prev_word(struct vc_data *vc) spk_x--; } spk_pos -= 2; - ch = get_char(vc, (u_short *)spk_pos, &temp); + ch = get_char(vc, (u16 *)spk_pos, &temp); if (ch == SPACE || ch == 0) state = 0; else if (ch < 0x100 && IS_WDLM(ch)) @@ -661,7 +661,7 @@ static void say_next_word(struct vc_data *vc) u_char temp; u16 ch; enum edge edge_said = edge_none; - u_short last_state = 2, state = 0; + u16 last_state = 2, state = 0; spk_parked |= 0x01; if (spk_x == vc->vc_cols - 1 && spk_y == vc->vc_rows - 1) { @@ -669,7 +669,7 @@ static void say_next_word(struct vc_data *vc) return; } while (1) { - ch = get_char(vc, (u_short *)spk_pos, &temp); + ch = get_char(vc, (u16 *)spk_pos, &temp); if (ch == SPACE || ch == 0) state = 0; else if (ch < 0x100 && IS_WDLM(ch)) @@ -755,9 +755,9 @@ static int get_line(struct vc_data *vc) u_char tmp2; spk_old_attr = spk_attr; - spk_attr = get_attributes(vc, (u_short *)spk_pos); + spk_attr = get_attributes(vc, (u16 *)spk_pos); for (i = 0; i < vc->vc_cols; i++) { - buf[i] = get_char(vc, (u_short *)tmp, &tmp2); + buf[i] = get_char(vc, (u16 *)tmp, &tmp2); tmp += 2; } for (--i; i >= 0; i--) @@ -770,7 +770,7 @@ static void say_line(struct vc_data *vc) { int i = get_line(vc); u16 *cp; - u_short saved_punc_mask = spk_punc_mask; + u16 saved_punc_mask = spk_punc_mask; if (i == 0) { synth_printf("%s\n", spk_msg_get(MSG_BLANK)); @@ -817,12 +817,12 @@ static int say_from_to(struct vc_data *vc, u_long from, u_long to, { int i = 0; u_char tmp; - u_short saved_punc_mask = spk_punc_mask; + u16 saved_punc_mask = spk_punc_mask; spk_old_attr = spk_attr; - spk_attr = get_attributes(vc, (u_short *)from); + spk_attr = get_attributes(vc, (u16 *)from); while (from < to) { - buf[i++] = get_char(vc, (u_short *)from, &tmp); + buf[i++] = get_char(vc, (u16 *)from, &tmp); from += 2; if (i >= vc->vc_size_row) break; @@ -895,10 +895,10 @@ static int get_sentence_buf(struct vc_data *vc, int read_punc) sentmarks[bn][0] = &sentbuf[bn][0]; i = 0; spk_old_attr = spk_attr; - spk_attr = get_attributes(vc, (u_short *)start); + spk_attr = get_attributes(vc, (u16 *)start); while (start < end) { - sentbuf[bn][i] = get_char(vc, (u_short *)start, &tmp); + sentbuf[bn][i] = get_char(vc, (u16 *)start, &tmp); if (i > 0) { if (sentbuf[bn][i] == SPACE && sentbuf[bn][i - 1] == '.' && @@ -1047,7 +1047,7 @@ static void say_position(struct vc_data *vc) static void say_char_num(struct vc_data *vc) { u_char tmp; - u16 ch = get_char(vc, (u_short *)spk_pos, &tmp); + u16 ch = get_char(vc, (u16 *)spk_pos, &tmp); synth_printf(spk_msg_get(MSG_CHAR_INFO), ch, ch); } @@ -1080,7 +1080,7 @@ static void spkup_write(const u16 *in_buf, int count) { static int rep_count; static u16 ch = '\0', old_ch = '\0'; - static u_short char_type, last_type; + static u16 char_type, last_type; int in_count = count; spk_keydown = 0; @@ -1325,9 +1325,9 @@ void spk_reset_default_chartab(void) static const struct st_bits_data *pb_edit; -static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u_short key) +static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u16 key) { - short mask = pb_edit->mask, ch_type = spk_chartab[ch]; + u16 mask = pb_edit->mask, ch_type = spk_chartab[ch]; if (type != KT_LATIN || (ch_type & B_NUM) || ch < SPACE) return -1; @@ -1947,7 +1947,7 @@ static void speakup_bits(struct vc_data *vc) spk_special_handler = edit_bits; } -static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key) +static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u16 key) { static u_char goto_buf[8]; static int num; @@ -2105,7 +2105,7 @@ static void do_spkup(struct vc_data *vc, u_char value) static const char *pad_chars = "0123456789+-*/\015,.?()"; static int -speakup_key(struct vc_data *vc, int shift_state, int keycode, u_short keysym, +speakup_key(struct vc_data *vc, int shift_state, int keycode, u16 keysym, int up_flag) { unsigned long flags; diff --git a/drivers/accessibility/speakup/selection.c b/drivers/accessibility/speakup/selection.c index 7df7afad5ab4..1713ce4e0ba5 100644 --- a/drivers/accessibility/speakup/selection.c +++ b/drivers/accessibility/speakup/selection.c @@ -13,7 +13,7 @@ #include "speakup.h" -unsigned short spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ +u16 spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ struct vc_data *spk_sel_cons; struct speakup_selection_work { diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibility/speakup/speakup.h index 54f1226ea061..984a729fd82d 100644 --- a/drivers/accessibility/speakup/speakup.h +++ b/drivers/accessibility/speakup/speakup.h @@ -62,7 +62,7 @@ int spk_set_num_var(int val, struct st_var_header *var, int how); int spk_set_string_var(const char *page, struct st_var_header *var, int len); int spk_set_mask_bits(const char *input, const int which, const int how); extern special_func spk_special_handler; -int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key); +int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u16 key); int synth_init(char *name); void synth_release(void); @@ -82,7 +82,7 @@ void synth_writeu(const char *buf, size_t count); int synth_supports_indexing(void); extern struct vc_data *spk_sel_cons; -extern unsigned short spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ +extern u16 spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ extern wait_queue_head_t speakup_event; extern struct kobject *speakup_kobj; @@ -95,20 +95,20 @@ extern struct st_spk_t *speakup_console[]; extern struct spk_synth *synth; extern char spk_pitch_buff[]; extern u_char *spk_our_keys[]; -extern short spk_punc_masks[]; +extern u16 spk_punc_masks[]; extern char spk_str_caps_start[], spk_str_caps_stop[], spk_str_pause[]; extern bool spk_paused; extern const struct st_bits_data spk_punc_info[]; extern u_char spk_key_buf[600]; extern char *spk_characters[]; extern char *spk_default_chars[]; -extern u_short spk_chartab[]; +extern u16 spk_chartab[]; extern int spk_no_intr, spk_say_ctrl, spk_say_word_ctl, spk_punc_level; extern int spk_reading_punc, spk_attrib_bleep, spk_bleeps; extern int spk_bleep_time, spk_bell_pos; extern int spk_spell_delay, spk_key_echo; extern int spk_cur_phonetic; -extern short spk_punc_mask; +extern u16 spk_punc_mask; extern short spk_pitch_shift, synth_flags; extern bool spk_quiet_boot; extern char *synth_name; diff --git a/drivers/accessibility/speakup/speakup_dtlk.h b/drivers/accessibility/speakup/speakup_dtlk.h index 9c378b58066e..4190c7badeaf 100644 --- a/drivers/accessibility/speakup/speakup_dtlk.h +++ b/drivers/accessibility/speakup/speakup_dtlk.h @@ -39,7 +39,7 @@ /* data returned by Interrogate command */ struct synth_settings { - u_short serial_number; /* 0-7Fh:0-7Fh */ + u16 serial_number; /* 0-7Fh:0-7Fh */ u_char rom_version[24]; /* null terminated string */ u_char mode; /* 0=Character; 1=Phoneme; 2=Text */ u_char punc_level; /* nB; 0-7 */ diff --git a/drivers/accessibility/speakup/spk_types.h b/drivers/accessibility/speakup/spk_types.h index 08011518a28a..a5762330e249 100644 --- a/drivers/accessibility/speakup/spk_types.h +++ b/drivers/accessibility/speakup/spk_types.h @@ -53,7 +53,7 @@ enum var_id_t { }; typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch, - u_short key); + u16 key); #define COLOR_BUFFER_SIZE 160 diff --git a/drivers/accessibility/speakup/synth.c b/drivers/accessibility/speakup/synth.c index d8addbf3ad0d..d1ec1a7eb160 100644 --- a/drivers/accessibility/speakup/synth.c +++ b/drivers/accessibility/speakup/synth.c @@ -574,4 +574,4 @@ struct spk_synth *synth_current(void) } EXPORT_SYMBOL_GPL(synth_current); -short spk_punc_masks[] = { 0, SOME, MOST, PUNC, PUNC | B_SYM }; +u16 spk_punc_masks[] = { 0, SOME, MOST, PUNC, PUNC | B_SYM }; -- 2.43.0 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] speakup: Standardize character attribute types to u16 2025-06-05 5:08 ` [PATCH v2] speakup: Standardize character attribute types to u16 Jagadeesh Yalapalli @ 2025-06-07 17:15 ` Samuel Thibault 0 siblings, 0 replies; 4+ messages in thread From: Samuel Thibault @ 2025-06-07 17:15 UTC (permalink / raw) To: Jagadeesh Yalapalli Cc: chris, jagadeesh.yalapalli, kirk, linux-kernel, mingo, speakup, tglx, w.d.hubbs Jagadeesh Yalapalli, le jeu. 05 juin 2025 05:08:24 +0000, a ecrit: > From: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> > > This change replaces non-portable `u_short` types with standardized `u16` > throughout the speakup subsystem to ensure: > 1. Consistent 16-bit width across all architectures. > 2. Improved code portability and readability. > 3. Elimination of platform-dependent type sizes. > 4. Safe bitwise operations without sign-extension risks. Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Thanks! > Signed-off-by: Jagadeesh Yalapalli <jagadeesh.yalapalli@einfochips.com> > --- > drivers/accessibility/speakup/keyhelp.c | 10 +-- > drivers/accessibility/speakup/kobjects.c | 4 +- > drivers/accessibility/speakup/main.c | 74 ++++++++++---------- > drivers/accessibility/speakup/selection.c | 2 +- > drivers/accessibility/speakup/speakup.h | 10 +-- > drivers/accessibility/speakup/speakup_dtlk.h | 2 +- > drivers/accessibility/speakup/spk_types.h | 2 +- > drivers/accessibility/speakup/synth.c | 2 +- > 8 files changed, 53 insertions(+), 53 deletions(-) > > diff --git a/drivers/accessibility/speakup/keyhelp.c b/drivers/accessibility/speakup/keyhelp.c > index 822ceac83068..9c6e488adc2a 100644 > --- a/drivers/accessibility/speakup/keyhelp.c > +++ b/drivers/accessibility/speakup/keyhelp.c > @@ -14,8 +14,8 @@ > #define MAXFUNCS 130 > #define MAXKEYS 256 > static const int num_key_names = MSG_KEYNAMES_END - MSG_KEYNAMES_START + 1; > -static u_short key_offsets[MAXFUNCS], key_data[MAXKEYS]; > -static u_short masks[] = { 32, 16, 8, 4, 2, 1 }; > +static u16 key_offsets[MAXFUNCS], key_data[MAXKEYS]; > +static u16 masks[] = { 32, 16, 8, 4, 2, 1 }; > > static short letter_offsets[26] = { > -1, -1, -1, -1, -1, -1, -1, -1, > @@ -49,7 +49,7 @@ static int cur_item, nstates; > static void build_key_data(void) > { > u_char *kp, counters[MAXFUNCS], ch, ch1; > - u_short *p_key, key; > + u16 *p_key, key; > int i, offset = 1; > > nstates = (int)(state_tbl[-1]); > @@ -129,12 +129,12 @@ static int help_init(void) > return 0; > } > > -int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key) > +int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u16 key) > { > int i, n; > char *name; > u_char func, *kp; > - u_short *p_keys, val; > + u16 *p_keys, val; > > if (letter_offsets[0] == -1) > help_init(); > diff --git a/drivers/accessibility/speakup/kobjects.c b/drivers/accessibility/speakup/kobjects.c > index 0dfdb6608e02..3c3b1a4efbfe 100644 > --- a/drivers/accessibility/speakup/kobjects.c > +++ b/drivers/accessibility/speakup/kobjects.c > @@ -120,7 +120,7 @@ static ssize_t chars_chartab_store(struct kobject *kobj, > ssize_t retval = count; > unsigned long flags; > unsigned long index = 0; > - int charclass = 0; > + u16 charclass = 0; > int received = 0; > int used = 0; > int rejected = 0; > @@ -461,7 +461,7 @@ static ssize_t punc_show(struct kobject *kobj, struct kobj_attribute *attr, > struct st_var_header *p_header; > struct punc_var_t *var; > struct st_bits_data *pb; > - short mask; > + u16 mask; > unsigned long flags; > > p_header = spk_var_header_by_name(attr->attr.name); > diff --git a/drivers/accessibility/speakup/main.c b/drivers/accessibility/speakup/main.c > index e68cf1d83787..4e52607fa2be 100644 > --- a/drivers/accessibility/speakup/main.c > +++ b/drivers/accessibility/speakup/main.c > @@ -63,7 +63,7 @@ int spk_attrib_bleep, spk_bleeps, spk_bleep_time = 10; > int spk_no_intr, spk_spell_delay; > int spk_key_echo, spk_say_word_ctl; > int spk_say_ctrl, spk_bell_pos; > -short spk_punc_mask; > +u16 spk_punc_mask; > int spk_punc_level, spk_reading_punc; > int spk_cur_phonetic; > char spk_str_caps_start[MAXVARLEN + 1] = "\0"; > @@ -183,13 +183,13 @@ char *spk_default_chars[256] = { > /* 251 */ "u circumflex", "u oomlaut", "y acute", "thorn", "y oomlaut" > }; > > -/* array of 256 u_short (one for each character) > +/* array of 256 u16 (one for each character) > * initialized to default_chartab and user selectable via > * /sys/module/speakup/parameters/chartab > */ > -u_short spk_chartab[256]; > +u16 spk_chartab[256]; > > -static u_short default_chartab[256] = { > +static u16 default_chartab[256] = { > B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 0-7 */ > B_CTL, B_CTL, A_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /* 8-15 */ > B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, B_CTL, /*16-23 */ > @@ -267,10 +267,10 @@ static void speakup_date(struct vc_data *vc) > spk_y = spk_cy = vc->state.y; > spk_pos = spk_cp = vc->vc_pos; > spk_old_attr = spk_attr; > - spk_attr = get_attributes(vc, (u_short *)spk_pos); > + spk_attr = get_attributes(vc, (u16 *)spk_pos); > } > > -static void bleep(u_short val) > +static void bleep(u16 val) > { > static const short vals[] = { > 350, 370, 392, 414, 440, 466, 491, 523, 554, 587, 619, 659 > @@ -346,14 +346,14 @@ static void speakup_cut(struct vc_data *vc) > > if (!mark_cut_flag) { > mark_cut_flag = 1; > - spk_xs = (u_short)spk_x; > - spk_ys = (u_short)spk_y; > + spk_xs = (u16)spk_x; > + spk_ys = (u16)spk_y; > spk_sel_cons = vc; > synth_printf("%s\n", spk_msg_get(MSG_MARK)); > return; > } > - spk_xe = (u_short)spk_x; > - spk_ye = (u_short)spk_y; > + spk_xe = (u16)spk_x; > + spk_ye = (u16)spk_y; > mark_cut_flag = 0; > synth_printf("%s\n", spk_msg_get(MSG_CUT)); > > @@ -482,7 +482,7 @@ static void say_char(struct vc_data *vc) > u16 ch; > > spk_old_attr = spk_attr; > - ch = get_char(vc, (u_short *)spk_pos, &spk_attr); > + ch = get_char(vc, (u16 *)spk_pos, &spk_attr); > if (spk_attr != spk_old_attr) { > if (spk_attrib_bleep & 1) > bleep(spk_y); > @@ -497,7 +497,7 @@ static void say_phonetic_char(struct vc_data *vc) > u16 ch; > > spk_old_attr = spk_attr; > - ch = get_char(vc, (u_short *)spk_pos, &spk_attr); > + ch = get_char(vc, (u16 *)spk_pos, &spk_attr); > if (ch <= 0x7f && isalpha(ch)) { > ch &= 0x1f; > synth_printf("%s\n", phonetic[--ch]); > @@ -549,7 +549,7 @@ static u_long get_word(struct vc_data *vc) > u_char temp; > > spk_old_attr = spk_attr; > - ch = get_char(vc, (u_short *)tmp_pos, &temp); > + ch = get_char(vc, (u16 *)tmp_pos, &temp); > > /* decided to take out the sayword if on a space (mis-information */ > if (spk_say_word_ctl && ch == SPACE) { > @@ -558,26 +558,26 @@ static u_long get_word(struct vc_data *vc) > return 0; > } else if (tmpx < vc->vc_cols - 2 && > (ch == SPACE || ch == 0 || (ch < 0x100 && IS_WDLM(ch))) && > - get_char(vc, (u_short *)tmp_pos + 1, &temp) > SPACE) { > + get_char(vc, (u16 *)tmp_pos + 1, &temp) > SPACE) { > tmp_pos += 2; > tmpx++; > } else { > while (tmpx > 0) { > - ch = get_char(vc, (u_short *)tmp_pos - 1, &temp); > + ch = get_char(vc, (u16 *)tmp_pos - 1, &temp); > if ((ch == SPACE || ch == 0 || > (ch < 0x100 && IS_WDLM(ch))) && > - get_char(vc, (u_short *)tmp_pos, &temp) > SPACE) > + get_char(vc, (u16 *)tmp_pos, &temp) > SPACE) > break; > tmp_pos -= 2; > tmpx--; > } > } > - attr_ch = get_char(vc, (u_short *)tmp_pos, &spk_attr); > + attr_ch = get_char(vc, (u16 *)tmp_pos, &spk_attr); > buf[cnt++] = attr_ch; > while (tmpx < vc->vc_cols - 1 && cnt < ARRAY_SIZE(buf) - 1) { > tmp_pos += 2; > tmpx++; > - ch = get_char(vc, (u_short *)tmp_pos, &temp); > + ch = get_char(vc, (u16 *)tmp_pos, &temp); > if (ch == SPACE || ch == 0 || > (buf[cnt - 1] < 0x100 && IS_WDLM(buf[cnt - 1]) && > ch > SPACE)) > @@ -591,7 +591,7 @@ static u_long get_word(struct vc_data *vc) > static void say_word(struct vc_data *vc) > { > u_long cnt = get_word(vc); > - u_short saved_punc_mask = spk_punc_mask; > + u16 saved_punc_mask = spk_punc_mask; > > if (cnt == 0) > return; > @@ -606,7 +606,7 @@ static void say_prev_word(struct vc_data *vc) > u_char temp; > u16 ch; > enum edge edge_said = edge_none; > - u_short last_state = 0, state = 0; > + u16 last_state = 0, state = 0; > > spk_parked |= 0x01; > > @@ -635,7 +635,7 @@ static void say_prev_word(struct vc_data *vc) > spk_x--; > } > spk_pos -= 2; > - ch = get_char(vc, (u_short *)spk_pos, &temp); > + ch = get_char(vc, (u16 *)spk_pos, &temp); > if (ch == SPACE || ch == 0) > state = 0; > else if (ch < 0x100 && IS_WDLM(ch)) > @@ -661,7 +661,7 @@ static void say_next_word(struct vc_data *vc) > u_char temp; > u16 ch; > enum edge edge_said = edge_none; > - u_short last_state = 2, state = 0; > + u16 last_state = 2, state = 0; > > spk_parked |= 0x01; > if (spk_x == vc->vc_cols - 1 && spk_y == vc->vc_rows - 1) { > @@ -669,7 +669,7 @@ static void say_next_word(struct vc_data *vc) > return; > } > while (1) { > - ch = get_char(vc, (u_short *)spk_pos, &temp); > + ch = get_char(vc, (u16 *)spk_pos, &temp); > if (ch == SPACE || ch == 0) > state = 0; > else if (ch < 0x100 && IS_WDLM(ch)) > @@ -755,9 +755,9 @@ static int get_line(struct vc_data *vc) > u_char tmp2; > > spk_old_attr = spk_attr; > - spk_attr = get_attributes(vc, (u_short *)spk_pos); > + spk_attr = get_attributes(vc, (u16 *)spk_pos); > for (i = 0; i < vc->vc_cols; i++) { > - buf[i] = get_char(vc, (u_short *)tmp, &tmp2); > + buf[i] = get_char(vc, (u16 *)tmp, &tmp2); > tmp += 2; > } > for (--i; i >= 0; i--) > @@ -770,7 +770,7 @@ static void say_line(struct vc_data *vc) > { > int i = get_line(vc); > u16 *cp; > - u_short saved_punc_mask = spk_punc_mask; > + u16 saved_punc_mask = spk_punc_mask; > > if (i == 0) { > synth_printf("%s\n", spk_msg_get(MSG_BLANK)); > @@ -817,12 +817,12 @@ static int say_from_to(struct vc_data *vc, u_long from, u_long to, > { > int i = 0; > u_char tmp; > - u_short saved_punc_mask = spk_punc_mask; > + u16 saved_punc_mask = spk_punc_mask; > > spk_old_attr = spk_attr; > - spk_attr = get_attributes(vc, (u_short *)from); > + spk_attr = get_attributes(vc, (u16 *)from); > while (from < to) { > - buf[i++] = get_char(vc, (u_short *)from, &tmp); > + buf[i++] = get_char(vc, (u16 *)from, &tmp); > from += 2; > if (i >= vc->vc_size_row) > break; > @@ -895,10 +895,10 @@ static int get_sentence_buf(struct vc_data *vc, int read_punc) > sentmarks[bn][0] = &sentbuf[bn][0]; > i = 0; > spk_old_attr = spk_attr; > - spk_attr = get_attributes(vc, (u_short *)start); > + spk_attr = get_attributes(vc, (u16 *)start); > > while (start < end) { > - sentbuf[bn][i] = get_char(vc, (u_short *)start, &tmp); > + sentbuf[bn][i] = get_char(vc, (u16 *)start, &tmp); > if (i > 0) { > if (sentbuf[bn][i] == SPACE && > sentbuf[bn][i - 1] == '.' && > @@ -1047,7 +1047,7 @@ static void say_position(struct vc_data *vc) > static void say_char_num(struct vc_data *vc) > { > u_char tmp; > - u16 ch = get_char(vc, (u_short *)spk_pos, &tmp); > + u16 ch = get_char(vc, (u16 *)spk_pos, &tmp); > > synth_printf(spk_msg_get(MSG_CHAR_INFO), ch, ch); > } > @@ -1080,7 +1080,7 @@ static void spkup_write(const u16 *in_buf, int count) > { > static int rep_count; > static u16 ch = '\0', old_ch = '\0'; > - static u_short char_type, last_type; > + static u16 char_type, last_type; > int in_count = count; > > spk_keydown = 0; > @@ -1325,9 +1325,9 @@ void spk_reset_default_chartab(void) > > static const struct st_bits_data *pb_edit; > > -static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u_short key) > +static int edit_bits(struct vc_data *vc, u_char type, u_char ch, u16 key) > { > - short mask = pb_edit->mask, ch_type = spk_chartab[ch]; > + u16 mask = pb_edit->mask, ch_type = spk_chartab[ch]; > > if (type != KT_LATIN || (ch_type & B_NUM) || ch < SPACE) > return -1; > @@ -1947,7 +1947,7 @@ static void speakup_bits(struct vc_data *vc) > spk_special_handler = edit_bits; > } > > -static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key) > +static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u16 key) > { > static u_char goto_buf[8]; > static int num; > @@ -2105,7 +2105,7 @@ static void do_spkup(struct vc_data *vc, u_char value) > static const char *pad_chars = "0123456789+-*/\015,.?()"; > > static int > -speakup_key(struct vc_data *vc, int shift_state, int keycode, u_short keysym, > +speakup_key(struct vc_data *vc, int shift_state, int keycode, u16 keysym, > int up_flag) > { > unsigned long flags; > diff --git a/drivers/accessibility/speakup/selection.c b/drivers/accessibility/speakup/selection.c > index 7df7afad5ab4..1713ce4e0ba5 100644 > --- a/drivers/accessibility/speakup/selection.c > +++ b/drivers/accessibility/speakup/selection.c > @@ -13,7 +13,7 @@ > > #include "speakup.h" > > -unsigned short spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ > +u16 spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ > struct vc_data *spk_sel_cons; > > struct speakup_selection_work { > diff --git a/drivers/accessibility/speakup/speakup.h b/drivers/accessibility/speakup/speakup.h > index 54f1226ea061..984a729fd82d 100644 > --- a/drivers/accessibility/speakup/speakup.h > +++ b/drivers/accessibility/speakup/speakup.h > @@ -62,7 +62,7 @@ int spk_set_num_var(int val, struct st_var_header *var, int how); > int spk_set_string_var(const char *page, struct st_var_header *var, int len); > int spk_set_mask_bits(const char *input, const int which, const int how); > extern special_func spk_special_handler; > -int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u_short key); > +int spk_handle_help(struct vc_data *vc, u_char type, u_char ch, u16 key); > int synth_init(char *name); > void synth_release(void); > > @@ -82,7 +82,7 @@ void synth_writeu(const char *buf, size_t count); > int synth_supports_indexing(void); > > extern struct vc_data *spk_sel_cons; > -extern unsigned short spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ > +extern u16 spk_xs, spk_ys, spk_xe, spk_ye; /* our region points */ > > extern wait_queue_head_t speakup_event; > extern struct kobject *speakup_kobj; > @@ -95,20 +95,20 @@ extern struct st_spk_t *speakup_console[]; > extern struct spk_synth *synth; > extern char spk_pitch_buff[]; > extern u_char *spk_our_keys[]; > -extern short spk_punc_masks[]; > +extern u16 spk_punc_masks[]; > extern char spk_str_caps_start[], spk_str_caps_stop[], spk_str_pause[]; > extern bool spk_paused; > extern const struct st_bits_data spk_punc_info[]; > extern u_char spk_key_buf[600]; > extern char *spk_characters[]; > extern char *spk_default_chars[]; > -extern u_short spk_chartab[]; > +extern u16 spk_chartab[]; > extern int spk_no_intr, spk_say_ctrl, spk_say_word_ctl, spk_punc_level; > extern int spk_reading_punc, spk_attrib_bleep, spk_bleeps; > extern int spk_bleep_time, spk_bell_pos; > extern int spk_spell_delay, spk_key_echo; > extern int spk_cur_phonetic; > -extern short spk_punc_mask; > +extern u16 spk_punc_mask; > extern short spk_pitch_shift, synth_flags; > extern bool spk_quiet_boot; > extern char *synth_name; > diff --git a/drivers/accessibility/speakup/speakup_dtlk.h b/drivers/accessibility/speakup/speakup_dtlk.h > index 9c378b58066e..4190c7badeaf 100644 > --- a/drivers/accessibility/speakup/speakup_dtlk.h > +++ b/drivers/accessibility/speakup/speakup_dtlk.h > @@ -39,7 +39,7 @@ > > /* data returned by Interrogate command */ > struct synth_settings { > - u_short serial_number; /* 0-7Fh:0-7Fh */ > + u16 serial_number; /* 0-7Fh:0-7Fh */ > u_char rom_version[24]; /* null terminated string */ > u_char mode; /* 0=Character; 1=Phoneme; 2=Text */ > u_char punc_level; /* nB; 0-7 */ > diff --git a/drivers/accessibility/speakup/spk_types.h b/drivers/accessibility/speakup/spk_types.h > index 08011518a28a..a5762330e249 100644 > --- a/drivers/accessibility/speakup/spk_types.h > +++ b/drivers/accessibility/speakup/spk_types.h > @@ -53,7 +53,7 @@ enum var_id_t { > }; > > typedef int (*special_func)(struct vc_data *vc, u_char type, u_char ch, > - u_short key); > + u16 key); > > #define COLOR_BUFFER_SIZE 160 > > diff --git a/drivers/accessibility/speakup/synth.c b/drivers/accessibility/speakup/synth.c > index d8addbf3ad0d..d1ec1a7eb160 100644 > --- a/drivers/accessibility/speakup/synth.c > +++ b/drivers/accessibility/speakup/synth.c > @@ -574,4 +574,4 @@ struct spk_synth *synth_current(void) > } > EXPORT_SYMBOL_GPL(synth_current); > > -short spk_punc_masks[] = { 0, SOME, MOST, PUNC, PUNC | B_SYM }; > +u16 spk_punc_masks[] = { 0, SOME, MOST, PUNC, PUNC | B_SYM }; > -- > 2.43.0 > -- Samuel What's this script do? unzip ; touch ; finger ; mount ; gasp ; yes ; umount ; sleep Hint for the answer: not everything is computer-oriented. Sometimes you're in a sleeping bag, camping out. (Contributed by Frans van der Zande.) ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-06-07 17:15 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-06-04 13:58 [PATCH v1] speakup: Replace u_short with u16 for spk_chartab Jagadeesh Yalapalli 2025-06-04 14:58 ` Samuel Thibault 2025-06-05 5:08 ` [PATCH v2] speakup: Standardize character attribute types to u16 Jagadeesh Yalapalli 2025-06-07 17:15 ` Samuel Thibault
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.