if (!(flags & OMAP_CRYPTO_FORCE_SINGLE_ENTRY))
sg_init_table(new_sg, 1);
sg_set_buf(new_sg, buf, new_len);
*sg = new_sg;
return 0;
}
staticint omap_crypto_check_sg(struct scatterlist *sg, int total, int bs,
u16 flags)
{ int len = 0; int num_sg = 0;
if (!IS_ALIGNED(total, bs)) return OMAP_CRYPTO_NOT_ALIGNED;
while (sg) {
num_sg++;
if (!IS_ALIGNED(sg->offset, 4)) return OMAP_CRYPTO_NOT_ALIGNED; if (!IS_ALIGNED(sg->length, bs)) return OMAP_CRYPTO_NOT_ALIGNED; #ifdef CONFIG_ZONE_DMA if (page_zonenum(sg_page(sg)) != ZONE_DMA) return OMAP_CRYPTO_NOT_ALIGNED; #endif
len += sg->length;
sg = sg_next(sg);
if (len >= total) break;
}
if ((flags & OMAP_CRYPTO_FORCE_SINGLE_ENTRY) && num_sg > 1) return OMAP_CRYPTO_NOT_ALIGNED;
if (len != total) return OMAP_CRYPTO_BAD_DATA_LENGTH;
return 0;
}
int omap_crypto_align_sg(struct scatterlist **sg, int total, int bs, struct scatterlist *new_sg, u16 flags,
u8 flags_shift, unsignedlong *dd_flags)
{ int ret;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.